┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |
;==============================================================================
;INT0中断处理程序:对接收数据进行接收
;==============================================================================
JISH_INT0:
PUSH ACC
PUSH PSW
CLR EX0 ;关断中断
MOV R6,#10 ;避开9MS时间的引导码
SB: CALL DY882US
JB P3.2,EXIT ;,EX检测为1时退出
DJNZ R6,SB ;检测为0时,引导码过
JNB P3.2,$; ;检测为0时,等待
ACALL DY4700US ;避开4。5MS时间的引导码
MOV R7,#16 ;避开系统码
JJJJA: JNB P3.2,$
LCALL DY882US
MOV C,P3.2 ;将P3.2送C中
JNC UUUA ;若C=0则转
LCALL DY1000US
UUUA: DJNZ R7,JJJJA
MOV R1,#MRD
MOV R2,#2
PP: MOV R3,#8 ;右移的次数
JJJJ: JNB P3.2,$ ;=0则等
LCALL DY882US
MOV C,P3.2 ;送C中
JNC UUU
LCALL DY1000US
UUU: MOV A,@R1 ;送存贮的首址
RRC A
MOV @R1,A ;送存贮单元中
DJNZ R3,JJJJ ;完成一个字节,没完则
INC R1
DJNZ R2,PP
MOV A,MRD
CPL A
CJNE A,31H,EXIT ;进行数据码和数据的反码进行比较
EXIT: POP PSW
POP ACC
SETB LREC ;置REC的标志位
SETB EX0 ;打开INT0的中断
RETI
;==============================================================================
;INT1的中断处理
;==============================================================================
KEY_INT1:
PUSH ACC
PUSH PSW
CLR EX1 ;关断INT1
LCALL SCANKEY
CALL KEY_K10 ;置高、中、低的标志位
CALL FENG_3 ;置风类的标志位
CALL JS ;置定时时间标志位
SETB LKEYON ;按键标志位
SETB EX1 ;打开中断位
POP PSW
POP ACC
RETI
;------------------------------------------------------------------------------
;定时的置位标志程序
;------------------------------------------------------------------------------
JS:
CLR SJ00
CLR SJ01
CLR SJ02
CLR SJ03
MOV A,MRD
CJNE A,#04H,KEY_K4D ;
INC TIME
MOV A,TIME
CJNE A,#5,KEY_K4
MOV TIME,#1
KEY_K4:
MOV A,TIME
CJNE A,#1,KEY_K4A ;等1则置ZRF
SETB SJ00
JMP KEY_K4D
KEY_K4A:
CJNE A,#2,KEY_K4B ;等2则置SMF
SETB SJ01
JMP KEY_K4D
KEY_K4B:
CJNE A,#3,KEY_K4C ;等3则置ZCF
SETB SJ02
JMP KEY_K4D
KEY_K4C:
CJNE A,#4,KEY_K4D ;等3则置ZCF
SETB SJ03
JMP KEY_K4D
KEY_K4D:
RET
;------------------------------------------------------------------------------
;高中低档的置标志位子程序
;------------------------------------------------------------------------------
KEY_K10:
CLR DANG01
CLR DANG02
CLR DANG03
MOV A,MRD
CJNE A,#01H,KEY_K1C ;
INC FENG
MOV A,FENG
CJNE A,#4,KEY_K1
MOV FENG,#1
KEY_K1:
MOV A,FENG
CJNE A,#1,KEY_K1A
SETB DANG01
JMP KEY_K1C
KEY_K1A:
CJNE A,#2,KEY_K1B
SETB DANG02
JMP KEY_K1C
KEY_K1B:
CJNE A,#3,KEY_K1C
SETB DANG03
JMP KEY_K1C
KEY_K1C:
RET
;------------------------------------------------------------------------------
;自然风、睡眠风、正常风的置标志位子程序
;------------------------------------------------------------------------------
FENG_3:
CLR ZRF
CLR SMF
CLR ZCF
MOV A,MRD
CJNE A,#03H,KEY_K3C ;
INC FLEI
MOV A,FLEI
CJNE A,#4,KEY_K3
MOV FLEI,#1
KEY_K3:
MOV A,FLEI
CJNE A,#1,KEY_K3A ;等1则置ZRF
SETB ZRF
JMP KEY_K3C
KEY_K3A:
CJNE A,#2,KEY_K3B ;等2则置SMF
SETB SMF
JMP KEY_K3C
KEY_K3B:
CJNE A,#3,KEY_K3C ;等3则置ZCF
SETB ZCF
JMP KEY_K3C
KEY_K3C:
RET
;==============================================================================
;扫描键盘程序。
;==============================================================================
SCANKEY:
MOV A,P1
CPL A
ANL A,#0FH
MOV R2,A ;将行号存入R2中
MOV P1,#0F0H ;将列置输入端
MOV A,P1
CPL A
ANL A,#0F0H ;取列号并存入A中
MOV R1,#03H ;置列初号
MOV R3,#03H ;置循环次数
CLR C
PINT01: RLC A ;取列号
JC PINT01
DEC R1
DJNZ R3,PINT01
PINT02: MOV A,R2 ;取行号
MOV R2,#00H
MOV R3,#03H ;置循环次数
PINT03: RRC A
JC PINT04
INC R2
DJNZ R3,PINT03
PINT04: MOV A,R2
CLR C
RLC A
RLC A
ADD A,R1
MOV MRD,A ;键号存于MRD单元中
RET
;==============================================================================
DY20MS:
MOV 53H,#8AH
DELAY_0:
PUSH 53H
DELAY_1:
DJNZ 53H,DELAY_1
POP 53H
DJNZ 53H,DELAY_0
RET
;==============================================================================
DY6S:
MOV R7,#12H
DEYLAY_00:
MOV 53H,#0DDH
DELAY_11:
PUSH 53H
DELAY_22:
DJNZ 53H,DELAY_22
POP 53H
DJNZ 53H,DELAY_11
DJNZ R7,DEYLAY_00
RET
;==============================================================================
DY8S: MOV R7,#16
DEYLAY_33:
MOV 53H,#0DDH
DELAY_44:
PUSH 53H
DELAY_55:
DJNZ 53H,DELAY_55
POP 53H
DJNZ 53H,DELAY_44
DJNZ R7,DEYLAY_33
RET
;==============================================================================
DY10S: MOV R7,#20
MOV R7,#12H
DEYLAY_66:
MOV 53H,#0DDH
DELAY_77:
PUSH 53H
DELAY_88:
DJNZ 53H,DELAY_88
POP 53H
DJNZ 53H,DELAY_77
DJNZ R7,DEYLAY_66
RET
;==============================================================================
DY882US:MOV R4,#20
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
DY1000US:
MOV R4,#2
D3: MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
DY4700US:
YS2: MOV R4,#10
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
END
┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |