STC12C2052單片機制作數(shù)字電壓表匯編程序
;===================數(shù)字電壓表模擬采樣===================================
本文引用地址:http://butianyuan.cn/article/201612/324642.htm P1M0 EQU 91H ;端口設(shè)置寄存器
P1M1 EQU 92H ;端口設(shè)置寄存器
AK EQU 0C5H ;A/D轉(zhuǎn)換控制寄存器
ADATA EQU 0C6H ;保存轉(zhuǎn)換數(shù)據(jù)的高8位
ADATAD EQU 0BEH ;保存轉(zhuǎn)換數(shù)據(jù)的低2位
ORG 00H
JMP MAIN
;==================================================
MAIN: MOV P1,#00H
MOV P3,#00H
MOV TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#17H
MOV 30H,#01
MOV 32H,#03H
MOV 33H,#04H
MOV 31H,#02H
MOV 8EH,#00H
MOV PCON,#00H
MOV P1,#0FFH
MOV P3,#0FFH
MOV P1M0,#4H ;設(shè)置端口為A/D模式
MOV P1M1,#4H ;設(shè)置端口為A/D模式
MOV ADATA,#00H
MOV AK,#80H ;打開A/D電源
CALL DIP
CALL DIP
CALL DIP
CALL DIP
CALL DIP
CALL DIP
;==================================================
MOV AK,#0E2H ;選擇通道P1。2為A/D輸入端
;===============================================
LOOP_22: ORL Ak,#08H ;啟動轉(zhuǎn)換
LOOP_0: MOV A,#10H
ANL A,AK ;判斷是否轉(zhuǎn)換完成
JZ LOOP_0
;==============================================
ANL AK,#0E7H ;把標志位清零
MOV A,ADATA ;讀取轉(zhuǎn)換后的高8值
;==============================================
MOV B,#100
DIV AB
MOV 30H,A
MOV A,B
MOV B,#10
DIV AB
MOV 31H,A
MOV 32H,B
;================================================
MOV 66H,#50
LOOP: CALL DIP
DJNZ 66H,LOOP
JMP LOOP_22
;=================================================
DIP: MOV A,30H
CALL TABLE
MOV P3,A
SETB P1.0
MOV 65H,#1
CALL T2MS
CLR P1.0
;=================
MOV A,31H
CALL TABLE
MOV P3,A
SETB P1.1
MOV 65H,#1
CALL T2MS
CLR P1.1
;===============
MOV A,32H
CALL TABLE
MOV P3,A
SETB P1.7
MOV 65H,#1
CALL T2MS
CLR P1.7
;================
MOV A,33H
CALL TABLE
MOV P3,A
SETB P1.4
MOV 65H,#1
CALL T2MS
CLR P1.4
RET
;=================================================
T2MS:
MOV TH0,#0FCH
MOV TL0,#17H
SETB TR0
JNB TF0,$
CLR TF0
DJNZ 65H,T2MS
RET
;=============================================
TABLE: INC A
MOVC A,@A+PC
RET
DB 3FH,06H,9BH,8FH,0A6H,0ADH,0BDH,7H,0BFH,0AFH
;0 1 2 3 4 5 6 7 8 9
;==============================================
END
成功啦 更愛上我的單片機設(shè)計
評論