📄 plj8279.asm
字号:
DisplayBuffer EQU 40H ;设置显示缓冲区的地址为40h-45h共6个字节
Disp1 EQU 55H ;转换后的数据10(高位)
Disp2 EQU 56H
Disp3 EQU 57H
DIN1 EQU 51H ;待转换的数据BCD(高位)
DIN2 EQU 52H
DIN3 EQU 53H
ORG 0000H
AJMP MAIN
ORG 000BH ;T0中断入口
AJMP T0INT
ORG 001BH ;T1中断入口
AJMP T1INT
ORG 0100H
MAIN: MOV SP,#70H ;8279初始化
MOV P2,#0A0H
MOV R6,#0FFH
NOP
LOO14: DJNZ R6,LOO14
MOV R0,#01H
MOV A,#00H
MOVX @R0,A
MOV A,#32H
MOVX @R0,A
MOV A,#0DFH
MOV R0,#01H
MOVX @R0,A
MOV IE,#8AH ;开放T0、T1中断
MOV TMOD,#51H ;T0定时,T1计数
MOV TH0,#0D8H
MOV TL0,#0FAH ;定时10ms
MOV 50H,#100 ;100*10ms=1s
MOV TH1,#00H
MOV TL1,#00H
MOV DIN1,#0
MOV DIN2,#0
MOV DIN3,#0;存放采集到的频率
MOV 40H,#0
MOV 41H,#0
MOV 42H,#0
MOV 43H,#0
MOV 44H,#0
MOV 45H,#0
SETB TR1
SETB TR0
WAIT: AJMP WAIT ;等待中断
T1INT: INC DIN1;计数器溢出则23H单元自增1
RETI
T0INT: ;定时10ms产生中断
DJNZ 50H,NEXT1
CLR TR1
CLR TR0
MOV DIN2,TH1 ;1s时间到则采集数据
MOV DIN3,TL1
MOV TH1,#00H
MOV TL1,#00H
LCALL TRANS
LCALL DIS
AJMP EXIT
NEXT1: MOV TH0,#0D8H ;继续定时
MOV TL0,#0FAH
EXIT: RETI
TRANS:CLR A
MOV Disp1,A
MOV Disp2,A
MOV Disp3,A
MOV 3AH,#18H ;转换3字节十六进制整数
LOOP: MOV A,DIN3 ;移出待转换数的一位到CY中
RLC A
MOV DIN3,A
MOV A,DIN2
RLC A
MOV DIN2,A
MOV A,DIN1
RLC A
MOV DIN1,A
MOV A,Disp3 ;BCD码带进位自身相加,相当于乘2
ADDC A,Disp3
DA A
MOV Disp3,A
MOV A,Disp2
ADDC A,Disp2
DA A
MOV Disp2,A
MOV A,Disp1
ADDC A,Disp1
DA A
MOV Disp1,A ;双字节十六进制数的万位数不超过6,不用调整
DJNZ 3AH,LOOP ;处理完16BIT
RET
DIS: SETB RS0; 选择工作寄存器组1,
CLR RS1; 这样可保护原工作寄存器组(0
MOV R0,#DisplayBuffer ;分别取出每一位,放到DisplayBuffer
MOV A,Disp1
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,Disp1
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,Disp2
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,Disp2
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,Disp3
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,Disp3
ANL A,#0FH
MOV @R0,A
DISPLAY:
MOV 30H,#80H
MOV 31H,#DisplayBuffer
MOV R7,#06H
LOOP4: MOV DPTR,#0A001H
MOV A,30H
MOVX @DPTR,A
MOV R1,31H
MOV A,@R1
MOV DPTR,#sedz
MOVC A,@A+DPTR
MOV DPTR,#0A000H
MOVX @DPTR,A
INC 31H
INC 30H
DJNZ R7,LOOP4
RET
sedz: DB 0C0H,0F9H,0A4H,0B0H,99H,92H
DB 82H,0F8H,80H,90H,88H,83H
DB 0C6H,0A1H,86H,8CH,40H,79H
DB 24H,30H,19H,12H,02H,78H
DB 00H,10H,0FFH
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -