单片机自动控制打铃系统设计.doc_第1页
单片机自动控制打铃系统设计.doc_第2页
单片机自动控制打铃系统设计.doc_第3页
单片机自动控制打铃系统设计.doc_第4页
单片机自动控制打铃系统设计.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

单片机自动控制打铃系统,是以一片8位单片机为核心的实时时钟及控制系统.我们知道单片机的外接石英晶体震荡器能提供稳定、准确的基准频率,并经12分频后向内部定时器提供实时基准频率信号,设定定时器工作在中断方式下,连续对此频率信号进行分频计数,便可得到秒信号,再对秒信号进行计数便可得到分、时等实时时钟信息.如果石英晶体震荡器的频率信号为6MHZ,设定定时器定时器工作在方式1下,定时器为3CB0H,则定时器每100ms产生1次中断,在定时器的中断定时处理程序中,每10次中断,则向秒计数器加1,秒计数器计数到60则向分计数器进位(并建立分进位标志),分计数器计数到60,则向时计数器进位,如此周而复始的连续技术,便可获得时、分、秒的信号,建立一个实时时钟.接下来便可以进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间(小时与分、存放在RAM中)与信息时间表上的作息时间(小时与分,存放在ROM)是否相同,如有相同者,则进行报时处理并控制打铃,如有不相同则返回主程序,如此便实现了报时控制的要求.2.2 ISP下载电缆的电路及程序设计简介能实现ISP功能的硬件电路,通常被称为“下载电缆”。ATMEL公司推出的AT89S51/52单片机就具有ISP功能。用计算机并行口实现ISP功能,在电路设计上非常灵活。(1)下载电缆的电路设计:计算机并行接口共有25个口线,主要包括数据端口D0D7(端口地址为378H,用于数据输出);状态端口Busy、nAck、PE、Select、nError(端口地址为379H,用于数据输入);控制端口nSelin、nlnit、nStrobe(端口地址为37AH,用于输出控制)。从中选出4个口线来模拟ISP所需的引脚,就非常灵活,只需考虑数据的输入、输出方向及操作方便即可。但要注意同一端口的数据方向必须一致,例如数据端口是8位同时操作的,只能全部作为输入或输出,而不能将一部分做输入,另一部分做输出。下载电缆的电路如图附件一所示。该电路主要包括并行接口电路、驱动隔离电路和JTAG接口电路3大部分,这里只所以说JTAG接口电路,是因为ISP传输虽然在协议上符合SPI协议,但引脚是按照JTAG标准而定义的,它们的对应关系如下:TCK对应SCK,D0对应MOSI,TMS对应RST,TDO对应MISO。(2)并行接口电路该电路是按计算机并行口标准定义的,在电路中采用nStrobe模拟TCK,用D0模拟TDI,用nSelin模拟TMS。用nACK模拟TDO。这样的定义方法就决定了TCK时钟和TMS的产生要由并行口的控制端口产生;TDI由并行口的数据端口产生,TDO要由状态端口获取,不同的端口操作地址不同,涉及程序的编写。这些对应关系见表:并行口引脚并行口端口地址nACK379HD0378HnSelin37AHnStrobe37AH(3)驱动隔离电路该电路采用74HC244作为驱动隔离芯片。74HC244具有2组驱动器,分别由1G和2G控制使用。当控制引脚为低电平时,A到Y通路,可以进行数据传输,当控制引脚为高电平时A到Y相当断路,起到隔离作用。图中R1R14为限流电阻,防止电流过大烧毁驱动器芯片,R15R18为上拉电阻,确保空闲时各个点的电平状态。第三章 设计内容及要求3.1 设计要求 设计一作息时间自动打铃控制系统,要求: 1、走时准确,日误时时钟的时、分、秒,用24小时制进行计时. 3、具有调节和校对时间的功能. 4、作息时间预制功能,最差1S. 2、用6个数码显示实多可以预制36个打铃报时点. 5、具备定时打铃输出的功能. 6、掉电时有备用电池继续走时,不能停机.3.2 硬件设计、单片机选用AT89S51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,并支持在线编程技术,设计时无需外接程序存储器,样品可以直接与PC机连机下载程序,为设计和调试带来极大方便.、LED显示系统:6位LED数码管从左至右依次显示时2位、分2为、秒2位,采用24小时制计时.设计时可利用单片机的P0口和P1口作为时钟信号输出,经驱动芯片后驱动数码管显示时间,LED采用动态方式显示.、键盘系统:设置4个程序按键,包括:选择键、调节键、打铃时间设定键、铃声选择键,键盘系统可由P2口构成.另需配置一个非程序按键:系统复位键.选择键:按动选择键,可以选择小时、分钟或回复正常走时,选定的内容快速闪烁.调节键:按一次调节键,所选定的内容加1,长按调节键(按下的时间超过1秒钟以上),则所选定的内容按每秒钟增加10的速度快速增加.当分钟增加到59、小时增加到23时,自动回到0,再丛开始增加.打铃时间设定键:将数码管的显示从走时状态转换到打铃时间设定状态,并根据所按该键的次数,显示相应的打铃时间编组号.然后可以用选择键和调节键设定或修改该组的打铃时间.铃声选择键:从两种不同的打铃输出方式中选择一种铃声输出.、电源供电系统:本系统采用220V的电源供电,应设计响应的稳压电源电路.当220V停电时,由备用电池向单片机供电,为了延长电池的工作时间,只需维持实时时钟的运行和计时,而耗电量较大的数码管显示系统和输出驱动等电路应停止工作.、打铃输出控制:当实时时钟运行到报时点对应的时间时,应输出控制信号,一路信号使本系统的一个发光而极管发光,起提示作用;另一路信号通过继电器去控制电铃,使电铃自动打铃.打铃的铃声分两种:1种是连续响铃,持续时间为10秒;另一种断续响铃,停1秒钟,持续时间也是10秒.本系统的工作流程、时间显示:通电或系统复位后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间.、时间校对:用选择键和调节键来调节时间.第一次按选择键时,小时的两位数快速闪烁,这时可以用调节键来修改小时数.第二次按选择键时,分钟的两位数快速闪烁,这时可以用调节键来修改分钟数.第三次按选择键时,退出时间校对状态,按新的设定时间修复走时.用调节键来修改所选定的内容时,则每按一次调节键,所选定的内容加1,长按调节键(按下的时间超过1秒以上),则所选的内容按每秒增加10的速度快速增加.当分钟增加到59、小时增加到23时,自动回复到0,再从开始增加.时钟设置正确后,再次按选择键(即第三次按选择键),时间校对从00开始计时.如在时间校对过程中,超过30秒时钟时间没按任何按键,则自动恢复原来的时间走时和显示.、打铃时间设置:用户最多可以设定32组自动打铃时间点,当按动打铃时间设定键后,数码管显示01 * *,其中01(前2位)表示报时点的组别,其值从02到32,第三、四位为打铃时间的小时数,第五、六为打铃时间的分钟数.第一次按打铃时间设定键时,则显示01 ,01则表示第一组报时点, 表示该组的报时时间还未设置,为无效状态,此时可以用选择键、调节键来设置该组的打铃时间:如显示的为01 * *(*表示具体是时间数据),表明该组的打铃时间已经设置,此时也可以用选择键、调节键来更改该组的打铃时间.当该组的打铃时间设置或更改完毕,按动打铃时间设定键,可将该组的打铃时间数据存入RAM中,同时组别数据加1,如显示02 * *或02 ,然后可以对第二组的打铃时间数据进行修改或设置,再次按动打铃时间设定键,则将第二组打铃时间存储起来,显示变为03 * *或03 ,再对第三组的打铃时间进行修改和设置,依次类推,直到设置完毕.当某一组别的打铃时间显示为* (则未设置,为无效组别),而继续按打铃时间设定键,则该组的数据不存储,退出打铃时间设置状态,恢复实时始终走时和显示状态.、打铃时间的查询和消除:按动打铃时间设定键,可以对各组已设置的打铃时间进行查看,如有错误,则可用上述方法进行修改.如果清楚某组的打铃时间,先用打铃时间设定键找到并显示该组的打铃时间,再用选择键、调节键将该组的打铃时间设定为* 00 00.再次按动打铃时间设定键,则可清除该组的时间数据,而后面的各组时间数据的组别依次往前移一位,保证各打铃时间之间不出现空组别或无效组别.如:清除第7组数据后,第8组数据就移至第7组,第9组的数据移至第8组在时间校对、打铃时间设置、查询与修改过程中,超过30秒钟没按任何一个有效按键,则自动恢复原来的时间走时和显示.、打铃的铃声类别设置:在打铃时间设置过程中,可以用铃声选择键来设置打铃的铃声类别.在设置某组别的打铃时间时,默认铃声为连续铃声,即不按铃声选择键时为连续铃声.用此方法可以对每组打铃时间的铃声进行设置或更改.不同的铃声用两个发光二极管进行指示.3.3 软件设计、系统资源分配:为了便于程序的设计、阅读及修改,需要先对系统的存储器资源进行分配和说明.、软件流程:根据上述工作流程和设计要求,软件设计可以分为以下几个功能模块:、主程序:初始化及键盘控制.、计时程序模块:为定时器0中断服务子程序,完成刷新计时缓冲区的功能.、时间校对模块:完成实时时钟的时间设定.、打铃时间设置模块:完成打铃时间的设置与清除.、显示程序模块:完成6位LED数码管的动态显示.、键盘扫描程序模块:判断是否有键按下,并求取键号.、定时比较程序模块:判断报时时间是否,如时间到,则启动打铃处理程序.、打铃程序模块:设置两种不同的打铃模式,并选择其一输出.、其他辅助功能程序:如选择键处理、调节键处理、打铃时间设定键处理等键盘设置程序;拆字、合字处理程序等.第四章 程序设计4.1 系统资源分配4.1.1 为方便阅读程序,先对系统的资源分配加以说明。1)定时器。定时器0用作时钟定时,按方式1工作,每隔100ms溢出中断一次。2)片内RAM及标志位的分配与定义见下表:地 址功 能名 称初始化2320H计时缓冲区,小时23H,分22H,秒21H,100ms20HHOUR,MINSEC,MSEC00H2FH2AH显示缓冲区计时状态:2FH小时十位,2EH小时个位,2DH分十位,2CH分个位,2BH秒十位,2AH秒个位打铃设定状态:2FH组别十位,2EH组别个位,2BH分十位,2AH分十位。DISP0P500H30H6FH用户打铃时间存储器(时,分)每个打铃时间点占两个字节,低字节小时,高字节分钟。32个报时点共占64字节,小时字节的最高存储铃声选择状态:0-连续打铃,1-断续打铃AHOURAMIN00H70H7FHF0(B.0)F1(B.1)F2(B.2)F3(B.3)堆栈区共16个字节打铃时间设置标志位分钟值变更标志位键处理标志位断续打铃标志位0F0H0F1H0F2H0F3H00H00004.1.2 软件流程根据上述工作流程,软件设计可分为以下几个功能模块:1)主程序:初始化与键盘监控。2)计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。3)时间设置与报时设置:由键盘输入设置当前时间与定时启闭时间。4)显示:完成5位LED动态显示。5)键盘扫描:判断是否有键盘按下,并求取键号。6)定时比较:判断报时时间到否,如时间到,则启动报时处理程序。7)其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间选择及假日停止报时等。下面分模块进行软件设计:4.2 程序模块设置:1、主程序模块(MAIN)1、 定时中断服务程序模块(CTCINT)2、 扫描显示子程序(DISP)3、 键扫描子程序(CHECKEY)4、 键值处理子程序(KEYACC)5、 选择键处理子程序(SHIFTP)6、 调节键处理子程序(TIAOJIE)7、 打铃时间设定键处理子程序(USECLR)8、 铃声选择键处理子程序(BELSET)9、 打铃处理模块(TIMER)10、 打铃时间显示子程序(USEXS)11、 打铃时间存储子程序(USECC)12、 恢复走时显示子程序(FFZSXS)13、 打铃输出子程序(DLSC)14、 恢复走时显示子程序(FFZSXS):15、 打铃输出子程序(DLSC):一、主程序模块(MAIN) 在主程序模块中,先对各端口进行初始化,对内部RAM区清零,设置堆栈和定时初值,关闭显示器,启动定时及其中断。然后标志位F3是否建立,如有则进行报时处理,否则再检测有无按键按下,若有则进行按键处理,无则返回循环点。ORG 0000HSTART:AJMP MAINORG 000BH ;定时器T0中断入口地址000BHAJMP CTCINT ;跳转定时器T0的中断服务程序入口ORG 0030H ;主程序如口地址MAIN:NOP ;主程序模块MOV A,#0FFH ;关闭个各输出口MOV P0,A ;P0为字段输出口,低电平有效MOV P1,A ;P1为7个键输入口,低电平有效MOV P2,A ;P2为显示字位输出口,高电平有效MOV P3,A ;P3为铃声选择指示灯输出及打铃控制输出,低电平有效MOV A,SPCJNE A,#07H,NOT1 ;复位后SP=07H,SP07H,跳转MOV R0,#7FH ;RAM初始化清零MOV R1,#7DH ;内部RAM从03H到7FH均清零CLR ALOOP0:MOV R0,ADEC R0DJNZ R1,LOOP0NOT1:MOV SP ,#70H ;设置栈底指针为07HMOV IP ,#02H ;设置定时器T0为最高中断优先级MOV IE ,#82H ;定时器T0开中断MOV TMOD,#01H ;定时器T0工作方式为方式1MOV TL0,#0B0H ;设置定时器T0的初值MOV TH0,#3CH ;T0的高字节=3CHSETB TR0 ;启动定时器T0,TR0为T0的启动控制位NEXTT:NOPMOV SP ,#70H ;重置堆栈底指针为70HLCALL DISP ;调用显示子程序JNB 0F1H,NEXT1 ;0F1为分钟值变更标志位0F1=0,跳转LCALL TIMER ;0F1=1,调用打铃处理子程序 NEXT1:LCALL CHECKEY ;调用键扫描子程序,判断有无键按下JNZ NEXT2 ;有键按下,转NEXT2,A中存放键值JNB 0F2H,NEXTT ;无键按下,返回LCALL FFZSXS ;有键处理标志位,调用恢复走时显示子程序SJMP NEXTTNEXT2:LCALL K ;有键按下,调用键值处理子程序MOV R4,# ;R4清零,R4在FFZSXZS子程序中作计数用SJMP NEXTT二、定时中断服务程序模块(CTCINT),完成下述工作:1)对100ms(20H),分(22H),时(23H)进行累加计数。2)如果秒钟计数发生变化,并且无键按下(键处理标志位F2H=0)。3)如分钟数发生变化,则将分钟值变更标志位置位。 三、扫描显示程序模块(DISP):为6位LED动态显示模块,P0口为字段码输出口,低电平有效;P2口为字位码输出口,高电平有效。显示缓冲区2FH2AH共6个字节,2FH,2EH存放显示的小时十位与个位,2DH,2CH存放显示的分钟十位与个位,2BH,2AH存放显示的秒钟的十位与个位。其数字范围在00HOFH内时不显示该位的小数点,在10H1FH时,则显示小数点。四、键扫描子程序(CHECKEY):检测P1端口,判断是否有键按下,如有键按下,则进行延时去抖动并读取键值,存入A中。五、键值处理子程序(KEYACC):根据键值,转相应键处理子程序。六、选择键处理子程序(SHIFTP):通过按键来选定小时,分钟位选定位则闪烁,并在选定位可进行加一处理。分两种情况:1、 进行时间校时时,在高四位闪(小时的十位,个位,分钟的十位,个位)。2、 进行打铃时间点设置是,在底四位进行闪。七、调节键处理子程序(TIAOJIE):在闪烁的对应位上进行十进制加1处理 LMOV A,24HANL A,#0FHMOV 2CH,ALOOP:RETC1:MOV 24H,2BH ;2AH,2BH合成一个字节MOV A,24HSWAP AMOV A,2AHADD A,#01H ;加1MOV 24H,ACJNE A,#60,C4 ;判断是否=60MOV 2BH,#00H ;等于就归零MOV 2AH,#00HLJMP LOOPC4:ANL A,#0F0H ;加一数分别送回2AH,2BHSWAP AMOV 2BH,AMOV A,24HANL A,#0FHMOV 2AH,ALOOP:RET八、打铃时间点设定键处理子程序(USESET):该子程序主要完成以下功能。1)打铃时间点设定状态的显示。2)打铃时间点的存储。3)判断打铃时间点设置是否有效,无效则退出,返回计时状态。USESET:NOP ;用户打铃时间点设定程序 SETB RS1 CLR RS0 JB 0F0H,USE1 ;OFOH为打铃时间点,设定标志位SETB 0F0H ;第一次按该键的处理程序SETB 0F2H ;OF2H为该键处理标志位MOV R6,#01H MOV R7,#01HLCALL USEXSNOPCLR RS1 ;重新选择工作寄存器组(2区)CLR RS0 ;RS1=1,RSO=0为2区MOV R6,#01H ;打铃时间点设定组别,开始为01组 MOV R7,#01H LCALL USEXS ;调用打铃时间显示子程序NOPCLR RS1 ;返回原工作寄存器组(0区)CLR RS0RETNOPUSE1: :NOP ;第2次及以后按打铃时间设定键的处理程序NOP ;判断上次设定的打铃时间是否有效MOV A,2DH ;将小时的十位2DH与个位2CH合成一个字节,存R4中ANL A,#0FH SWAP AMOV R1,AMOV A,2CHANL A,#0FHADD A,R1MOV R4,A ;小时数存R4CLR CCJNE A,#24H,USE2 AJMP USE6 ;小时数=24 ,退出USE2:JNC USE6 ;小时数24 ,退出NOP MOV A,2BH ;将分钟的十位2BH与个位2AH合成一个字节ANL A,#0FHSWAP AMOV R1,AMOV A,2AHANL A,#0FHADD A,R1MOV R5,A ;分钟数R5CLR CCJNE A,#60H,USE3AJMP USE6 ;分钟数=60,退出USE3:JNC USE6 ;分钟数60,退出NOPCJNE R4,#00H,USE4CJNE R5,#00H,USE4AJMP USE6 ;分钟数,小时数均为0,即位00:00,退出NOPUSE4:LCALL USECC ;调用打铃时间存储子程序NOPINC R6 ;R6中存放二进制组别数据MOV A,R7ADD A,#01HDA AMOV R7,A ;R7中存放二十一进制调整后的组别数据CJNE A,#33H,USE5 AJMP USE6 ;组别数加到33,退出 USE5:LCALL USEXS ;显示下一组别打铃时间NOP CLR RS1CLR RS0RETUSE6:NOP ,打铃时间设定状态的退出CLR 0F2HCLR 0F0HSETB P3.2SETB P3.3CLR RS1CLR RS0RETNOP九、打铃时间清除键处理子程序(URECLR):将当前显示的组别的打铃时间清除,后面组别的打铃时间依次往前移1组。USECLR:NOP ;打铃时间清除键处理子程序 ; JB 0F0H,USECL1 RET ;打铃时间设定标志位0F0H=0,退出USECL1:SETB RS1 ;重新选择工作寄存器区 CLR RS0 DEC R0 MOV R0,#00H ;RO中存放当前打铃组别的首地址 DEC R0 ;当前组别的存放区数据清零(2个字节) MOV R0,#00H CJNE R0,#6EH,USECL2 AJMP USECL3USECL2:MOV A,R0 ADD A,#02H MOV R1,A ;R1中存放下一组别的首地址 MOV A,R1 ;R1和R0中数据交换 XCH A,R0 ;字节交换指令 MOV R1,A INC R0 CJNE R0,#6EH,USECL2 NOPUSECL3:LCALL USEXS CLR RS1 CLR RS0 RET NOP十、铃声选择键处理子程序(BELSET):选择两种不同的铃声,1是连续铃声,2是断续铃声,默认状态(即不选)为连续铃声。BELSET:NOP ;铃声选择键处理子程序 JB 0F0H,BEL1 RET ;不是打铃时间设定状态,即0F0H=0,直接退出 NOP BEL1:SETB RS1 ;重新选择工作寄存器区(2区) CLR RS0 JNB P3.2,BEL2 ;P3.3为连续打铃指示灯,低电平有效 NOP ;P3.3=0, 转BEL2 CLR P3.3 ;P3.3=1时,清零SETB P3.2 ;P3.2为断续打铃指示灯,低电平有效 AJMP BEL3 BEL2:SETB P3.2 CLR P3.3 BEL3:CLR RS1 CLR RS0 RET NOP十一、打铃处理模块(TIMER): 该模块将计时缓冲区的小时数(23H),分钟数(22H)与用户设定的报时时间点(30H6FH,区32个报时点)的数据进行比较,如不相等,则返回,则执行打铃输出。TIMER:NOP MOV A,#00H CJNE A,23H,TIME0 ;小时数0,跳转 CJNE A,22H,TIME0 ;分钟数0,跳转 CLR 0F1H ;清除分变更标志位 RET ;小时,分钟均为0,即为00:00。返回TIME0:MOV R2,#20H ;用户设定的打铃时间点最多为20H,即32点 CLR A MOV R0,#30H ;用户打铃时间首地址送ROTIME1:MOV A,R0 JNB ACC.7,TIME2 ;ACC.7为小时的最高位 SETB 0F3H ;小时的最高位如=1,则为断续打铃,置0F3H=1 CLR ACC.7 ;铃声种类不能影响小时的比较 NOPTIME2:CJNE A,23H,TIME3 ;比较小时数,不相等跳转 INC R0 ;比较分钟数 CLR A MOV A,R0 CJNE A,22H,TIME4 ;分钟数不相等,比较下一打铃时间点 LCALL DLSC ;小时,分钟相同,调用打铃输出子程序 CLR 0F3H ;清除,断续打铃标志位 CLR 0F1H ;清除,分钟变更标志位 RETTIME3:NOP INC R0TIME4:NOP INC R0 CLR 0F3H DJNZ R2,TIME1 NOP CLR 0F1H RET NOP十二、打铃时间显示子程序(USEXS):当按动阿灵时间点设置键后,前两位数码管显示打铃时间点的组别,第3.4位显示打铃时间的小时数,第5.6位显示打铃时间点以分钟数并且小数以十位小数点点亮。如果打铃铃声为连续响铃P3.3口为低电平,相应指示灯亮,如果铃声为断续,则P3.2口为低电平,相应指示灯亮。USEXS:NOP ;打铃时间显示子程序 MOV A,R7 ;送组别的十位数 ANL A,#0F0H ;R7种存放二一十进制调整后的组别数据 SWAP A MOV 2FH,A MOV A,R7 ;送组别的个位数 ANL A,#0FH MOV 2EH,A NOP ;计算对应组别(R6中)大铃时间 MOV R0,#30H ;存放的首地址 MOV A,R6 ;R6中存放二进制的组别数据 DEC A ;因组别从01开始计数,而非00H CLR C RLC A ;带进位左移,组别数*2 ADD A,R0 MOV R0,A ;首地址存R0中 MOV R2,#02H ;设置循环次数为2次 MOV R3,#2DH ;设置小时,分的显示缓冲区USEX1:MOV A,R0 ;将用户打铃存储区数据送 ANL A,#0F0H ;晕示缓冲区2DH,2CH,2BH,2AH SWAP A MOV R1,A DEC R3 MOV A,R0 ANL A,#0FH MOV R3,A INC R0 DEC R1 DJNZ R2,USEX1 NOP SETB 6CH ;小时十位小数点点亮 JNB 6BH,USEX2 ;6BH为小时十位的第3位,“0”为连续,“1”为断续 NOP CLR P3.2 ;P3.2(INTO)为断续打铃指灯,低电平有效 SETB P3.3 ;不改变小时十位的显示书据 CLR 6BH RETUSEX2:CLR P3.3 ;P3.3为连续打铃指示灯,低点平有效 SETB P3.2 RET NOP十三、打铃时间设定存储子程序(USECC):将刚才设定的打铃时间点存入用户打铃时间存储区(30H6FH)USECC:NOP ;打铃时间设定存储子程序 JB P3.2,USEC1 ;P3.2为断续打铃输出,低电平有效 MOV A,R4 ;断续打铃时.小时十位的最高位(R4第7位)置1 SETB ACC.7 MOV R4,AUSEC1:NOP ;连续打铃时,R4中内容不变,最高位为0 MOV R0,#30H ;计算对应组别打铃时间存放的首地址 MOV A,R6 ;R6中存放二进制的组别数据 DEC A ;因组别从01开始计数,而非00 CLR C RLC A ;带进位左移,组别数*2 ADD A,R0 MOV R0,A ;首地址存R0中 NOP MOV R0,R4 ;小时数存首地址 INC R0 MOV R0,R5 ;分钟数存下一地址 NOP RET十四、恢复走时显示子程序(FFZSXS):在时间调校状态或打铃时间点设置状态下(此时键处理标志位为0F2H=1),如在30秒钟内设按任何按键,则自动恢复走时状态,所作的时间调校或打铃时间设置无效.FFZSXS:NOP ;恢复走时显示子程序 CLR A MOV A,R3 ;R3中存放前一次循环时的秒计数值 CJNE A,21H,FF1 ;21H中存放当前的秒计数值 SJMP FF2FF1: MOV R3,21H ;将当前的秒计数值送R3 INC R4 ;R4为30秒计数的结果值 CJNE R4,#1EH,FF2 ;设到30秒,返回 CLR 0F2H ;计到30秒,清除键处理标志位,恢复走时状态 CLR 0F0H ;清除打铃时间设置标志位 SETB P3.2 ;清除铃声种类指示灯 SETB P3.3 MOV R4,#00HFF2: NOP RET十五、打铃输出子程序(DLSC):如果用户设定的打铃时间点与目前时间的小时,分钟数相等,则执行打铃输出(P3.5=0),根据断续打铃标志位0F3H=0还是=1,执行相应的连续打铃或是断续打铃.DLSC: NOP ;打铃输出子程序 JB

温馨提示

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

评论

0/150

提交评论