8051AD轉換的問題?? |
缺席
|
tku_telent
一般會員 發表:23 回覆:21 積分:8 註冊:2004-03-05 發送簡訊給我 |
我現在要做一個8051AD電路,我把adc0804接在p0,led接在p1。
我是接可變電阻,來改變輸入adc的電壓,在讀到p0的訊號後,
做一個簡單的運算處理,使p1的led只會亮四種方式。
下面是我的程式,可是我不管怎麼調led都不會亮,
請問我程式那裡有問題~~
;===================================== ;建立暫存器 B EQU 32H ;==============設定初始位址=========== .ORG 00H LJMP MAIN .ORG 03H LJMP INDATA ;===================================== MAIN: MOV P1,#0 CLR P2.0 MOVX A,@R1 SETB P2.0 CLR TCON.0 MOV IE,#10000001B AGAIN: CLR P2.0 MOVX @R1,A SETB P2.0 SETB F0 JB F0,$ SJMP AGAIN ;===================================== INDATA: CLR P2.0 MOVX A,@R1 MOV B,#04H DIV AB MOV A,B MOV DPTR,#300H MOVC A,@A DPTR MOV P1,A SETB P2.0 CLR F0 RETI ;============300H========================= .ORG 300H .DB 00010001B .DB 00100010B .DB 01000100B .DB 10001000B .END發表人 - ㊣ 於 2005/06/15 19:05:42 |
tku_telent
一般會員 發表:23 回覆:21 積分:8 註冊:2004-03-05 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
tku_telent
一般會員 發表:23 回覆:21 積分:8 註冊:2004-03-05 發送簡訊給我 |
我把B的暫存器刪掉,led是會亮,但怎麼跟我想的不一樣,
我原本想要的是將左邊的adc輸出值,改成右邊的值,由p1輸出,
00000000 00010001
00000001 00100010
00000010 01000100
00000011 10001000
00000100 00010001
00000101 00100010
00000110 01000100
00000111 10001000
. .
. .
. .
11111111 10001000 但是我燒程式去跑時,led亮得方式變成下面這樣, 0~64 00010001
65~128 00100010
129~192 01000100
193~256 10001000
是那邊有問題??
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
tku_telent
一般會員 發表:23 回覆:21 積分:8 註冊:2004-03-05 發送簡訊給我 |
;==============設定初始位址===========
.ORG 00H
LJMP MAIN
.ORG 03H
LJMP INDATA
;==============主程式==================
MAIN:
MOV P1,#0
CLR P2.0 ;/CS=0,P2接在adc0804上
MOVX A,@R1
SETB P2.0
CLR TCON.0 ;設定外部中斷0為低準位觸發
MOV IE,#10000001B ;至能外部中斷0
AGAIN:
CLR P2.0
MOVX @R1,A
SETB P2.0
SETB F0 ;F0=1表等待中斷
JB F0,$ ;等待中斷
SJMP AGAIN
;==========中斷服務副程式===============
INDATA:
CLR P2.0
MOVX A,@R1
MOV B,#04H
DIV AB
MOV A,B
MOV DPTR,#300H
MOVC A,@A DPTR
MOV P1,A
SETB P2.0
CLR F0
RETI
;============300H=========================
.ORG 300H
.DB 00010001B
.DB 00100010B
.DB 01000100B
.DB 10001000B
.END F0為中斷旗標,F0=1表示AD轉換尚未完成,
F0=0則表示AD轉換完成。
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
tku_telent
一般會員 發表:23 回覆:21 積分:8 註冊:2004-03-05 發送簡訊給我 |
MOVX A,@R1
MOV B,#04H
DIV AB
MOV A,B
MOV DPTR,#300H
MOVC A,@A DPTR
MOV P1,A .ORG 300H
.DB 00010001B
.DB 00100010B
.DB 01000100B
.DB 10001000B ============================================ 我原本想要的是將左邊的ADC0804輸出值,改成右邊的值,由p1輸出,
00000000------- 00010001
00000001------- 00100010
00000010------- 01000100
00000011------- 10001000
00000100------- 00010001
00000101------- 00100010
00000110------- 01000100
00000111------- 10001000
. .
. .
. .
11111111------- 10001000 但是我燒程式去跑時,P1的輸出值卻變成下面這樣, 0~64 ----00010001
65~128 ----00100010
129~192 ----01000100
193~256 ----10001000
是那邊有問題??
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
tku_telent
一般會員 發表:23 回覆:21 積分:8 註冊:2004-03-05 發送簡訊給我 |
;===主程式===
:
CLR P2.0
MOVX A,@R1;A/D開始轉換
SETB P2.0
:
A/D轉換完後/INTR會輸出低電位,使8051產生外部中斷
;===中斷副程式===
:
CLR P2.0
MOVX A,@R1;讀入A/D的值
SETB P2.0
:
利用外部中斷讀入A/D的值。 我現在的問題是,我在讀入A/D的值後,利用DIV AB這個指令,
MOVX A,@R1
MOV B,#04H
DIV AB
MOV A,B
MOV DPTR,#300H
MOVC A,@A+DPTR
MOV P1,A
計算讀入的值後,再由P1輸出,可是輸出的值有問題,
請問我上面那段程式是那裡出錯??
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
tku_telent
一般會員 發表:23 回覆:21 積分:8 註冊:2004-03-05 發送簡訊給我 |
|
addn
高階會員 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
引言: MOVX A,@R1 MOV B,#04H DIV AB MOV A,B MOV DPTR,#300H MOVC A,@A DPTR MOV P1,A .ORG 300H .DB 00010001B .DB 00100010B .DB 01000100B .DB 10001000B ============================================ 我原本想要的是將左邊的ADC0804輸出值,改成右邊的值,由p1輸出, 00000000------- 00010001 00000001------- 00100010 00000010------- 01000100 00000011------- 10001000 00000100------- 00010001 00000101------- 00100010 00000110------- 01000100 00000111------- 10001000 . . . . . . 11111111------- 10001000 但是我燒程式去跑時,P1的輸出值卻變成下面這樣, 0~64 ----00010001 65~128 ----00100010 129~192 ----01000100 193~256 ----10001000 是那邊有問題??你修改過以後的程式看起來沒問題啊 可以先試試將AD轉換後的資料直接 給P1,先確定這一部份有無問題(測試時將VR轉動看看 LED反映正不正確),如果這部分正確把程式加上/4取餘數 指令試試,這樣一步一步試著找出問題 |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |