单片机定时闹钟资料._第1页
单片机定时闹钟资料._第2页
单片机定时闹钟资料._第3页
单片机定时闹钟资料._第4页
单片机定时闹钟资料._第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机定时闹钟一、电路概述该时钟电路主要以单片机 AT89S52为核心而设计的,通过单片机对信息的分析与处理控制外围设备。电路整体设计思想是 想把它做成一个实用的器件,所以在题目要求的前提下,我们又加入 了星期程序,温度程序,年、月、日程序以及时间的12 24转换程序。关键字:单片机数码显示温度传感器光识电路二、题目分析与方案论证按照系统设计功能的要求,初步确定设计 系统由复位模块、时钟模块、温度模块、音乐模块、光识模块及显示模块共五个模块组成,后来在时钟模块的基础上又加载了日历、星期的模块从单片机AT89S52入手,通过使用AT89S52的内部的可编程定时器/ 计数器,结合对外接晶振的调节来

2、确定一个合适的振荡周期,从而确定出内部的机器周期。再通过对内部中断程序的设置来设计出时钟程 序,即设计出了电子时钟的核心。根据题目的要求,我们设计了以下方案:方案一设计中加载了年、月、日的设计,刚开始时打算用18个共阳数码管,考虑到数码管太多是毕会给硬件电路带来麻烦,经过考虑后,决定把年、月、日与时间设置到一组数码管上来,即六个数码管 即能显示时间又能显示年、月、日,这样一来就方便了硬件电路;方案二主控芯片使用51系列AT89S52单片机设计时温度模块设计 温度元件用AD590利用AD590以及接口电路把温度转换成模拟电压,经由ADC0804专换成数字信号,然后经AT89S52处理显示温度。但

3、由 于AD590介钱比较贵,且只能转换成模拟电压,这样一来硬件就要增 加更多的器件且又不经济,经查找发现18B20温度传感器价钱便宜且 可以直接把温度转换成数字量测温范围为 -55125 度,最大分辨率 可达 0.0625 度,采用 3 线制与单片机相连, 减少了外部的硬件电路, 具有低成本和易使用的特点,所以我们选择了18B20温度传感器。附18B20温度传感器工作原理:DS18B20温度传感器是美国 DALLAS半导体公司最新推出的一种改进型智能温度传感器, 与传统的热敏电 阻等测温元件相比, 它能直接读出被测温度, 并可根据实际要求通过 简单的编程实现912位的数字值读数方式。温度传感器

4、DS18B2C采 集温度信号送该给单片机处理, 存储器通过单片机对某些时间点的数 据进行存储;,DS18B20勺性能特点如下:1 、独特的单线接口仅需要一个引脚进行通信;2、多个DS18B2C可以并联在唯一的三线上,实现多点组网功能;3 、无须外部器件;4 、可通过数据线供电,电压范围为 3.0-5.5V ;5 、零待机功耗;6 、温度以 9 或 12 位数字量读出;7 、用户可定义的非易失性温度报警设置;8 、报警搜索命令识别并标志超过程序限定温度(温度报警条件) 的器件;9 、负电压特性,电源极性接反是,温度计不会因发热而烧毁,但不能正常工作三、系统总体结构框图按键功能a 键:P2.1 口

5、 12-24 转换b 键:P2.3 口调整定时、计时的时、调整年c 键:P2.5 口调整计时的秒和定时状态及日d 键:P2.7 口判断定时到否e 键:P2.0 口调整星期f 键:P2.2 口定时、计时转换g 键:P2.4 口调整定时、计时的秒和判断定时状态、调整日h 键:P2.6 口调整定时的报警音乐、省电模式i 键:复位键j 键:P3.6 口年、月、日的显示四、主要电路原理与设计(1)系统硬件电路的设计:电路是由控制部分和显示部分两大部分组成。利用单片机程序进行控 制,单片机以晶体振荡器的振荡周期(或外部引入的时钟周期)为最小 的时序单位,片内的各种微操作都以此周期为时序基准。振荡频率二分频

6、后形成状态周期或称s周期,所以,1个状态周期包含有2个振 荡周期。振荡频率foscl2分频后形成机器周期MC所以,1个机器 周期包含有6个状态周期或12个振荡周期。1个到4个机器周期确 定一条指令的执行时间,这个时间就是指令周期。AT89S52单片机指 令系统中,各条指令的执行时间都在 1个到4个机器周期之间。,并通过数码管进行显示单片机普遍采用锁相环技术,使单片机的时钟频率可由程序控制。锁相环允许用户在片外使用频率较低的晶振, 可以很大地减小板级噪声;而且,由于时钟频率可由程序控制,系统 时钟可以在一个很宽的范围内调整,总线频率往往能升得很高。但是, 使用锁相环也会带来额外的功率消耗。单就时

7、钟方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种。AT89S52单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就 构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当 外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。 内部振荡方 式的外部电路如下图所示。图中,电容器C01, C02起稳定振荡频率、快速起振的作用,其电容 值一般在5-30pF。晶振频率的典型值为12MH2采用6MHz的情况也 比较多。内部振荡方式所得的时钟情号比较稳定, 实用电路中使用较 多。外部振荡方式是把外部已有的时

8、钟信号引入单片机内。 这种方式适宜 用来使单片机的时钟与外部信号保持同步。 外部振荡方式的外部电路 如下图所示如图所示:+5V012 '1012 '19012 1dhcgSpeakerl.7kS47NCD4515BCNA B C D30.0047U0.1U18LM386N-1AT89S52D104J2.000IDN-18b20 +5vLED2BridgeT U OD NG0 1 11 45Y Y Y Y Y Y3300UF4810943651J_9V/5Wdhcga b c d53l0 12 3 A A A AP N NPP P PP 0)A 01 / D D T T )X X

9、 N N 0 1 XT 舅05)D .24 5 6 7 1 1 1 1E333333 33 PPPPRPPPPPPPPATT sX VGNDI GNDI000UFGNDL7805104J1GND11各模块分析: 显示模块电路先通过电源电路送出+5V电压,单片机AT89S52通 过74LS47和CD4515(416译码器)驱动数码管显示数值,显示部 分采用普通共阳极数码管显示,采用动态扫描,以减少硬件电路。考 虑到一次扫描 12位数码管显示时会出现闪烁情况,设计时分两排显 示,一排显示时间和年月日,一排显示星期和温度, 共阳极数码管 中 8个发光二极管的阳极(二极管正端)连在一起。通常,公共阳极

10、 接高电平(一般接电源) ,其它管脚接段驱动电路输出端。当某段驱 动电路的输入端为低电平时, 该端所连接的字段导通并点亮。 根据发 光字段的不同组合可显示出各种数字或字符。 此时,要求段驱动电路 能吸收额定的段导通电流, 还需根据外接电源及额定段导通电流来确 定相应的限流电阻。采用动态显示方式,比较节省 I/O 口,硬件电路 也较静态显示简单, 但其亮度不如静态显示方式, 而且在显示位数较 多时,CPU要依次扫描,占用CPU较多时间。为了提供共阳LED数码管的驱动电压,用三极管 9012作电源驱动 输出。米用12MHz晶振,有利于提高秒计时的精确性。三极管米用 9012。数码管采用红色的共阳型

11、LED数码管,亮度高些,因为是扫描 的显示方式,所以各个数码管的 abcdefg 各脚米用了总线并联 , 改动 510 欧姆的电阻可以改变显示亮度;<>0&bc3ufg'>pD(a)«m列fiff视图(b)*阳极结构共阴极结椅时钟模块利用芯片内部的振荡器,然后在引脚XTAL1和引脚 XTAL2两端接晶体谐振器,就构成了稳定的自激振荡器,其发出 的脉冲直接送入内部的时钟电路,如图外接晶振时,C1和C2的值通常选择30pF; C1、C2对频率有微调作用,晶体谐振器的频率12MHz 为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和 电容应尽可能

12、安装得与单片机芯片靠近。设置了12 24两种显示状态,调整计时的按键、设置定时的按键且定时设置了3次定时、还另加载了星期、年、月、日的调整及闰年的自动调整;温度模块一一主要由18B20通过单片机AT89S52中的温度程序不断的 检测温度来显示温度温度传感器 DS18B20采集温度信号送该给单片 机处理,存储器通过单片机对某些时间点的数据进行存储;音乐模块一一通过LM386N-1给扬声器信号来发出音乐,这个模块主要是为时钟定时到时发出音乐闹铃,而在软件部分设置了可以一次设 置3次定时,每次定时到时,音乐程序中编了 6种音乐,它可以自动 选择6种音乐中的任一音乐响1分钟,如果中间不想让闹铃响可以按

13、 一按键,闹铃就立刻停止复位模块一一单片机复位电路是使CPU和系统中的其他功能部件都 处在一个确定的初始状态,并从该状态开始工作,例如复位后PC=00OOH,使单片机从第一个单元取指令。无论是在单片机刚接上电源时, 还是断电后或者发生故障后都要复位;单片机的复位操作使单片机进 入初始化状态,其中包括使程序计数器 PC= 0000H这表明程序从0 000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内 RAME中的内容,21个特殊功能寄存器 复位后的状态为确定值,见下表。值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的

14、韧始化部分是十分必要的。说明:表中符号*为随机状态;A= OOH,表明累加器已被清零;特殊功能寄初始状特殊功能寄初始状存器态存器态A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0P3FFHSBUF不定IP*00000BSCON00HIE0*00000BPCON0*BPSV 00H,表明选寄存器0组为工作寄存器组;SP= 07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3= FFH表明已向各端口线写入1,此时,各端口既可用于输

15、入 又可用于输出;IP = XXX 00000B,表明各个中断源处于低优先级;IE = 0XX 00000B,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的 硬件状态下。51单片机的复位是由RESE引脚来控制的,此引脚与 高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状 态,而且一直在此状态下等待,直到 RESE引 I脚转为低电平后,才检 查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代 码,若为低电平便会执行外部程序。光识模块一一同样也是为定时服务的,只要定时到,组成心字的18只发光二极管就会按程序先做左移位,再全亮全灭3次,然后

16、再右移, 再全亮全灭3次如此循环1分钟;AT89S52P1 安全省电模式电源电路上装了保险管只要电流大于额定电流保 险就断来保护电路,省电模式:不看时显示不亮,看时,按下一键显 示就亮,尽量达到人性化。五 、 软件系统设计 计时程序是实现电子时钟的核心内容,本程序用中断 time0 来控制, 计时显示的单元从 50h开始,50h二秒的个位,51h二秒的十位,52h= 分的个位,53h二分的十位,54h二时的个位,55h=时的十位org 000bhjmp time0mov tmod,#00010001bmov ie,#10001010bmov ip,#00000010bmov th0,#(655

17、36-2000)/256mov tl0,#low(65536-2000)mov 4fh,#02;两个中断 250次为 1 秒定时报警程序 作用是判断时间是否与设置的闹钟时间相等,如相等则开启闹钟。 单片机内定时振铃开关使用软件开关, 即用标志寄存器, 且程序设置 了 3次定时,可见要使电子时钟定时打铃,必须同时具备两个条件, 第一:定时振铃开;第二:当前定时项数不为 0 项。 因为要使电子时钟定时打铃, 必须同时具备上述的两个条件, 所以在单片机执行查 询定时各项的程序之前,主程序会首先查询这两个条件是否同时满 足,如果满足的话,则进行一轮查询,所谓一轮查询定时,即将当前 时间与定时各项一一比

18、较,看是否相符,如果查到某项相符,则调用 音乐程序。每查完一项,寄存器中的值会自动减1(即为定时时间的项数)。当定时时间的项数值自动减为0时,则表示这一轮查询定时 时间完毕,只要条件允许(定时音乐开且定时项数不为0),有可以进行一轮新的查询定时时间。定时1: 33h二分,34h二时,定时2: 35h二分,36h二时,定时3: 37h= 分,38h二时,定时状态=39h;定时显示的单元从60h开始,60h=定时 状态,61h二此时;定时状态的音乐种类,62h二分的个位,63h二分的十 位;64h=时的个位,65h=时的十位温度程序:57山=温度的十位,58h=温度的个位,wen du:CALL

19、REST;调复位MOV A,#0CCHMOV A,#00HCALL WRITECALLWRITE 调 写程序MOVA,#00HMOVA,#4EHCALLWRITECALL WRITEMOV A,#7FHCALL WRITECALL RESTMOV A,#0CCHCALL WRITEMOV A,#44HCALL WRITEMOV R0,#20LOOP5:MOV R1,#100LOOP6:MOV R2,#250DJNZ R2,$DJNZ R1,LOOP6DJNZ R0,LOOP5MOV A,#0CCHCALL WRITEMOV A,#0BEHCALL WRITECALL READ2 ;调读程序MO

20、V A,#0ECHCALL WRITECALL HUANclr 20h.3 retCALL REST开始的个位,51h二秒的十位,52h=始化初*jmp main;分的*个位,53h二分的十位,54h=时的org OOOOh;计时个位,55h二时的十位,56h=显示的单元从50h开始,50h二秒orgOOObh;星期,57h二温度的十位,58山=温度的的十位个位,30h二秒,31h=分, 32h=时,mov ip,#00000010b期,57h二温度的十位,58山=温度的的十位期,57h二温度的十位,58山=温度的的十位定时 1: 33h=分, 34h二时,movjmp time0;定时th0

21、,#(65536-2000)/256期,57h二温度的十位,58山=温度的的十位期,57h二温度的十位,58山=温度的的十位2: 35h=分, 36h二时,定时 3: 37h=mov期,57h二温度的十位,58山=温度的的十位期,57h二温度的十位,58山=温度的的十位分,38h二时,定时状态=39htl0,#low(65536-2000)org 001bhmov4fh,#02; 两 个中断期,57h二温度的十位,58山=温度的的十位期,57h二温度的十位,58山=温度的的十位*主程25jmp time1期,57h二温度的十位,58山=温度的的十位期,57h二温度的十位,58山=温度的的十位*

22、 main:mov r0,#00;等待期,57h二温度的十位,58山=温度的的十位期,57h二温度的十位,58山=温度的的十位djnz r0,$movsp,#6ah时显示的单元从 60h 开始,60h=mov4eh,#00;光报警定时状态,61h二此时mov2dh,#250;中断 250 次期,57h二温度的十位,58山=温度的的十位期,57h二温度的十位,58山=温度的的十位mov tmod,#00010001b ; 定时状态 的音乐种类,62h二分的个位,63h= 分的十位movie,#10001010b;64h=时的mov2fh,#00h;设置计时显期,57h二温度的十位,58山=温度的

23、的十位期,57h二温度的十位,58山=温度的的十位,65h=示数码管的编号mov 39h,#01h;mov2eh,#00h;设置定时显设置定时状态初始示数值码管mov 3ah,#01h;设置定时状的编态 1 时音号乐的初始mov24h,#00h;设置年月日值显示数码mov3bh,#02h;管的编号设置定时mov30h,#00h;设置时间的状态 2 时初值音乐的初mov31h,#00h始值mov32h,#12hmov3ch,#03h;mov56h,#01h;设置定时设置星期初值状态 3 时mov33h,#00h;音乐的初设置定时初值始值mov34h,#01hmov21h,#00h;mov35h,

24、#00h设置年初mov36h,#02h值,00 表mov37h,#00h示 2000mov38h,#03h年mov22h,#01h;设置月初值mov23h,#01h;设置日初值setb20h.0;12,24 标志位,1 表示 12 小时制, 0 表示 24 小时制setb 20h.1; 定 时,计时标志位, 1 表示计时, 0 表示定 时clr 20h.2; 定时 到否标志位,1 表示到, 0 表示不到setb 20h.3; 是否 允许检测温 度标志位,1 表示允许clr 20h.4;年标志位, 1 表示闰年setb 20h.5;1 表示 31 天, 0 表示 30天clr 20h.6;1表示

25、显示年月日setb p3.0;上下午标志位,1表示上午,0表示下午clr p1setb tr0*星 期 设 置 程 序*start: jb p2.0,q1;调整星期call del; 消除抖 动mov a,56hadd a,#01hcjne a,#07h,z1mov 56h,#08hadda,#12hjmp a1daaz1:cjne a,#09h,z2cjnea,#24h,b3mov 56h,#01hmov32h,#00hjmp a1setbp3.0z2:mov 56h,ajmpa2a1:call delb3:mov 32h,ajnb p2.0,a1setbp3.0jmp startjmpa2

26、* 设置 12-24 小b1:mov a,32h; 将 24 小时制时转换程序转 换 为 12*小时制*cjnea,#00h,b7q1:jb p2.1,q2;mov32h,#12h12,24 小时制转换clrp3.0call del; 消除抖动jmpa2jnb 20h.0,b1b7:cjne a,#20h,b8jnb p3.0,b2; 将 12 小时制mov32h,#08h转 换 为 24clrp3.0小时制jmpa2jmp a2 b8:cjne a,#21h,b9b2:mov a,32hmov 32h,#09hclr p3.0jnbp2.2,a3jmp a2jmpstartb9:cjne a

27、,#12h,b4q3:jbp2.3,q4;调jmp a2整定时,b4:jnc b5计时的jmp a2时,年b5:subb a,#12hcalldel;消除抖mov 32h,a动clr p3.0jnb20h.6,c00a2:cpl 20h.0callyearyearb6:call deljmpa4jnb p2.1,b6c00:jnb20h.1,c1jmp startjb 20h.0,c2;计* 定时计时调整程时调整序mova,32h*adda,#01h*daaq2:jb p2.2,q3; 定时,cjnea,#24h,c3计时转换mov32h,#00hcall del;jmpa4cpl 20h.1

28、c3:mov 32h,aa3:call deljmpa4c2:mov a,32h add a,#01h da a mov 32h,a cjne a,#13h,c4 mov 32h,#01h cpl p3.0 jmp a4c4:mov 32h,ajmp a4c1:mov a,39h; 定时 调整cjne a,#01h,c5 mov r0,#34h jmp c10c5:cjne a,#02h,c6 mov r0,#36h jmp c10c6:mov r0,#38hc10:jb 20h.0,c7mov a,r0add a,#01hda acjne a,#24h,c8mov r0,#00hjmp a4

29、c8:mov r0,ajmp a4c7:mov a,r0add a,#01hda acjne a,#13h,c9mov r0,#01hjmp a4c9:mov r0,aa4:call deljnb p2.3,a4jmp startq4:jb p2.4,q5; 调 整定时,计 时的分,月 call deljnb 20h.6,d00call yueyued00:jnb 20h.1,d1 mov a,31h;计时cjne a,#60h,d6movr0,#00h分调整jmpa5adda,#01hd6:mov r0,adaaa5:calldelcjnea,#60h,d2jnbp2.4,a5mov31h,

30、#00hjmpstartjmpa5q5:jbp2.5,q6; 调 整d2:mov31h,a计时的秒和jmpa5定时的状态d1:mova,39h ;定时日分调整calldelcjnea,#01h,d3jnb20h.6,e00movr0,#33hcallrijmpd5jmpa6d3:cjnea,#02h,d4e00:jnb20h.1,e1movr0,#35hmova,30h; 调整计jmpd5时的秒d4:movr0,#37hadda,#01hd5:mova,r0daaadda,#01hcjnea,#60h,e2jmp a5da amov30h,#00hcplp3.4jmpa6jmpi3e2:mov

31、30h,agh:mova,39hjmpa6cjnea,#01h,i1e1:mova,39h;调整定mova,3ah时状态adda,#01hadda,#01hmov3ah,adaacjnea,#07h,i3cjnea,#04h,e3mov3ah,#01hmov39h,#01hjmpi3jmpa6i1:cjnea,#02h,i2e3:mov39h,amova,3bha6:calldeladda,#01Hjnbp2.5,a6mov3bh,ajmpstartcjnea,#07h,i3* 调整定时的报mov3bh,#01h警音乐,省电模式jmpi3*i2:mova,3ch*adda,#01hq6:jbp

32、2.6,q7mov3ch,acalldelcjnea,#07h,i3jnb20h.1,ghmov3ch,#01hjnbp2.6,i3jmp yearjmpstartnian0:cjne*定时报警a,#04h,nian1*jmp yearq7:jnb20h.2,q8nian1:cjnecallyinyuea,#08h,nian2jmpstartjmp yearq8:jnb20h.3,q9nian2:cjnecallwendu;检测a,#12h,nian3温度jmp yearjmpstartnian3:cjneq9:jbp3.6,q10a,#16h,nian4cpl20h.6jmp yearq11

33、:calldelnian4:cjnejnbp3.6,q11a,#20h,nian5q10:jmp startjmp year*闰年判断nian5:cjne*a,#24h,nian6*jmp yearnian:mov a,21hnian6:cjnei3:call dela,#00h,nian0cjnea,#28h,nian7jmp year nian7:cjne a,#32h,nian8jmp year nian8:cjne a,#36h,nian9jmp year nian9:cjne a,#40h,nian10jmp year nian10:cjne a,#44h,nian11jmp yea

34、r nian11:cjne a,#48h,nian12jmp year nian12:cjne a,#52h,nian13jmp year nian13:cjne a,#56h,nian14jmp yearnian14:cjnea,#60h,nian15 jmp yearnian15:cjnea,#64h,nian16 jmp yearnian16:cjnea,#68h,nian17 jmp yearnian17:cjnea,#72h,nian18 jmp yearnian18:cjne a,#76h,nian19 jmp yearnian19:cjnea,#80h,nian20 jmp ye

35、arnian20:cjnea,#84h,nian21 jmp yearnian21:cjnea,#88h,nian22yue2:cjnejmp yeara,#11h,yue3nian22:cjneyue4:clr 20h.5a,#92h,nian23jmp yue5jmp yearyue3:setb 20h.5nian23:cjneyue5:reta,#96h,nian24yearyear:mov a,21h;year:setb 20h.41jmp year1add a,#01hnian24:clr 20h.4da ayear1:retmov 21h,ayue:mov a,22h; 大月 31

36、 天,小月ret30天yueyue:mov a,22h;cjne1a,#04h,yue0add a,#01hjmp yue4da ayue0:cjnemov 22h,aa,#06h,yue1cjnejmp yue4a,#13h,yueyue0yue1:cjnemov 22h,#01ha,#09h,yue2 yueyuye0:ret年加月加jmp yue4ri:mov a,23h;日加1adda,#01hadda,#01hdaadaamov23h,amov30h,acjnea,#29h,ri0cjnea,#60h,f4mova,22hmov30h,#00hcjnea,#02h,ri1setb20

37、h.3;允许检callnian测温度jb20h.4,ri1mova,31h;分加mov23h,#01h一jmpri1adda,#01hri0:cjnea,#31h,ri2daacallyuemov31h,ajb20h.5,ri1cjnea,#60h,f4mov23h,#01hmov31h,#00hjmpri1mova,32h;时加ri2:cjnea,#32h,ri1一mov23h,#01hadda,#01hri1:retdaa* 计 时 子 程 序mov32h,a*jb20h.0,f1jishi:mov a,30h;秒加cjne a,#24h,f4mov32h,#00hcjnea,34h,f8

38、jmpf2setb20h.2f1:cjnea,#13h,f4mova,3ahmov32h,#01hmov2ch,acplp3.0jmpa7jnbp3.0,f4f8:mova,31hf2:mova,56h;星f5:cjnea,35h,f6期加一mova,32hadda,#01hcjnea,36h,f9mov56h,asetb20h.2cjnea,#07h,f3mova,3bhmov56h,#08hmov2ch,ajmpf4jmpa7f3:cjnea,#09h,f4f9:mova,31hmov56h,#01hf6:cjnea,37h,f7f4:callday;更新年mova,32h月日cjnea,

39、38h,f7jb p2.7,f7;定时到否setb20h.2子程序段mova,3chmova,31hmov2ch,acjnea,33h,f5jmpa7mov a,32hf7:clr 20h.2a7:retyuey:mov a,22h;月加day:mov a,23h; 日加1adda,#01hdaamov23h,acjnea,#29h,rri0mova,22hcjnea,#02h,wancallnianjb20h.4,wanmov23h,#01hjmpyueyrri0:cjnea,#31h,rri21add a,#01hda amov 22h,acjne a,#13h,wanmov 22h,#0

40、1hmov a,21h; 年加1add a,#01hda amov 21h,awan:ret* 计时扫描子程 序*a7:retyuey:mov a,22h;月加call yuejb 20h.5,wan mov 23h,#01h jmp yuey rri2:cjne a,#32h,wanmov 23h,#01h*scan1:mov r0,#2fh inc r0 cjne r0,#0ch,g1mov r0,#00ha7:retyuey:mov a,22h;月加g1:mov a,r0orl a,r1add a,#50h mov r1,a mov a,r0 swap a orl a,r1mov p0,

41、aret* 定时扫 序*scan2:mov r0,#2ehinc r0cjner0,#06h,g2movr0,#00hg2:mova,r0adda,#60hmovr1,amova,r0mov p0,a retscan3:mov r0,#24h; 定时扫描 子程序inc r0 cjner0,#06h,gg2mov r0,#00hgg2:mov a,r0 add a,#40h mov r1,a mov a,r0 swap a orl a,r1 mov p0,a ret* 计时显示子程序*xianshi1:mov r1,#50hswap amov a,30hmov b,#10hxianshi2: m

42、ov a,39hdivabmov60h,amovr1,bcjnea,#01h,h1incr1mova,3ahmovr1,amov61h,aincr1movr1,#62hmova,31hmova,33hmovb,#10hmovb,#10hdivabdivabmovr1,bmovr1,bincr1incr1movr1,amovr1,aincr1incr1mova,32hmova,34hmovb,#10hmovb,#10hdivabdivabmovr1,bmovr1,bincr1incr1movr1,amovr1,aretjmph3* 定 时 显 示 子 程 序 h1:cjne a,#02h,h2*

43、 mov a,3bhmov 61h,amov r1,bmov r1,#62hinc r1mov a,35hmov r1,amov b,#10hinc r1div abmov a,38hmov r1,bmov b,#10hinc r1div abmov r1,amov r1,binc r1inc r1mov a,36hmov r1,amov b,#10hh3:retdiv abxianshi3:mov r1,#40h; 计mov r1,b时显示子程序inc r1mov a,21hmov r1,amov b,#10hjmp h3div abh2:mov a,3chmov r1,bmov 61h,a

44、inc r1mov r1,#62hmov r1,amov a,37hinc r1mov b,#10hmov a,22hdiv abmov b,#10hdiv abdjnz 4fh,h4mov r1,bmov 4fh,#02inc r1call jishimov r1,ah4:jnb 20h.6,hh4inc r1call xianshi3mov a,23hcall scan3mov b,#10hjmp h6div abhh4:jb 20h.1,h5mov r1,bcall xianshi2inc r1call scan2mov r1,ajmp h6reth5:call xianshi1time

45、0:movcall scan1th0,#(65536-2000)/256h6:pop pswmovpop atl0,#low(65536-2000)retipush adel:mov r6,#40push pswj1:mov r5,#248setb rs0djnz r5,$clr rs1djnz r6,j1djnz 2dh,h4retmov 2dh,#250*音乐程序yinyue:push ar:cjne a,#05,tpush pswmovsetb rs1dptr,#song5clr rs0jmp pumain1:mov 2bh,#00ht:movm:mov a,2chdptr,#song6cjne a,#01,qpu:jnb 20h.2,jjmovmov a,2bhdptr,#song1movc a,a+dptrjmp pumov r0,aq:cjne a,#02,wjz end0movanl a,#0fhdptr,#song2mov r7,ajmp pumov a,r0w:cjne a,#03,eswap amovanl a,#0fhdptr,#song3jnz singjmp puclr tr1e:cjne a,#04,rjmp dd1movsing:dec adptr,#song4mov 2ah,a*jmp pumovmo

温馨提示

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

评论

0/150

提交评论