皖西学院2014届本科毕业设计(论文)
SHI EQU 42H GEE EQU 43H
ORG 0000H LJMP MAIN ORG 0003H LJMP IR ORG 0030H MAIN:SETB EA SETB EX0 SETB IT0 SJMP RUNDS1302 runds1302: MOV SP,#0dfH mov a,#00h mov r1,#0FFh mov r0,#0FDh LOOP1302: mov @r1,a DEC r1
djnz r0,loop1302 mov KEY_CNT,#80h mov p0,#0ffh
LCALL INITIAL;液晶初始化子程序 ;CLR KEY_BUSY ;开关忙标志清零 LOOP0: SETB ALARM
LCALL RUN1 ;显示第一屏 ,字符 MOV COM,#01H
LCALL LCD_W_CMD ;清屏 LCALL SET1302 LCALL RUN2 ;显示第二屏 ,时间 RUN2:LCALL GET1302
LCALL DISPLAY2 ;第二屏初显示 LCALL DELAY /* M02:LCALL CHK_KEY JB KEY_BUSY,M02 ;开关标志忙么?如忙 忙则显示时间 */
MD1: JNB HWX_FLG, MD0 SETB ALARM CLR HWX_FLG
23
则一直检测开关状态,不
基于单片机的电器遥控器设计
LCALL HWX_SCAN MD0:JB HWX_BUSY, MD1 SJMP run2 RET
RUN18B20: MOV SP,#0DFH
MOV DPTR,#TAB1820
MOV A,#00H MOV R1,#0FFH MOV R0,#0FDH LOOP1820: MOV @R1,A DEC R1
DJNZ R0,LOOP1820;内寄存器清零 MOV P0,#0FFH LCALL INITIAL
LOOP1: LCALL GET_TEM LCALL TEM_COV LCALL DISPLAY1820
MT1: LCALL HWX_SCAN SETB ALARM SJMP LOOP1
run1:lcall display1 ;字符显示 ret
SCAN_KEY: SETB P3.4 SETB P3.5 SETB P3.6 SETB P3.7
MOV A, KEY_PORT CPL A
ANL A, #0F0H RET ;读取开关值
CHK_KEY: LCALL SCAN_KEY JZ NO_KEY1
LCALL DELAY100US LCALL SCAN_KEY
皖西学院2014届本科毕业设计(论文)
JZ NO_KEY1
MOV R2, A;保护键值 WAIT1: LCALL SCAN_KEY LCALL DELAY100US
JNZ WAIT1;等待释放 MOV A, R2 KEYACC: NOP
LX: JB ACC.4, SHIFT ;P3.4控制转移 JB ACC.5, ADD_ONE ;p3.5控制加1 JNB ACC.6, LX1 ;p3.6控制减1 LJMP SUB_ONE
LX1: JNB ACC.7,NO_KEY1
LJMP SETUP ; 距离太长,跳转不到 p3.7控制确定按键 NO_KEY1: RET
SHIFT: NOP
SETB KEY_BUSY SFT1: MOV A, KEY_CNT ; 开关状态,根据此状态,确定修改相应值 RL A MOV KEY_CNT,A MOV A, KEY_CNT JB ACC.0, TO_YX1 JB ACC.1, TO_MX1 JB ACC.2, TO_DX1 JB ACC.3, TO_WX1 JB ACC.4, TO_HX1 JB ACC.5, TO_MNX1 JB ACC.6, TO_SX1 JB ACC.7, X0 X0: mov key_cnt, #80h RET
TO_YX1:MOV COM,#83H
LCALL LCD_W_CMD;光标根据开关状态跟踪地址 RET
TO_MX1:MOV COM,#86H
LCALL LCD_W_CMD RET
TO_DX1:MOV COM,#89H
LCALL LCD_W_CMD
25
基于单片机的电器遥控器设计
RET
TO_WX1:MOV COM,#0CFH LCALL LCD_W_CMD RET
TO_HX1:MOV COM,#0C3H
LCALL LCD_W_CMD RET
TO_MNX1:MOV COM,#0C6H LCALL LCD_W_CMD RET
TO_SX1:MOV COM,#0C9H
LCALL LCD_W_CMD RET
ADD_ONE:MOV A, KEY_CNT
JB ACC.0, TO_YR1 JB ACC.1, TO_MO1 JB ACC.2, TO_DA1 JB ACC.3, TO_WK1 JB ACC.4, TO_H1 JB ACC.5, TO_M1 JB ACC.6, TO_S1 JB ACC.7, X1 X1: mov key_cnt, #80h RET
TO_YR1: MOV A, YEAR ADD A, #01H DA A
MOV YEAR, A LCALL DISPLAY2 RET
TO_MO1: MOV A, MONTH ADD A, #01H DA A
MOV MONTH, A
CJNE A, #13H, TO_MO11
;根据开关状态去去对应操作