ADC0809實驗參考程序: 1. 主程序 - ORG 0000H
- AJMP MAIN
- ORG 000BH
- AJMP T0SUB
- ORG 0030H
- MAIN: MOV SP, #5FH;設置堆棧
- CLR A
- MOV 30H, A;顯示緩沖區清零,30H單元存放電壓的個位BCD碼
- MOV 31H, A
- MOV 32H, A
- MOV 33H, A;31H單元存放電壓的小數點后第三位BCD碼
- MOV 34H, A
- MOV 40H, A;讀取的電壓值單元清零,40H單元存放電壓的高兩位BCD碼
- MOV 41H, A;41H單元存放電壓的低兩位 BCD碼
- MOV R2, A;轉換結果單元清零
- MOV TMOD, #01H;設置定時器T0每50ms中斷一次
- MOV TH0, #4CH
- MOV TL0, #00H
- SETB ET0
- SETB EA
- SETB TR0
- MOV P2, #0F0H; 關顯示器并使ADC0809未選
- LOOP: MOV A, R2;根據轉換結果查表得到對應的電壓值
- MOV R3, #00H;R3R4存放2xR2
- CLR C
- RLC A
- MOV R4, A
- MOV A, R3
- RLC A
- MOV R3, A
- MOV DPTR,#VTAB;指向電壓表首地址
- MOV A, R4
- ADD A, DPL
- MOV DPL, A
- MOV A, R3
- ADDC A, DPH
- MOV DPH, A
- CLR A
- MOVC A, @A+DPTR
- MOV R0, #40H
- MOV @R0, A
- INC DPTR;讀取電壓值的第二個字節
- CLR A
- MOVC A, @A+DPTR
- INC R0
- MOV @R0, A
- ACALL DISPLAY;調用顯示子程序
- ACALL DELAY1ms;調用延時子程序
- SJMP LOOP
- 顯示子程序:
- DISPLAY: MOV R1, #30H;拆分BCD碼
- MOV R0, #40H;指向讀取的電壓值的單元
- MOV A, @R0
- ANL A, #0F0H
- SWAP A
- MOV @R1, A
- INC R1
- MOV A, @R0
- ANL A, #0FH
- MOV @R1, A
- INC R0;拆分第二個字節的BCD碼
- INC R1
- MOV A, @R0
- ANL A, #0F0H
- SWAP A
- MOV @R1, A
- INC R1
- MOV A, @R0
- ANL A, #0FH
- MOV @R1, A
- MOV P2, #0F0H;關顯示器,P2口的低四位控制四位數碼管的顯示位置
- MOV DPTR, #SEGTAB;指向段碼表
- MOV R1, #30H
- MOV A, @R1
- MOVC A, @A+DPTR
- MOV P1, A;顯示個位電壓值
- ANL P1,#7FH;點亮小數點
- MOV P2, #0F1H;P2.0置位,顯示個位數碼
- ACALL DELAY1ms;延時1ms
- MOV P2, #0F0H;關閉顯示器
- INC R1
- MOV A, @R1;顯示小數點后第一位電壓值
- MOVC A, @A+DPTR
- MOV P1, A
- MOV P2, #0F2H
- ACALL DELAY1ms
- MOV P2, #0F0H
- INC R1;顯示小數點后第二位電壓值
- MOV A, @R1
- MOVC A, @A+DPTR
- MOV P1, A
- MOV P2, #0F4H
- ACALL DELAY1ms
- MOV P2, #0F0H
- INC R1;顯示小數點后第三位電壓值
- MOV A, @R1
- MOVC A, @A+DPTR
- MOV P1, A
- MOV P2, #0F8H
- ACALL DELAY1ms
- MOV P2, #0F0H;關顯示器
- RET
- 1ms延時子程序:
- DELAY1ms: MOV R5, #02H
- L1: MOV R6, #0F0H
- DJNZ R6, $
- DJNZ R5, L1
- RET
- 定時采樣中斷服務子程序:
- T0SUB: PUSH ACC;保護現場
- PUSH 00H
- MOV TH0, #4CH;恢復初值50ms
- MOV TL0, #00H
- CLR P2.7;啟動ADC0809的0通道轉換(A15)
- MOV R0, #0F0H
- MOVX @R0, A
- NOP
- NOP
- NOP
- NOP
- JNB P3.0, $;轉換結束嗎?
- MOVX A, @R0;讀取轉換結果
- MOV R2, A
- SETB P2.7;ADC0809退出選中
- POP 00H;恢復現場
- POP ACC
- RETI
- SEGTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;段碼表
- VTAB: DB 00H,00H,00H,20H,00H,39H,00H,59H;電壓值表格
- DB 00H,78H,00H,98H,01H,12H,01H,38H
- DB 01H,56H,01H,76H,01H,95H,02H,15H
- DB 02H,34H,02H,54H,02H,80H,03H,00H
- DB 03H,20H,03H,40H,03H,60H,03H,80H
- DB 03H,91H,04H,10H,04H,30H,04H,49H
- DB 04H,69H,04H,88H,05H,08H,05H,27H
- DB 05H,47H,05H,66H,05H,86H,06H,05H
- DB 06H,25H,06H,45H,06H,64H,06H,84H
- DB 07H,03H,07H,23H,07H,42H,07H,62H
- DB 07H,81H,08H,01H,08H,20H,08H,40H
- DB 08H,59H,08H,79H,08H,98H,09H,18H
- DB 09H,38H,09H,57H,09H,77H,09H,96H
- DB 10H,16H,10H,35H,10H,55H,10H,74H
- DB 10H,94H,11H,13H,11H,33H,11H,52H
- DB 11H,72H,11H,91H,12H,11H,12H,30H
- DB 12H,50H,12H,70H,12H,89H,13H,09H
- DB 13H,28H,13H,48H,13H,67H,13H,87H
- DB 14H,06H,14H,26H,14H,45H,14H,65H
- DB 14H,84H,15H,04H,15H,23H,15H,43H
- DB 15H,63H,15H,82H,16H,02H,16H,21H
- DB 16H,41H,16H,60H,16H,80H,16H,99H
- DB 17H,19H,17H,38H,17H,58H,17H,77H
- DB 17H,97H,18H,16H,18H,36H,18H,55H
- DB 18H,75H,18H,95H,19H,14H,19H,34H
- DB 19H,53H,19H,73H,19H,92H,20H,12H
- DB 20H,31H,20H,51H,20H,70H,20H,90H
- DB 21H,09H,21H,29H,21H,48H,21H,68H
- DB 21H,88H,22H,07H,22H,27H,22H,46H
- DB 22H,66H,22H,85H,23H,05H,23H,24H
- DB 23H,44H,23H,63H,23H,83H,24H,02H
- DB 24H,22H,24H,41H,24H,61H,24H,80H
- DB 25H,00H,25H,19H,25H,39H,25H,59H
- DB 25H,78H,25H,98H,26H,17H,26H,37H
- DB 26H,56H,26H,76H,26H,95H,27H,15H
- DB 27H,34H,27H,54H,27H,73H,27H,93H
- DB 28H,13H,28H,32H,28H,52H,28H,71H
- DB 28H,91H,29H,10H,29H,30H,29H,49H
- DB 29H,69H,29H,88H,30H,08H,30H,27H
- DB 30H,47H,30H,66H,30H,86H,31H,05H
- DB 31H,25H,31H,45H,31H,64H,31H,83H
- DB 32H,03H,32H,23H,32H,42H,32H,62H
- DB 32H,81H,33H,01H,33H,20H,33H,40H
- DB 33H,59H,33H,79H,33H,98H,34H,18H
- DB 34H,38H,34H,57H,34H,77H,34H,96H
- DB 35H,16H,35H,35H,35H,55H,35H,75H
- DB 35H,94H,36H,13H,36H,33H,36H,52H
- DB 36H,72H,36H,91H,37H,11H,37H,30H
- DB 37H,50H,37H,70H,37H,89H,38H,09H
- DB 38H,28H,38H,48H,38H,67H,38H,88H
- DB 39H,06H,39H,26H,39H,45H,39H,65H
- DB 39H,84H,40H,04H,40H,23H,40H,43H
- DB 40H,63H,40H,82H,41H,02H,41H,21H
- DB 41H,41H,41H,60H,41H,80H,41H,99H
- DB 42H,19H,42H,38H,42H,58H,42H,77H
- DB 42H,97H,43H,16H,43H,36H,43H,55H
- DB 43H,75H,43H,95H,44H,14H,44H,34H
- DB 44H,53H,44H,73H,44H,92H,45H,12H
- DB 45H,31H,45H,51H,45H,70H,45H,89H
- DB 46H,09H,46H,29H,46H,48H,46H,68H
- DB 46H,88H,47H,07H,47H,27H,47H,46H
- DB 47H,66H,47H,85H,48H,05H,48H,24H
- DB 48H,44H,48H,63H,48H,83H,49H,02H
- DB 49H,22H,49H,41H,49H,61H,49H,80H
- END
復制代碼
|