智能时控开关设计讲解_第1页
智能时控开关设计讲解_第2页
智能时控开关设计讲解_第3页
智能时控开关设计讲解_第4页
智能时控开关设计讲解_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、I 智能时控开关设计智能时控开关设计 摘要摘要 本系统通过单片机的定时器功能,利用 8279 键盘及显示功能,实现了 5 路 开关的时控功能。通过 8279 控制的键盘 0-9 输入调节时间的数字键,A 为启动 定时器,B 设置时间,C 时间清零,D 停止,E 通过外部干预停止提示,F 设置 开关通道和开关时间。通过设置定点时间的子程序中添加判断语句实现开关选 中有 LED 亮灯提示;定点到达通过显示程序添加判断语句实现 LED 闪烁提示, 使得程序简洁。合理利用定时中断 T0 中断程序控制 P1.5 输出 1kHz 方波控制蜂 鸣器鸣叫提示。外部干预后 LED 灭,蜂鸣器停止鸣叫。 关键字:

2、关键字:定时器 失控开关 8279 键盘 显示 II 引言引言 随着科学技术和社会经济的迅猛发展,人类社会中自动控制,智能控制越 来越普及,而单片机正是这种技术普及的基础。顺着单片机的生产技术和其本 身的性能的快速提高,以及单片机的价格便宜等因素,单片机被应用于非常广 泛的领域。本文中的智能时控开关就是应用单片机来实现的。主要应用到了单 片机的定时器模块,输入输出模块结合 8279 的键盘输入和显示功能来实现了对 外部 5 路开关的实时控制。 同时,近年来顺着声控开关的广泛应用,其方便人们的同时,缺点也是逐 渐被人们发现。例如外部噪音的存在也会使声控开关点亮电灯,那样会使得开 关的节能性能不是

3、很好。所以人们希望通过实时控制开关来控制电灯。顺着单 片机的功能不断完善和其价格的大众化,使得智能时控开关得到广泛的应用。 与此同时,智能时控开关还能运用于其他很多的领域,所以本文所研究的智能 失控开关具有重要的意义。 本文所应用的基本程序来之实验室的实验系统的帮助文档中的 8279 显示实 验中的时钟功能实验。在基础程序之上进行改进添加自己的元素实现实验的基 本功能。 李晶 2010-6-7 III 目录目录 摘要摘要.I 引言引言.II 1 功能要求功能要求.1 1.1 主要内容 .1 1.2 基本要求 .1 1.3 提高部分 .1 2 准备知识准备知识.2 3 系统设计系统设计.2 3.

4、1 控制端口分配及开关状态定义 .2 3.2 控制键的分配和主要寄存器功能 .3 3.21 按键分配 .3 3.22 寄存功能 .3 3.3 程序设计.3 3.31 主程序的设计 .3 3.32 设置时间的设计 .4 3.33 键盘输入设计 .5 3.34 读键盘子程序 .6 3.35 设置开关时间 .7 3.36 时钟 T1 中断服务程序 .8 3.37 显示的实现 .8 3.38 开关时间到达判断和蜂鸣器 .9 3.39 开关通道置位和灯的闪烁控制 .9 4 主要参数的计算主要参数的计算.10 5 实验仿真实验仿真.10 6 实验程序实验程序.11 6 功能扩展功能扩展.23 7 参考文献

5、参考文献.23 8 附录附录.24 1 1 功能要求功能要求 1.11.1 主要内容主要内容 利用单片机中的定时器、IO 接口、中断系统等资源,设计一智能时控开关 系统,能根据时刻信息或倒计时信息对多路开关进行控制。 1.21.2 基本要求基本要求 系统含 24 小时时钟,用数码管可显示小时、分钟及秒时间信息;可通过按 键对时钟进行校准,可对定时时刻或倒计时时间进行设置;定时时间到时,用 发光二极管闪烁及蜂鸣器发声提示。人工干预后停止闪烁及发声,并用发光管 指示开关状态。 1.31.3 提高部分提高部分 可对多路(35 路) 开关进行定时控制;可对每路按多个时间顺序设置开关 控制。 (如:8:

6、00 开,12:00 关,14:00 开,16:00 关;尝试为系统设置语音提示 功能。 2 2 准备知识准备知识 试验箱内部理解图如图 1 所示 图 1 8279 键盘显示电路 在程序中需要用到 8279 的键盘显示功能,那么在做实验之前必须先弄清 楚 8279 的基本功能,8279 的基本功能表见附录 1。通过控制 8279 可以很方便 的实现键盘的输入和 LED 的显示功能。 3 系统设计系统设计 3.13.1 控制端口分配及开关状态定义控制端口分配及开关状态定义 根据题目的要求,需要实现(3-5)路开关的控制,那么需要用到单片机的 输出口,由于实验电路板上面只有 p1 和 p3 口可以

7、外接,其次可以用 p0 口通过 数据锁存器输出控制 LED 灯来表示开关的状态,但是 p0 口的控制需要每次选 通 74LS373 再输出数据,而且访问外部数据存储器只能用寄存器 A,不方便操 作,所以在这里不选用 p0 口;因为 p3 口做一般的输入输出不常用,所以这里 也不选。那么本文用 p1 口的 p1.0-p1.4 四个口实验控制四路开关的状态。用 p1.5 输出方波来控制蜂鸣器的鸣叫。具体分配如表 1 所示 表 1 控制端口分配 P1.0P1.1P1.2P1.3P1.4P1.5 开关 1开关 2快关 3开关 4开关 5蜂鸣器 这里选择 LED 灯的亮和灭来表示开关的状态,为了更明显表

8、示开关状态, 选择 LED 的亮表示开关的开,LED 灯的灭来表示开关的关,因为 p1.1 在单片机 3 复位之后是高电平状态,那么可以再程序的初始化时给 p1 口输出低电平即可方 便实现开关状态的控制。 3.23.2 控制键的分配和主要寄存器功能控制键的分配和主要寄存器功能 3.21 按键分配 在与 8279 相连的键盘上,除了基本的 0-9 十个数字键之外,还有 A-F 六个 键,那么可以通过这六个按键来实现所需要的控制,因为键盘上有 0-9 数字键, 在设置时间时候就可以直接通过按键来设置,不需要用加 1、减 1 的方式来控 制了。通过分析可以知道,实现智能开关的控制,首先需要实现数字时

9、钟的显 示控制功能。那么这里需要的控制键有,时钟起动、设置时间、清零、停止四 个键,需要实现开关的控制,那么开关状态改变时间设置需要一个键,再次外 部干涉需要一个键。所以按键的功能分配如表 2 所示 表 2 按键功能分配 ABCDEF 启动设置时间清零停止外部干预快关时间 3.22 寄存功能 寄存器的分配在整个程序的设计过程中式非常重要的,如果不能分配好寄 存器作用,在整个程序的设计工程中需要在很多的地方用到堆栈保护,那样不 但增加工作量,也使得程序变得冗长,可读性变差。所以,在程序设计之前应 该对程序中用到的主要功能的寄存器进行分配处理。表 3 是本文中的主要的寄 存器的功能分配,在一些小程

10、序中用到的功能这里不列出 表 3 主要寄存器功能 R0R1R2R3R4R5R6R7 开关地 址指针 循环次 数 秒分小时LED 显 示位置 查询偏 移量 产生延 时 3.33.3 程序设计程序设计 主要的程序是由主程序、定时中断程序、设置时间子程序、设置开关 时间子程序、键盘输入子程序、显示子程序等部分组成,下面分别就这几 个部分的设计过程详细介绍 3.31 主程序的设计 主程序主要实现主程序的初始化,8279 的初始化(调用子程序实现) ,设 置定时模式和状态,实现显示(调用显示子程序) ,开定时中断 T1,定时器开 始工作。读键盘的状态(通过子程序调用实现) ,通过查询的方式判断键盘值来

11、实现键盘功能的子程序调用。主程序流程图如图 2 所示 4 图 2 主程序流程图 3.32 设置时间的设计 因为设计时间许要通过键盘来设置,那么就需要调用读键盘子程序来实现 输入的功能,为了能够判断输入的数值是否合法,在键盘输入之程序中都给了 标志位赋值为 0FFH,那么可以通过标志位来判断输入是否合法。因为需要分别 输入时、分、秒的数值,所以需要在每次输入之前判断输入的合法性,如何判 断将在键盘输入子程序里叙述。设置时间子程序流程图如图 3 所示。 5 图 3 设置时间子程序流程图 3.33 键盘输入设计 时间的时、分、秒均是由两位数组成,所以在键盘输入子程序中需要实现 键盘输入,为了响应调用

12、程序,需要在键盘输入完成之前置标志位,如果输入 合法标志位置为:0FFH,如果输入不合法置标志位为 00H,判断输入是否合法 可以通过判断输入的键值是否在需要的数值范围内,键盘输入的之程序流程图 如图 4 所示。 6 图 4 读键盘子程序流程图 3.34 读键盘子程序 键盘输入子程序流程图如图 5 所示 7 图 5 读键盘子程序流程图 3.35 设置开关时间 由于开关时间的设置不需要很高的精度,这里在设置开关的时间时就不需 要设置秒钟的数值了,那么可以把秒钟的位来显示开关的通道数值,当开关通 道被选中时相应的 LED 灯就被点亮,表示现在控制的开关是这个通道,当时间 到达时 LED 灯闪烁提示

13、开关状态改变。设置开关时间的子程序流程图如图 6 所 示 8 图 6 设置开关时间子程序流程图 3.36 时钟 T1 中断服务程序 定时器时钟 T1 用于实现数值时钟,参考单片机课本的时钟的流程图,得 到时钟流程图如图 7 所示 图 7 中断服务程序 3.37 显示的实现 实现显示功能不需要判断,直接从高位到低位的一次进行显示即可,在程 序设计的过程中主要注意设置显示的位置来控制不同的数值显示的位置,单个 键的显示通过调用子程序来实现。显示子程序流程图如图 8 所示 9 图 8 显示子程序流程图 3.38 开关时间到达判断和蜂鸣器 当某个开关的定时时间到达时需要进行处理,那么开关当时时刻是否达

14、到 需要在哪里判断才能满足每次循环都能对定时时间进行判断。因为定时器的时 间是通过定时器 T1 的中断程序完成的,那就说,没秒钟中断程序都需要执行 20 次,所以把开关时间判断放在 T1 的中断服务子程序中是最合适的,即能实 现实时监控,当有需要控制的开关的定时时间达到时候能够迅速判断到。 本文通过定时中断 T0 实现蜂鸣器鸣叫控制。在中断服务程序中对 P1.5 的 电平进行反转,使其鸣叫。只有在开关定时时间到时才开中断,从而实现时间 到达蜂鸣器鸣叫的功能。 3.39 开关通道置位和灯的闪烁控制 为了指示被控制的开关序号,在设置定时时间时就可以设置使相应的 LED 灯变成高电平,表示现在控制的

15、是这个开关。 时间达到时,为了表示开关的状态变化,通过控制 LED 灯的闪烁来表示, 那么在什么地方来控制相应的 P1 口的状态周期性变化。考虑到显示时间子程 序每秒钟要显示 20 次,那么这里把控制 p1 口状态周期性变化的程序放在显 示子程序中能够方便的实现,只需要用一个 CPL 指令就可以实现状态口的周 期性变化来控制 LED 灯的状态。这里通过控制相应的标志位,如果定时时间 到,则设置相应的标志位,实现闪亮 LED 灯控制。 当有外部干预时,不但需要清除 LED 灯的状态,还要清除控制 LED 灯 闪烁的标志,同时还要时定时中断 T0 停止,是蜂鸣器停止鸣叫。 10 4 主要参数的计算

16、主要参数的计算 在整个实验的过程中,由于需要用到两个定时器,其中 T1 用来产生定时 时钟,T0 用来产生控制蜂蜜器的方波。因为实验箱上的 C51 单片机的工作频率 是 11.0592MHz,用来做定时时钟时,最大定时时间是定时器工作在方式 1 时 16 6 12 (20)0.071s 11.0592 10 不能满足 1s 的时间要求,所以只能用循环的方式来实现一秒钟,选择定时器定 时时间为 50ms,中断 20 次为 1s,那么定时器的初值应该为 16 1 6 12 (2)50 s 11.0592 10 Xm 解得=19456,转化为十六进制等于 4C00H。 1 X 同理,定时器 T0 用

17、来产生 1KHz 的方波使蜂鸣器鸣叫,那么应该让定时器 T0 5ms 溢出一次,所以有 16 0 6 12 (2)5 s 11.0592 10 Xm 解得=60928,转化为十六进制等于 FC8FH。 0 X 5 实验仿真实验仿真 为了更好实现实验功能,对实验电路进行了仿真,通过对仿真电路图的调试, 得到比较好的实验结果,仿真电路图如图 9 所示 11 图 9 实验仿真电路图 6 实验程序实验程序 程序中的具体功能在程序的注释中给出,实验程序如下 ;系统晶振是 11.0592 MHz Z8279 EQU 0FF82H ;8279 状态/命令口地址 D8279 EQU 0FF80H ;8279

18、数据口地址 LEDMOD EQU 00H ;左边输入 八位字符显示 ;外部译码键扫描方式,双键互锁 LEDFEQ EQU 2FH ;扫描速率 LEDCLS EQU 0C1H ;清除显示 RAM LEDWR0 EQU 80H ;设定的将要写入的显示 RAM 地址 READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字 SIGN EQU 08H ;00H 设置为输入合法标志位 FLAG EQU 09H KEY0 EQU 00H;开关 1 状态 KEY1 EQU 01H;开关 2 状态 KEY2 EQU 02H;开关 3 状态 KEY3 EQU 03H;开关 4 状态 KEY4 E

19、QU 04H;开关 5 状态 ORG 0000H 12 AJMP START ORG 000BH ;T0 中断程序入口地址 LJMP INT_T0 ORG 001BH ;T1 中断程序入口地址 LJMP INT_T1 ORG 0040H START: MOV SP,#60H LCALL INIT8279 ;初始化 8279 MOV R4,#12H ;时 MOV R3,#33H ;分 MOV R2,#54H ;秒 MOV R1,#20 ;秒 MOV R0 ,#30H ;开关定时时间存储器其始地址 MOV R7 ,#10 CLR KEY0 ;清楚开关状态标志 CLR KEY1 CLR KEY2 C

20、LR KEY3 CLR KEY4 LOOP: MOV R0,#0FFH INC R0 DJNZ R7 ,LOOP MOV P1,#00H SETB SIGN ;标志 MOV TMOD,#11H MOV TL1,#00H MOV TH1,#4CH MOV TL0,#8FH MOV TH0,#0FCH SETB ET0 ;中断允许 SETB PT1 SETB ET1 SETB EA ;允许断 WAIT: LCALL GETKEY ;读键盘 CJNE A,#0FFH,CONT ;判断是否有键输入 MOV A,B ;有键输入 CJNE A,#3CH,KEY_A ;输入键是C,转 CLEAR_T LCA

21、LL CLEAR_T KEY_A: CJNE A,#3AH,KEY_D ;输入键是A,转 START_T LCALL START_T KEY_D: CJNE A,#3DH,KEY_B ;输入键是D,转 STOP_T LCALL STOP_T KEY_B: CJNE A,#3BH,KEY_F ;输入键是B,转 SET_T 13 LCALL SET_T KEY_F: CJNE A,#3FH,KEY_E ;输入键是F,转 DINGSHI_T LCALL DINGSHI_T KEY_E: CJNE A,#3EH,CONT ;输入键是E,转 MONITOR LCALL MONITOR CONT: JNB

22、 SIGN,WAIT ;若无秒标志则循环 LCALL DISPLAY ;显示时间 CLR SIGN ;清标志 SJMP WAIT ;循环 ;实现外部干预子程序 MONITOR:NOP JNB KEY0,L77 CLR P1.0 CLR KEY0 L77: JNB KEY1,L80 CLR P1.1 CLR KEY1 L80: JNB KEY2,L83 CLR P1.2 CLR KEY2 L83: JNB KEY3,L86 CLR P1.3 CLR KEY3 L86: JNB KEY4,L91 CLR P1.4 CLR KEY4 L91: CLR TR0 CLR P1.5 RET SJMP $

23、;时间清零子程序 CLEAR_T:CLR TR1 ;关计数器 MOV R4,#0H ;小时清零 MOV R3,#0H ;分钟清零 MOV R2,#0H ;秒清零 SETB SIGN ;置秒标志 RET ;电子钟计时子程序 START_T:SETB TR1 ;开计时中断 RET 14 ;电子钟停止计时子程序 STOP_T: CLR TR1 ;关计时中断 RET ;设置初值子程序 SET_T: CLR TR1 ;关计数器 MOV R5,#7 LCALL GETWORD ;读小时数 CJNE A,#0FFH,INVALID ;判断输入合法性 MOV A,B ADD A,#232 JC INVALID

24、 ;判断输入小时值 24 MOV A,B MOV B,#10 DIV AB SWAP A ADD A,B MOV R4,A ;保存输入的值 MOV R5,#4 ;读分钟数 LCALL GETWORD CJNE A,#0FFH,INVALID ;判断输入合法性 MOV A,B ADD A,#196 JC INVALID ;判断输入分钟数 60 MOV A,B MOV B,#10 DIV AB SWAP A ADD A,B MOV R3,A ;保存输入的值 MOV R5,#1 ;读秒数 LCALL GETWORD CJNE A,#0FFH,INVALID ;判断输入合法性 MOV A,B ADD

25、A,#196 JC INVALID ;判断输入分钟值 60 MOV A,B MOV B,#10 DIV AB SWAP A ADD A,B MOV R2,A ;保存输入的值 MOV R5,#1 ;读秒数 15 AJMP SET_TOK INVALID:LCALL CLEAR_T ;不合法则时间清零 SET_TOK:LCALL DISPLAY ;显示时间 SETB TR1 RET ;设置定时时间子程序 DINGSHI_T: SETB FLAG MOV R0,#30H MOV DPTR ,#Z8279 MOV A,#LEDCLS ;清除 LED 显示 MOVX DPTR,A MOV R5,#1 L

26、CALL GETWORD ;选择设置定时开关通道 CJNE A,#0FFH,DINGSHI_T ;判断输入合法性 MOV A,B ADD A,#251 JC DINGSHI_T ;判断输入小时值 5 MOV A,B MOV B,#10 DIV AB SWAP A ADD A,B MOV B,#2 MUL AB ADD A,R0 MOV R0,A MOV R5,#7 LCALL GETWORD CJNE A,#0FFH,DINGSHI_T ;判断输入合法性 MOV A,B ADD A,#232 JC DINGSHI_T ;判断输入分钟数 24 MOV A,B MOV B,#10 DIV AB S

27、WAP A ADD A,B MOV R0,A ;保存输入的值 INC R0 MOV R5,#4 ;读秒数 LCALL GETWORD CJNE A,#0FFH,DINGSHI_T ;判断输入合法性 16 MOV A,B ADD A,#196 JC DINGSHI_T ;判断输入分钟值 60 MOV A,B MOV B,#10 DIV AB SWAP A ADD A,B MOV R0,A ;当通道选中时,LED 亮提示通道 被 ;中 MOV A,30H CJNE A,#0FFH,L196 CLR P1.0 ;如果开关 0 选中则 LED0 亮 AJMP L198 L196: SETB P1.0

28、L198: MOV A,32H CJNE A,#0FFH,L199 CLR P1.1 AJMP L203 L199: SETB P1.1 ; 如果开关 1 选中则 LED1 亮 L203: MOV A,34H CJNE A,#0FFH,L202 CLR P1.2 AJMP L207 L202: SETB P1.2 ;如果开关 2 选中则 LED2 亮 L207: MOV A,36H CJNE A,#0FFH,L205 CLR P1.3 AJMP L213 L205: SETB P1.3 ;如果开关 3 选中则 LED3 亮 L213: MOV A,38H CJNE A,#0FFH,L208 C

29、LR P1.4 AJMP SET_TOKD L208: SETB P1.4 ;如果开关 4 选中则 LED4 亮 SET_TOKD: CLR FLAG RET ;读数子程序 GETWORD: WKEY1: LCALL GETKEY ;读键盘 CJNE A,#0FFH,WKEY1 ;无键输入,则再读 17 MOV A,B ADD A,#0C6H JC ERROR1 ;判断输入是否大于 9 MOV A,B SUBB A,#30H JC ERROR1 ;判断输入是否小于 0 MOV R6,A LCALL DISLED ;显示输入的字符 MOV B,#10 MUL AB PUSH ACC ;保存输入的

30、值 WKEY2: LCALL GETKEY ;读键盘 CJNE A,#0FFH,WKEY2 ;无键输入则再读 MOV A,B ADD A,#0C6H ;判断输入是否大于 9 JC ERROR2 MOV A,B SUBB A,#30H ;判断输入是否小于 0 JC ERROR2 DEC R5 MOV R6,A LCALL DISLED ;显示输入的字符 MOV B,A POP ACC ADD A,B MOV B,A ;把得到的值存在 B MOV A,#0FFH ;置合法输入标志 AJMP KEYOK ERROR2: POP ACC ERROR1: MOV A,#0 ;置非法输入标志 KEYOK:

31、 RET ;8279 初始化子程序 INIT8279: PUSH DPH ;保存现场 PUSH DPL PUSH ACC LCALL DELAY ;延时 MOV DPTR ,#Z8279 MOV A,#LEDMOD ;置 8279 工作方式 MOVX DPTR,A MOV A,#LEDFEQ ;置键盘扫描速率 MOVX DPTR,A MOV A,#LEDCLS ;清除 LED 显示 18 MOVX DPTR,A POP ACC ;恢复现场 POP DPL POP DPH RET ;读取键盘子程序 ;有输入则输出: B: 读到的键码 A: 按键的标志 0FFH GETKEY: PUSH DPH

32、;保存现场 PUSH DPL PUSH PSW MOV DPTR,#Z8279 MOVX A,DPTR ;读 8279 状态 ANL A,#07H ;屏蔽 D7-D3 JNZ GETVAL ;判断是否有键输入 MOV A,#0H ;置标志(无键输入) SJMP NKBHIT GETVAL: MOV A,#READKB ;读 FIFO RAM 命令 MOVX DPTR,A MOV DPTR,#D8279 MOVX A,DPTR ;读键 ANL A,#3FH ;屏蔽 SHIFT 和 CTRL 键 MOV DPTR,#KEYCODE ;键码表起始地址 MOVC A,A+DPTR ;查表 MOV B,

33、A ;置返回键值 MOV A,#0FFH ;置标志(有键输入) NKBHIT: POP PSW ;恢复现场 POP DPL POP DPH RET ;显示字符子程序 ;输入: R5,位置 R6,值 DISLED: PUSH DPH ;保存现场 PUSH DPL PUSH ACC MOV A,#LEDWR0 ;置显示起始地址 ADD A,R5 ;加位置偏移量 MOV DPTR,#Z8279 MOVX DPTR,A ;设定显示位置 MOV DPTR,#LEDSEG ;置显示常数表起始位置 MOV A,R6 MOVC A,A+DPTR ;查表 MOV DPTR,#D8279 19 MOVX DPTR

34、,A ;显示数据 POP ACC ;恢复现场 POP DPL POP DPH RET ;延时子程序 DELAY: PUSH 7 ;保存现场 PUSH 1 MOV R7,#0H DELAY1: MOV R1,#0H DJNZ R1,$ DJNZ R7,DELAY1 POP 1 ;恢复现场 POP 7 RET ;定时器中断服务子程序 INT_T1: ;保护现场 PUSH PSW PUSH ACC PUSH DPL PUSH DPH CLR TR1 ;关中断 MOV TMOD,#11H MOV TL1,#00H ;50ms 毫秒定时常数 MOV TH1,#4CH DJNZ R1,JUDGE MOV

35、R1,#20 CJNE R2,#59H,SEC CJNE R3,#59H,MIN CJNE R4,#23H,HOUR MOV R2,#00 MOV R3,#00 MOV R4,#00 AJMP JUDGE SEC: MOV A,R2 ADD A,#1 DA A MOV R2,A AJMP JUDGE MIN: MOV A,R3 20 ADD A,#1 DA A MOV R3,A MOV R2,#00 AJMP JUDGE HOUR: MOV A,R4 ADD A,#1 DA A MOV R4,A MOV R2,#00 MOV R3,#00 ;判断定时是否到 JUDGE: ;判断开关 1 MOV

36、 A,R4 CJNE A,30H,JUDGE_KEY1 MOV A,R3 CJNE A,31H,JUDGE_KEY1 SETB KEY0 MOV 30H,#0FFH MOV 31H,#0FFH SETB TR0 JUDGE_KEY1: MOV A,R4 ;判断开关 2 CJNE A,32H,JUDGE_KEY2 MOV A,R3 CJNE A,33H,JUDGE_KEY2 SETB KEY1 MOV 32H,#0FFH MOV 33H,#0FFH SETB TR0 JUDGE_KEY2: MOV A,R4 ;判断开关 3 CJNE A,34H,JUDGE_KEY3 MOV A,R3 CJNE

37、A,35H,JUDGE_KEY3 SETB KEY2 MOV 34H,#0FFH MOV 35H,#0FFH SETB TR0 JUDGE_KEY3:MOV A,R4 ;判断开关 4 CJNE A,36H,JUDGE_KEY4 MOV A,R3 21 CJNE A,37H,JUDGE_KEY4 SETB KEY3 MOV 36H,#0FFH MOV 37H,#0FFH SETB TR0 JUDGE_KEY4: MOV A,R4 ;判断开关 5 CJNE A,38H,EXIT_INT MOV A,R3 CJNE A,39H,EXIT_INT SETB KEY4 MOV 38H,#0FFH MOV

38、 39H,#0FFH SETB TR0 RET ;显示时间 EXIT_INT: JB FLAG ,L431 LCALL DISPLAY ;恢复现场 L431: SETB TR1 POP DPH POP DPL POP ACC POP PSW RETI ;中断返回 ;定时器 0 产生蜂鸣器的频率 INT_T0: CLR TR0 MOV TMOD ,#11H MOV TL0,#67H MOV TH0,#0FCH SETB TR0 CPL P1.5 ; RETI ;显示时分秒 DISPLAY: MOV A,R4 ANL A,#0FH 22 MOV R6,A MOV R5,#6 LCALL DISLED ;显示小时低位 MOV A,R4 SWAP A ANL A,#0FH MOV R6,A MOV R5,#7 LCALL DISLED ;显示小时高位 MOV A,R3 ANL A,#0FH MOV R6,A MOV R5,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论