毕业论文设计
;入口参数:KEY_BUF_G,KEY_BUF_S,KEY_BUF_B ;出口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_B PRO_UP:
CALL K_DELAY
JB K_UP,K_LOOP ;按钮抖动处理 INC KEY_BUF_G ;个位增一 MOV A,KEY_BUF_G
CJNE A,#0AH,UPNEXT ;个位增加到10,回0 MOV KEY_BUF_G,#00H INC KEY_BUF_S ;十位加一 MOV A,KEY_BUF_S
CJNE A,#0AH,UPNEXT ;十位超过99,溢出了 MOV R0,#200
ERROR1: LCALL ERR ;出错,显示8888
DJNZ R0,ERROR1
DEC KEY_BUF_S ;退回99 MOV KEY_BUF_G,#09H
UPNEXT:
MOV DIS_BUF_G,KEY_BUF_G MOV DIS_BUF_S,KEY_BUF_S MOV DIS_BUF_B,KEY_BUF_B CALL K_DELAY
RET ;程序名称:PRO_DOWN ;功能:数值下调处理
;入口参数:KEY_BUF_G,KEY_BUF_S,KEY_BUF_B ;出口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_B PRO_DOWN:
CALL K_DELAY
JB K_DOWN,K_LOOP ;按钮抖动处理 DEC KEY_BUF_G ;个位减一 MOV A,KEY_BUF_G
CJNE A,#0FFH,DOWNNEXT ;个位减到0,回到9 MOV KEY_BUF_G,#09H
DEC KEY_BUF_S ;十位减一 MOV A,KEY_BUF_S
CJNE A,#0FFH,DOWNNEXT;十位低于0,溢出了 MOV R0,#200
ERROR2: LCALL ERR ;出错,显示8888
DJNZ R0,ERROR2
INC KEY_BUF_S ;退回00 MOV KEY_BUF_G,#00H
DOWNNEXT:
MOV DIS_BUF_G,KEY_BUF_G ;增加完成后,赋值退出,然后DISPLAY
;显示出来
MOV DIS_BUF_S,KEY_BUF_S
第 45 页 共 48 页
毕业论文设计
MOV DIS_BUF_B,KEY_BUF_B CALL K_DELAY RET
K_DELAY: ;键盘抖动延时子程序
MOV R6,#250
DL20MS_1:
MOV R7,#200 DJNZ R7,$
DJNZ R6, DL20MS_1 RET
;可控硅控制 SWITCH:
MOV A,KEY_BUF_G ;三个Buffer都是0的话,说明还没有输入数值,直
;接退出
JNZ SNEXT
MOV A,KEY_BUF_S JNZ SNEXT
MOV A,KEY_BUF_B
JZ SQUIT
SNEXT: CALL SET_DIS_BUF
MOV A,KEY_BUF_S SUBB A,DIS_BUF_S JC COOL
JNZ HOT ;十位如果相等,那么继续比较个位 MOV A,KEY_BUF_G SUBB A,DIS_BUF_G JC COOL
HOT: CLR P_SWITCH ;P_SWITCH为0说明当前温度小于设定温度,要升温,
;所以接电阻丝
SETB P1.3 ;报警 SJMP SQUIT
COOL: SETB P_SWITCH ;P_SWITCH 为1说明当前温度大于设定温度 SETB P1.3 ;报警 SQUIT: RET
;程序名称:SET_DIS_BUF
;功能:赋值给DIS_BUF_G, DIS_BUF_S, DIS_BUF_B ;入口参数:TEMPERATURE_LC,TEMPERATURE_HC ;出口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_B
SET_DIS_BUF:
MOV A,TEMPERATURE_LC ANL A,#0FH
MOV DIS_BUF_X,A ;小数位 MOV A,TEMPERATURE_LC SWAP A
第 46 页 共 48 页
毕业论文设计
ANL A,#0FH
MOV DIS_BUF_G,A ;个位 MOV A,TEMPERATURE_HC ANL A,#0FH
MOV DIS_BUF_S,A ;十位 MOV A,TEMPERATURE_HC SWAP A ANL A,#0FH
MOV DIS_BUF_B,A ;百位 MOV A,TEMPERATURE_HC ANL A,#0F0H
CJNE A,#010H,NEXT0 SJMP NEXT1
NEXT0: MOV A,TEMPERATURE_HC ANL A,#0FH
JNZ NEXT1 ;十位数是0
MOV A,TEMPERATURE_HC SWAP A ANL A,#0FH
MOV 73H,#0AH ;符号位不显示 MOV 72H,A ;十位数显示符号
NEXT1: RET ;程序名称:DISPLAY
;功能:显示数据到数码管中。
;入口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_B ;出口参数:无 DISPLAY:
MOV DPTR,#DISTAB MOV R3,#0FEH
MOV R1,#DIS_BUF_B
DPLOP: MOV A,@R1
MOVC A,@A+DPTR MOV P2,R3 MOV P0,A
CJNE R3,#0FBH,DPNEXT CLR P0.7
DPNEXT: MOV A,R3
RL A
MOV R3,A DEC R1
CALL DS1M
CJNE R3,#0EFH,DPLOP
MOV P0,#0FFH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口复位 RET
第 47 页 共 48 页
毕业论文设计
DS1M: MOV R7,#0FFH
DJNZ R7,$ RET
;数码管TAB DISTAB:
DB 0C0H ;0 DB 0F9H ;1 DB 0A4H ;2 DB 0B0H ;3 DB 099H ;4 DB 092H ;5 DB 082H ;6 DB 0F8H ;7 DB 080H ;8 DB 090H ;9
DB 0FFH ;NONE END
第 48 页 共 48 页