📄 ledtest.asm
字号:
;89S52LED键盘显示测试程序
;功能:开机时数码管显示“012345”,按K1显示“111111”,按K2显示“2222
;22”,按K3显示“333333”,按K4显示“444444”,按K5显示“555555”,DAC8512产生锯齿波
LEDCLK EQU P1.5
LEDDATA EQU P1.6
SCLK EQU P2.2
SDI EQU P2.1
LD EQU P2.0
ORG 0000H
SJMP MAIN
ORG 000BH
LJMP TIMER0
ORG 001BH
LJMP TIMER1
ORG 0030H
MAIN: MOV SP,#60H
MOV TMOD,#11H
MOV TH0,#0D0H ;定时10ms
MOV TL0,#0F0H
MOV TH1,#0FCH ;定时1ms
MOV TL1,#18H
SETB TR0
SETB TR1
SETB ET0
SETB ET1
SETB EA
MOV 40H,#05H
MOV 41H,#04H
MOV 42H,#03H
MOV 43H,#02H
MOV 44H,#01H
MOV 45H,#00H
LCALL LEDDISP
SJMP $
;定时器0中断服务子程序
TIMER0: PUSH ACC ;定时器0中断子程序
PUSH PSW
MOV TH0,#0D0H ;定时10ms
MOV TL0,#0F0H
SETB P1.0 ;置P1.0~P1.4输入状态
SETB P1.1
SETB P1.2
SETB P1.3
SETB P1.4
CLR A
MOV C,P1.4 ;输入键盘状态信息
RLC A
MOV C,P1.3
RLC A
MOV C,P1.2
RLC A
MOV C,P1.1
RLC A
MOV C,P1.0
RLC A
CJNE A,#1FH,K0 ;判断键值,并置相应标志位
MOV 46H,A
LJMP K6
K0: CJNE A,46H,KEY1
LJMP K6
KEY1: MOV 46H,A
CJNE A,#1EH,KEY2
MOV 40H,#01H
MOV 41H,#01H
MOV 42H,#01H
MOV 43H,#01H
MOV 44H,#01H
MOV 45H,#01H
LCALL LEDDISP
SJMP K6
KEY2: CJNE A,#1DH,KEY3
MOV 40H,#02H
MOV 41H,#02H
MOV 42H,#02H
MOV 43H,#02H
MOV 44H,#02H
MOV 45H,#02H
LCALL LEDDISP
SJMP K6
KEY3: CJNE A,#1BH,KEY4
MOV 40H,#03H
MOV 41H,#03H
MOV 42H,#03H
MOV 43H,#03H
MOV 44H,#03H
MOV 45H,#03H
LCALL LEDDISP
SJMP K6
KEY4: CJNE A,#17H,KEY5
MOV 40H,#04H
MOV 41H,#04H
MOV 42H,#04H
MOV 43H,#04H
MOV 44H,#04H
MOV 45H,#04H
LCALL LEDDISP
SJMP K6
KEY5: CJNE A,#0FH,K6
MOV 40H,#05H
MOV 41H,#05H
MOV 42H,#05H
MOV 43H,#05H
MOV 44H,#05H
MOV 45H,#05H
LCALL LEDDISP
K6: POP PSW
POP ACC
RETI
TIMER1: PUSH ACC ;定时器1中断子程序
PUSH PSW
MOV TH1,#0FCH ;定时1ms
MOV TL1,#18H
MOV DPTR,#0E800H
MOVX @DPTR,A
INC R1
MOV A,R1
SWAP A
MOV R3, A
ANL A,#0F0H
MOV R2,A
MOV A,R3
ANL A,#0FH
MOV R3,A
LCALL DASUB
POP ACC
POP PSW
RETI
DASUB: PUSH PSW
PUSH A
SETB LD
MOV A,R3
SWAP A
MOV R7,#04H
DASUB1: CLR SCLK
RLC A
MOV SDI, C
NOP
SETB SCLK
DJNZ R7, DASUB1
MOV A, R2
MOV R7, #08H
DASUB2: CLR SCLK
RLC A
MOV SDI,C
NOP
SETB SCLK
DJNZ R7, DASUB2
CLR LD
NOP
SETB LD
POP A
POP PSW
RET
VOLTAGESISP:
;显示子程序
LEDDISP:
SETB P1.7
SETB 00H
MOV A,40H ;输出显示缓冲区的数据
CALL DOUT
MOV A,41H
CALL DOUT
MOV A,42H
;SETB 00H ;第3位显示小数点
CALL DOUT
;CLR 00H
MOV A,43H
CALL DOUT
MOV A,44H
;SETB 00H ;第3位显示小数点
CALL DOUT
;CLR 00H
MOV A,45H
CALL DOUT
CLR P1.7
RET
DOUT: MOV DPTR,#TABB ;输出一个字节数据
MOVC A,@A+DPTR
JNB 00H,NDOT
CLR ACC.7
NDOT: MOV R7,#08H
CYC: CLR LEDCLK
RRC A
MOV LEDDATA,C
SETB LEDCLK
DJNZ R7,CYC
RET
TABB:DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH,89H,0C7H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -