|
|
源程序:LED_0 EQU 30H ;千分位
LED_1 EQU 31H
LED_2 EQU 32H
LED_3 EQU 33H ;存放段碼
ADC EQU 35H
CLOCK BIT P2.4 ;定義ADC0808時(shí)鐘位
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
START: MOV LED_0,#00H
MOV LED_1,#00H
MOV LED_2,#00H
MOV DPTR,#TABLE ;段碼表首地址
MOV TMOD,#02H ;TO定時(shí)器方式2
MOV TH0,#245 ;脈沖信號(hào)1us
MOV TL0,#00H
MOV IE,#82H ;允許TO中斷
SETB TR0 ;開(kāi)啟定時(shí)
WAIT: CLR ST
SETB ST ;看時(shí)序圖
CLR ST ;啟動(dòng)AD轉(zhuǎn)換
JNB EOC,$ ;等待轉(zhuǎn)換結(jié)束,掃描
SETB OE
MOV ADC,P1 ;讀取AD轉(zhuǎn)換結(jié)果
CLR OE
MOV A,ADC ;存到A存儲(chǔ)器
MOV B,#51 ;開(kāi)始做運(yùn)算
DIV AB
MOV LED_3,A ;整數(shù)值
MOV A,B
MOV B,#10
MUL AB
MOV R1,B
JNB PSW.2 , TAB1
INC A
TAB1: MOV B,#51
DIV AB
CJNE R1,#1, TAB2
ADD A,#5
TAB2: MOV LED_2,A ;十分位
CLR PSW.2
MOV A,B
MOV B,#10
MUL AB
MOV R1,B
JNB PSW.2 , TAB3
INC A
TAB3: MOV B,#51
DIV AB
CJNE R1,#1, TAB4
ADD A,#5
TAB4: MOV LED_1,A ;百分位
CLR PSW.2
MOV A,B
MOV B,#10
MUL AB
MOV R1,B
JNB PSW.2 , TAB5
INC A
TAB5: MOV B,#51
DIV AB
CJNE R1,#1, TAB6
ADD A,#5
TAB6: MOV LED_0,A ;千分位
CLR PSW.2
LCALL DISP
SJMP WAIT
INT_T0: CPL CLOCK ;提供ADC0808時(shí)鐘信號(hào)
RETI
DISP: MOV A,LED_0 ;顯示子程序
MOVC A,@A+DPTR
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
MOV A,LED_3
MOVC A,@A+DPTR
ADD A,#80H
CLR P2.0
MOV P0,A
LCALL DELAY
SETB P2.0
RET
DELAY: MOV R6,#10 ;延時(shí)5毫秒
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
標(biāo)黃的地方看不懂,為什么要用#51去除
|
|