收藏 分享(赏)

智能插座程序.docx

上传人:cjc2202537 文档编号:214452 上传时间:2018-03-24 格式:DOCX 页数:13 大小:77.65KB
下载 相关 举报
智能插座程序.docx_第1页
第1页 / 共13页
智能插座程序.docx_第2页
第2页 / 共13页
智能插座程序.docx_第3页
第3页 / 共13页
智能插座程序.docx_第4页
第4页 / 共13页
智能插座程序.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、ORG 0000HLJMP MAINORG 000BHLJMP TIMEORG 1000HHOUR1 EQU 10hHOUR2 EQU 12hMIN1 EQU 14hMIN2 EQU 16hSEC1 EQu 18HCOUNT EQU 20HNUM1 EQU 22HNUM2 EQU 24HLL4 EQU 26Hs1 bit P1.0s2 bit P1.1s3 bit P1.2s4 bit P1.3A1 EQU 36HA2 EQU 38HB1 EQU 40HB2 EQU 42HWELA bit P1.6DULA bit P1.7C1 EQU 48HC2 EQU 50HD1 EQU 52HD2 EQ

2、U 54HF1 EQU 56HE1 EQU 58HTIMEEPRO EQU 60HMAIN: MOV SP,#50H ;SP初始化MOV P3,#0FFH ;端口初始化START: MOV HOUR1,#00H ;初始化的时间变量MOV MIN1,#00HMOV SEC1,#00HMOV HOUR2,#01H ;初始化定时变量MOV MIN2,#00HMOV COUNT,#00H ;初始化计时变量MOV NUM1,#00H ;初始化按键计数变量MOV NUM2,#00HMOV TMOD,#01H ;16位计数器MOV TH0,#0D8H ;赋初值MOV TL0,#0EFHSETB ET0 ;中

3、断允许SETB EASETB TR0 ;启动 T0LOOP: MOV A,NUM2JNZ LOOP1 ;A不为 0时转移LCALL DISPLAY1 ;显示当前时间LCALL KEYTIME ;调用时间调整子程序LCALL SETTIME ;调用定时设置子程序LJMP LOOPLOOP1: LCALL DISPLAY2 ;显示定时时间LCALL KEYTIME ;调用时间调整子程序LCALL SETTIME ;调用定时设置子程序LJMP LOOP;SETTIME PROGRAMSETTIME: ;定时设置子程序LL1: JB S2,LL3 ;P1.1=1时转移LCALL DELAY5 ;延时

4、5mSMSTOP1: JB S2,LL3 ;P1.1=0时转移MOV C,S2JNC MSTOP1 ;P1.1=0时转移INC NUM2 ;按键计数变量加 1MOV A,NUM2CJNE A,#1H,LL2 ;判断按键计数是否为1CLR TR0 ;定时器中断关闭LL2: CJNE A,#3,LL ;判断按键计数是否为3MOV NUM2,#0 ;按键计数变量清 0SETB TR0 ;定时器中断打开LL: LCALL DISPLAY2 ;显示定时时间LL3: MOV A,NUM2 ;A为 0时转移JZ LL5JB S3,KK2 ;P1.2=1时转移LCALL DELAY5 ;延时 5MSKK1:

5、JB S3,KK2 ;P1.2=1时转移MOV C,S3JNC KK1 ;P1.2=0时转移MOV A,NUM2CJNE A,#1,MM1 ;判断按键计数是否为1INC HOUR2 ;小时定时变量加 1MOV A,HOUR2CJNE A,#24,MM1 ;判断小时定时变量是否为 24MOV HOUR2,#0 ;小时定时变量为 24则复位 0LCALL DISPLAY2 ;显示定时时间MM1: LCALL DISPLAY2 ;显示定时时间MOV A,NUM2CJNE A,#2,kk2 ;判断按键计数是否为2INC MIN2MOV A,MIN2CJNE A,#60,KK2 ;分钟定时变量是否为 6

6、0MOV MIN2,#0 ;分钟定时变量为 60复位0LCALL DISPLAY2 ;显示定时时间KK2: LCALL DISPLAY2JB S4,LL5 ;P1.3=1时转移LCALL DELAY5 ;延时 5MSKK3: JB S4,LL5 ;P1.3=1时转移MOV C,S4JNC KK3 ;P1.3=0时转移MOV A,NUM2CJNE A,#1,MM2 ;判断按键计数是否为1DEC HOUR2 ;小时定时变量减 1MOV A, HOUR2CJNE A,#0,MM2MOV HOUR2,#24LCALL DISPLAY2MM2: LCALL DISPLAY2MOV A,NUM2CJNE

7、A,#2,LL5 ;判断按键计数是否为2DEC MIN2MOV A,MIN2CJNE A,#0,LL5MOV MIN2,#60 ;显示定时时间LL5: LCALL DISPLAY2RET;KEYTIME PROGRAMKEYTIME: ;时间调整子程序L1: JB S2,L3 ;P1.0=1时转移LCALL DELAY5 ;延时 5MSMSTOP2: JB S2,L3 ;P1.0=1时转移MOV C,S2JNC MSTOP2 ;P1.0=0时转移INC NUM1MOV A,NUM1CJNE A,#1,L2 ;判断按键计数是否为 1CLR TR0 ;定时器中断关闭L2: CJNE A,#4,L3

8、 ;判断按键计数是否为 4MOV NUM1,#0SETB TR0 ;定时器中断打开L3: MOV A,NUM1JNZ FF ;A不为 0时转移LJMP L5FF: JB S3,K2 ;P1.2=1时转移LCALL DELAY5 ;延时 5MSK1: JB S3,K2 ;P1.2=1时转移MOV C,S3JNC K1 ;P1.2=0时转移MOV A,NUM1CJNE A,#1,M1 ;判断按键计数是否为1INC HOUR1 ;小时设置加 1MOV A,HOUR1CJNE A,#24,M1MOV HOUR1,#0LCALL DISPLAY1 ;显示调整时间M1: LCALL DISPLAY1MOV

9、 A,NUM1CJNE A,#2,M2 ;判断按键计数是否为2INC MIN1CJNE A,#60,M2MOV MIN1,#0LCALL DISPLAY1 ;显示调整时间M2: LCALL DISPLAY1MOV A,NUM1CJNE A,#3,K2 ;判断按键计数是否为 3INC SEC1MOV A,SEC1CJNE A,#60,K2MOV SEC1,#0LCALL DISPLAY1 ;显示调整时间K2: LCALL DISPLAY1JB S4,L5 ;P1.3=1时转移LCALL DELAY5 ;延时 5MSK3: JB S4,L5 ;P1.3=1时转移MOV C,S4JNC K3 ;P1

10、.3=0时转移MOV A,NUM1CJNE A,#1,M3 ;判断按键计数是否是1DEC HOUR1MOV A,HOUR1CJNE A,#0,M3MOV HOUR1,#24LCALL DISPLAY1 ;显示调整时间M3: LCALL DISPLAY1MOV A,NUM1CJNE A,#2,M4 ;判断按键计数是否为2DEC MIN1MOV A,MIN1CJNE A,#0,M4MOV MIN1,#60LCALL DISPLAY1 ;显示调整时间M4: LCALL DISPLAY1MOV A,NUM1CJNE A,#3,L5 ;判断按键计数是否为3INC SEC1CJNE A,#0,L5MOV

11、SEC1,#60L5: LCALL DISPLAY1 ;显示调整时间RET;TIMEPRO PROGRAMTIMEPRO:MOV R7,#50H ;继电器吸合子程序CLR P2.6LCALL DELAYN ;延时 50MSSETB P2.6LCALL DELAYNAJMP TIMEPRO;DISPLAY1 PROGRAMDISPLAY1: ;显示子程序 1PUSH ACC ;保护现场MOV A,HOUR1 ;将时间的十位和个位分别赋给显示变量MOV B,#10DIV ABMOV A1,AMOV B1,BMOV A,MIN1MOV B,#10DIV ABMOV C1,AMOV D1,BMOV A

12、,SEC1MOV B,#10DIV ABMOV E1,AMOV F1,BMOV DPTR,#TABLE ;指向七段编码表首地址CLR DULA ;关闭段选锁存器锁存端CLR WELA ;关闭位选锁存器锁存端MOV P0,#0FEH ;选择第一位数码管SETB WELA ;打开位选锁存器锁存端CLR WELALCALL DELAY5CLR DULAMOV A,B1MOVC A,A+DPTRMOV P0,A ;显示小时个位SETB DULA ;打开段选锁存器锁存端CLR DULACLR WELAMOV P0,#0FDH ;选择第二位数码管SETB WELA ;打开位选锁存器锁存端CLR WELAL

13、CALL DELAY5CLR WELALCALL DELAY5CLR DULAMOV A,C1MOVC A,A+DPTRMOV P0,A ;显示分钟十位SETB DULACLR DULACLR WELAMOV P0,#0FBH ;选择第三段数码管SETB WELACLR WELALCALL DELAY5CLR DULA ;关闭段选锁存器锁存端MOV A,D1MOVC A,A+DPTRMOV P0,A ;显示分钟个位SETB DULACLR DULACLR WELAMOV P0,#0F7H ;选择第四位数码管SETB WELACLR WELALCALL DELAY5CLR DULAMOV A,E

14、1MOVC A,A+DPTRMOV P0,A ;显示秒钟十位SETB DULACLR DULACLR WELA ;关闭位选锁存器锁存端MOV P0,#0EFH ;选择第五位数码管SETB WELA ;打开位选锁存器锁存端CLR WELALCALL DELAY5CLR DULA ;关闭段选锁存器锁存端MOV A,F1MOVC A,A+DPTRMOV P0,A ;显示秒表个位SETB DULACLR DULACLR WELAMOV P0,#0DFH ;关闭位选锁存器锁存端SETB WELACLR WELALCALL DELAY5POP ACC ;恢复现场RET;DISPLAY2 PROGRAMDISPLAY2: ;显示子程序 2PUSH ACC ;保护现场MOV A,HOUR2 ;将时间的十位和个位分别赋给显示变量MOV B,#10DIV ABMOV A2,AMOV B2,BMOV A,MIN2MOV B,#10DIV ABMOV C2,AMOV D2,BMOV DPTR,#TABLE ;指向 7段编码表首地址CLR DULA ;关闭段选锁存器锁存端MOV A,A2MOVC A,A+DPTRMOV P0,ASETB DULACLR DULA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报