📄 text1.a
字号:
/*---------------------------------------------------------
FILE: TLC1549--Analog changing to Digits
Program of a Votage Device (0.005~5.005v)
Decriber: Vin=1000*5*Din/1024~5Din
TIME: 2006-8-7-22:04 By zx218 of ESA,AUTS
-----------------------------------------------------------*/
TLC1549CS BIT P2.3
TLC1549DO BIT P2.2
TLC1549CLK BIT P2.1
COM1 BIT p0.2 ;LED com selector
COM2 BIT p0.3
COM3 BIT p0.4
COM4 BIT p0.5
LED_SDA BIT P0.0 ;74164 uart monitor
LED_CLK BIT P0.1
ORG 00H
LJMP MAIN
ORG 0030H
MAIN:
LCALL ADC ;start A/D change
MOV R2,21H
MOV R3,20H
MOV R6,#00H
MOV R7,#3FH ;*63
LCALL MUL22 ;R2.R3*R6*R7=R2.R3.R4.R5
MOV R2,#00H
MOV R3,#00H
MOV R6,#00H
MOV R7,#0DH ;13
LCALL DIVD ;R2.R3.R4.R5/R6.R7=R2.R3.......
MOV A,R2 ;(21H) must r2-->r6!!!
MOV R6,A
MOV A,R3 ;(20H) must r3-->r7!!!
MOV R7,A
LCALL HB2 ;H to BCD: R6.R7=R3.R4.R5
MOV A,R4 ;high AD datas
ANL A,#0F0H
SWAP A
MOV 50H,A
MOV A,R4
ANL A,#0FH
MOV 51H,A
MOV A,R5 ;low AD datas
ANL A,#0F0H
SWAP A
MOV 52H,A
MOV A,R5
ANL A,#0FH
MOV 53H,A
LCALL DISP
LJMP MAIN
/*------------------------------------------
TLC1549 A/D changing program
Output: 20h=higher 2 bits;21h=lower 8 bits
--------------------------------------------*/
ADC:
MOV 20H,#00H
MOV 21H,#00H
MOV R7,#0AH
CLR TLC1549CS
LOOP1:
MOV C,TLC1549DO
MOV A,20H
RLC A
MOV 20H,A
MOV A,21H
RLC A
MOV 21H,A
SETB TLC1549CLK
CLR TLC1549CLK
DJNZ R7,LOOP1
SETB TLC1549CS
RET
/*----------------------------------------------
MUL22: 2 bytes * 2 bytes
R2.R3*R6.R7=R2.R3.R4.R5
--------------------------------------------*/
MUL22:
MOV A,R3
MOV B,R7
MUL AB
MOV R4,B
MOV R5,A
MOV A,R3
MOV B,R6
MUL AB
ADD A,R4
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2
MOV B,R7
MUL AB
ADD A,R4
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2
MOV B,R6
MUL AB
ADD A,R3
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
;--------------------------------------------------
; four byts H /two bytes H
; R2.R3.R4.R5/R6.R7=R2.R3.......
;-------------------------------------------------
DIVD:
CLR C
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JC DVD1
SETB OV
RET
DVD1:
MOV B,#10H
DVD2:
CLR C
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV F0,C
CLR C
SUBB A,R7
MOV R1,A
MOV A,R2
SUBB A,R6
ANL C,/F0
JC DVD3
MOV R2,A
MOV A,R1
MOV R3,A
INC R5
DVD3:
DJNZ B,DVD2
MOV A,R4
MOV R2,A
MOV A,R5
MOV R3,A
CLR OV
RET
/*--------------------------------------------
Two bytes H change to three bytes BCD
Input: R6.R7=R3.R4.R5
---------------------------------------------*/
HB2:
CLR A
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H
HB3:
MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A
DJNZ R2,HB3
RET
/*---------------------------------------------
Votage Display program
--------------------------------------------*/
DISP:
MOV R5,#4
LP1: MOV R6,#250 ;Display for one minute
LP2:
MOV DPTR,#TAB1
MOV A,50H ;1000
// ADD A,#11H
MOVC A,@A+DPTR
LCALL SEND
CLR COM1
CALL DL1MS
SETB COM1
MOV DPTR,#TAB
MOV A,51H ;100
MOVC A,@A+DPTR
LCALL SEND
CLR COM2
CALL DL1MS
SETB COM2
MOV A,52H ;10
MOVC A,@A+DPTR
LCALL SEND
CLR COM3
CALL DL1MS
SETB COM3
MOV A,53H ;1
MOVC A,@A+DPTR
LCALL SEND
CLR COM4
CALL DL1MS
SETB COM4
DJNZ R6,LP2
DJNZ R5,LP1
RET
;-------------Emulate SBUF SEND BYTE---------------
SEND:
MOV R7,#08H
DUP: RLC A
MOV LED_SDA,C
CLR LED_CLK
SETB LED_CLK
DJNZ R7,DUP
RET
;--------------DELAY 1MS----------------------
DL1MS: MOV R7,#125
DJNZ R7,$
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H ;不带小数点0~F,0FFH为熄灭
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH,0FFH
TAB1:
DB 40H,79H,24H,30H ;带小数点0~F "不亮,0FFH","A,11H","-,FDH"
DB 19H,12H,02H,78H
DB 00H,10H,08H,03H
DB 46H,21H,06H,0EH,0FFH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -