扬州工业职业技术学院毕业设计
LCALL ANSW RETI
PAN: CJNE A,#12,SAO
RETI ;显示函数部分,可供调用 DIS_CUR_OFF: MOV R0,#0CH
LCALL DIS_CMD_WRT RET
DIS_CUR_ON: MOV R0,#0EH
LCALL DIS_CMD_WRT RET
CHK_BUSY_FLG: MOV P0,#0FFH
CLR D2RS NOP NOP NOP
LCALL DISPLAY_RD
JB ACC.7,CHK_BUSY_FLG RET
CLEAR_DIS: MOV R0,#01H
LCALL DIS_CMD_WRT RET
DIS_CMD_WRT: LCALL CHK_BUSY_FLG
MOV P0,R0
CLR D2RS NOP
NOP NOP
LCALL DISPLAY_WRT RET
DIS_DATA_WRT: LCALL CHK_BUSY_FLG
第 - 36 - 页
扬州工业职业技术学院毕业设计
CJNE A,#10H,DIS_DAT_WRT1
MOV P0,#0C0H ;1100,00000行起始地址为40 CLR D2RS NOP NOP NOP
LCALL DISPLAY_WRT
DIS_DAT_WRT1: MOV P0,R0
DISPLAY_WRT: CLR D2RW
DISPLAY_RD: SETB D2RW
第 - 37 - 页
SETB D2RS NOP NOP NOP
LCALL DISPLAY_WRT RET
NOP NOP NOP
SETB D2E NOP NOP NOP
CLR D2E NOP NOP NOP RET
扬州工业职业技术学院毕业设计
NOP NOP NOP
SETB D2E NOP NOP NOP
MOV A,P0 NOP NOP NOP
CLR D2E NOP NOP NOP RET
DIS_DATA_RD: LCALL CHK_BUSY_FLG 键按下
KEY:
MOV KEYPORT,#0FH MOV A,KEYPOR CJNE A,#0FH,KEYDOWN MOV A,#0FFH RET
LCALL DELAY43MS MOV KEYPORT,#0FH
MOV P0,#0FFH SETB D2RS LCALL DISPLAY_RD
RET ;键盘程序,出口:A为按键值 01H:0无键按下 1 有
KEYDOWN:
第 - 38 - 页
扬州工业职业技术学院毕业设计
MOV A,KEYPORT
CJNE A,#0FH,KEYDOWN_YES MOV A,#0FFH RET
KEYDOWN _YES: MOV B,A
MOV KEYPORT,#0F0H MOV A,KEYPORT ORL A,B PUSH 30H MOV 30H,A MOV R3,#10H
MOV DPTR,#KEYVALUE MOV A,R3 MOVC A,@a+dptr
CJNE A,30h,NEXTKEYVALUE DEC R3 POP 30H
MOV KEYPORT,#0FH MOV A,KEYPORT CJNE A,#0FH, WAITKEY_F MOV A,R3 SETB 01H RET
NEXT_KEY:
WAITKEY_F:
NEXTKEYVALUE: DJNZ R3,NEXT_KEY
DEC R3 POP 30H
WAITKEY_FREE: MOV KEYPORT,#0FH
MOV A,KEYPORT
CJNE A,#0FH, WAITKEY_FREE MOV A,R3
第 - 39 - 页
扬州工业职业技术学院毕业设计
SETB 01H RET DB
KEYVALUE:
0FFH,7EH,7DH,7BH,77H,0BEH,0BDH,0BBH,0B7H,0DEH,0DDH,0DBH,0D7H,0EEH,0EDH,0EBH,0E7H
DELAY43MS: PUSH A
MOV A,R3 PUSH A MOV A,R2 PUSH A MOV R3,#43
DELAY: LOOP:
MOV R2,#0FAH
NOP ;内层循环为1MS NOP
DJNZ R2,LOOP DELAY POP A MOV R2,A POP A MOV R3,A POP A
RET ;确认是否修改温度设定
DJNZ R3,
ASK: MOV R0,#01H ;清屏并置地址计数器AC为0 LCALL DIS_CMD_WRT MOV 40H,#0 ZDZ: MOV DPTR,#LINE MOV A,40H MOVC A,@A+DPTR MOV R0,A
LCALL DIS_DATA_WRT
第 - 40 - 页