恩 施 职 业 技 术 学 院 高 职 学 生 毕 业 设 计
NOTF: MOV 2FH,#00H ;2FH单元清零 SJMP MAIN
MCOMMU: MOV A,28H ;28H为1秒切换单元 JNB ACC.0,SBCODE ;1S没到
MOV 28H,#00H ;1秒到了28H单元清零 MOV R0,#2FH ;发送2FH单元内容
SBCODE: MOV R0,#79H ;R0指向显示缓冲区起始地址 MOV R2,#06H MOV A,#10H
LOOPDS: MOV @R0,A ;给79H-7EH送暗码10H INC R0
DJNZ R2,LOOPDS
JB 78H,MODE0 ;是数字键0 JB 79H,MODE1 ;是数字键1 JB 7AH,MODE2 ;是数字键2
MOV 79H,#0FH ;在LED0上显示F LJMP NEXT1
MODE2: MOV A,#24H ;1秒切换显示单元24H内容送A ANL A,#03H ;屏蔽高6位 CJNE A,#01H,MNEXT1 ;1秒没到
CPL 7EH ;1秒到了,7EH取反 MOV 24H,#00H MNEXT1: JNB 7EH,MODE0 SJMP MODE1
MODE0: MOV A,#00H ;00H送7EH MOV 7EH ,A SJMP MODE
MODE1: MOV A,#01H ;01H送7EH MOV 7EH,A MODE: ACALL READAD ACALL READP1
MOV A,2EH ;接收到的数字量送A CJNE A,#0CCH,CX1 ;超下限吗? CX1: JNC CX ;超过下限转CX CJNE A,#33H,CX2 ;超上限吗? CX2: JC CX ;超过上限转CX SETB P1.0 ;继电器放开 SJMP SBCRET
CX: CLR P1.0 ;继电器吸合 SBCRET: AJMP NEXT1
BCDEX: MOV R3,#03H ;对时、分、秒单元内容拆字并送显存 MOV R0,#79H
20
恩 施 职 业 技 术 学 院 高 职 学 生 毕 业 设 计
MOV R1,#22H LOOP: MOV A,@R1 ANL A,#0FH MOV @R0,A INC R0
MOV A,@R1 SWAP A
ANL A,#OFH MOV @R0,A INC R0 DEC R1
DJNZ R3,LOOP RET
DISPLAY: MOV R3,#00H ;显示子程序 MOV R0,#7EH MOV B,#20H
MOV DPTR,#0FF22H MOV A,#0FFH MOVX @DPTR,A DIPPLAY0: MOV A,B
MOV DPTR ,#0FF21H MOVX @DPTR,A MOV DPTR,#TAB1 MOV A,@R0
MOVC A,@A+DPTR MOV DPTR,#0FF22H JNB 7FH,DNEXT1 JB 78H,DNEXT2 JB 79H,DNEXT2 JB 7AH,DNEXT2 SJMP DNEXT4 DNEXT1: JB B.4,DNEXT3 DNEXT2: JB B.2,DNEXT3 SJMP DNEXT4 DNEXT3: ANL A,#7FH DNEXT4: MOVX @DPTR,A DELAY1: DJNZ R3,DELAY1 DEC R0 MOV A,B
JB ACC.0,DONE RR A MOV B,A MOV A0FFH
21
恩 施 职 业 技 术 学 院 高 职 学 生 毕 业 设 计
MOVX @DPTR,A SJMP DISPLAY0 DONE: RET
TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,88H
DB 83H,0C6H,0A1H,86H,8EH,0FFH
KEYSCAN: ACALL DY12MS ;键盘扫描子程序 MOV R2,#0FEH MOV R3,#08H MOV R0,#00H KEYSM1: MOV A,R2
MOV DPTR,#0FF21H MOVX @DPTR,A RL A MOV R2,A
MOV DPTR,#0FF23H MOVX A,@DPTR CPL A
ANL A,#0FH JNZ JSCODE INC R0
DJNZ R3,KEYSM1 MOV A,#0FFH
RETURN: RET ;返回前A中为被按键值 JSCODE: CPL A
JB ACC.0,JSCODE1 MOV A,#00H AJMP JSCODE4
JSCODE1: JB ACC.1,JSCODE2 MOV A,#08H AJMP JSCODE4
JSCODE2: JB ACC.2,JSCODE3 MOV A,#10H AJMP JSCODE4
JSCODE3: JB ACC.2,JSCODE4 MOV A,#18H JSCODE4: ADD A,R0
MOV DPTR,#TAB3 MOVC A,@A+DPTR SJMP RETURN
TAB3 DB 07H,04H,08H,05H,09H,06H,0AH,0BH DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH DY12MS: MOV R7,#18H DY12MS0: MOV R6,#0FFH
22
恩 施 职 业 技 术 学 院 高 职 学 生 毕 业 设 计
DY12MS1: DJNZ R6,DY12MS1 DJNZ R7,DY12MS0 RET
READAD: MOV A,2EH ;接收到的数字量送A MOV A,#64H ;以下是标度转换及显示程序 MUL AB
MOV R4,#00H MOV R3,B MOV R2,A MOV R5,#33H MOV B,#16 ACALL NSDIV MOV B,#64H DIV AB
MOV 7BH,A ADD A,7BH MOV 7BH,A MOV A,B MOV B,#0AH DIV AB SWAP A ORL A,B MOV B,A ADD A,B DA A
JNC BWNOTJ1 INC 7BH BWNOTJ1: MOV B,A ANL A,#0F0H SWAP A
MOV 7AH,A MOV A,B ANL A,#0FH MOV 79H,A ADRETN: RET
NSDIV: CLR C
MOV A,R2 RLC A MOV R2,A MOV A,R3 RLC A MOV R3,A MOV A,R4
23
相关推荐: