上周自己寫的單片機八位 A/D 轉換匯編源碼 歡迎大家參考!
一、 實驗目的
1 .掌握 ADC0809 與 與 89C51 的接口方法。
2 .采用定時與查詢方法讀取 A/D 轉換結果,并將轉換數據存于片內RAM 中。
3. 通過實驗了解單片機如何進行數據采集。
4. 掌握如何用 8255 的 的 PA 口輸出轉換好的數字量到發光二極管顯示。- 1 .定時方式采集 0 通道
- ORG 0000H
- AJMP MAIN
- MAIN: MOV DPTR,#9003H ;8255 控制字地址
- MOV A,#82H ; 方式 0 ,PA ,PC 輸出,PB 輸入
- MOVX @DPTR, A
- MOV DPTR, #8000H
- MOV A, #00H
- MOVX @DPTR, A ;動 啟動 A/D
- MOV R2, #40H ; 延時
- DLYY: DJNZ R2, DLYY ;等待轉換結果
- MOVX A, @DPTR ;
- MOV R6,A ; 轉換結果至 R6 中 中
- MOV R1, #100 ; 二極管顯示轉換的結果
- DLY:
- MOV DPTR,#9000H ;Port A 地址
- MOVX @DPTR,A
- DJNZ R1, DLY ; 延時
- AJMP MAIN
- END
- 2 .查詢方式采集 0 通道 時 (此時 EOC 引腳和 P1.0
- ORG 0000H
- AJMP MAIN
- MAIN:
- MOV DPTR,#9003H;8255 控制字地址
- MOV A,#82H ; 方式 0 ,PA ,PC 輸出,PB 輸入
- MOVX @DPTR, A
- MOV DPTR,#8000H
- MOV A,#00H
- MOVX @DPTR, A ; 啟動 A/D
- LOOP1:
- MOV P1,#0FFH
- MOVA,P1
- ANLA,#01H; 查詢 EOC 狀態,高電平轉換結束
- JNZ DIS
- AJMP LOOP1
- DIS: MOVX A,@DPTR
- MOV R6,A; 轉換結果至 R6 中 中
- MOV R1, #100 ; 二極管顯示轉換的結果
- DLY:
- MOV DPTR,#9000H ;PortA 地址
- MOVX @DPTR,A
- DJNZ R1, DLY ; 延時
- AJMP MAIN
- END
- 3. 中斷方式采集 0 通道
- ORG 0000H
- AJMP MA
- ORG 0003H
- AJMP RAI
- ORG 0100H
- MA:SETB IT0
- SETB EA
- SETB EX0
- MOV DPTR,#9003H;8255 控制字地址
- MOV A,#82H ; 方式 0 ,PA ,PC 輸出,PB 輸入
- MOVX @DPTR, A
- QD:MOV DPTR, #8000H ;0809
- MOV A, #00H
- MOVX @DPTR, A ;動 啟動 A/D
- SJMP $
- ORG 013FH
- RAI:MOV DPTR, #8000H
- MOVX A, @DPTR ; 讀入結果
- MOV R6,A ; 轉換結果至 R6 中 中
- MOV R1, #100 ; 二極管顯示轉換的結果
- DLY:
- MOV DPTR,#9000H ;PortA 地址
- MOVX @DPTR,A
- DJNZ R1, DLY ; 延時
- MOV DPTR, #8000H ; 啟動 A/D
- MOV A, #00H
- MOVX @DPTR, A
- RETI
- END
復制代碼
|