📄 memory clockί
字号:
C51 COMPILER V9.00 TIMERSINIT 10/29/2012 15:18:34 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE TIMERSINIT
OBJECT MODULE PLACED IN TimersInit.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TimersInit.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include"24c02.h"
3 #include "MacroAndConst.h"
4 #include "Key.h"
5 #include "Lcd.h"
6 #include "Assistance.h"
7
8 char flag=0;
9 uint year;
10 uchar time;
11 uchar count,s1num;
12 char a,b,c,d,year1,year2;
13
14 void yearConvert(uint Year)
15 {
16 1 a=Year/1000;
17 1 b=Year/100%10;
18 1 c=Year/10%10;
19 1 d=Year%10;
20 1 year1=c*10+d;
21 1 year2=a*10+b;
22 1 if(year1==100)
23 1 {
24 2 year1=0;
25 2 year2++;
26 2 }
27 1
28 1 }
29
30 void timer0Init()
31 {
32 1 TMOD = 0x11;//设置定时器0和定时器1为工作方式1
33 1 TH0 = (65536 - 45872) / 256;
34 1 TL0 = (65536 - 45872) % 256; //20ms延时
35 1 EA = 1;//开总中断
36 1 ET0 = 1;//开定时器0中断
37 1 TR0 = 1;
38 1 }
39
40 void timer1Init()
41 {
42 1 TH1 = (65536 - 32110) / 256;
43 1 TL1 = (65536 - 32110) % 256; //20ms延时
44 1 ET1 = 1;//开定时器0中断
45 1 TR1 = 1;
46 1 }
47
48 void timer0() interrupt 1//定时器0中断服务程序
49 {
50 1 TH0=(65536-45872)/256;//再次装定时器初值
51 1 TL0=(65536-45872)%256;
52 1 count++; //中断次数累加
53 1 if(count==20) //20次50毫秒为1秒
54 1 {
55 2 count=0;
C51 COMPILER V9.00 TIMERSINIT 10/29/2012 15:18:34 PAGE 2
56 2 miao++;
57 2 if(miao==60)//秒加到60则进位分钟
58 2 {
59 3 miao=0;//同时秒数清零
60 3 fen++;
61 3 if(fen==60)//分钟加到60则进位小时
62 3 {
63 4 fen=0;//同时分钟数清零
64 4 shi++;
65 4 if(shi==24)//小时加到24则小时清零
66 4 {
67 5 shi=0;
68 5 day++;
69 5 weekDay++;
70 5 if(weekDay==7)
71 5 {
72 6 weekDay=0;
73 6 }
74 5 if( (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month == 12) && day=
-=32 )
75 5 {
76 6 month++;
77 6 day=1;
78 6 flag=1;
79 6 }
80 5 if( (month==4 || month==6 || month==9 || month==11) && day==31 )
81 5 {
82 6 month++;
83 6 day=1;
84 6 flag=1;
85 6 }
86 5 if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) && day==30 )
87 5 {
88 6 month++;
89 6 day=1;
90 6 flag=1;
91 6 }
92 5 if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) == 0 && day==29)
93 5 {
94 6 month++;
95 6 day=1;
96 6 flag=1;
97 6 }
98 5 if(month==13)
99 5 {
100 6 year++;
101 6 month=1;
102 6 yearConvert(year);
103 6 write_year(4,year1);
104 6 write_addbyte(7,year1);
105 6 write_year(2,year2);
106 6 write_addbyte(8,year2);
107 6 }
108 5 if(flag==1)
109 5 {
110 6 write_month(7,month);
111 6 write_addbyte(6,month);
112 6 flag=0;
113 6 }
114 5 write_day(10,day);
115 5 write_addbyte(5,day);
116 5 write_weekDay(13,weekDay);
C51 COMPILER V9.00 TIMERSINIT 10/29/2012 15:18:34 PAGE 3
117 5 write_addbyte(4,weekDay);
118 5 }
119 4 write_sfm(4,shi);//小时若变化则重新写入
120 4 write_addbyte(3,shi);//数据改变立即存入24C02
121 4 }
122 3 write_sfm(7,fen);//分钟若变化则重新写入
123 3 write_addbyte(2,fen);//数据改变立即存入24C02
124 3 }
125 2 write_sfm(10,miao);//秒若变化则重新写入
126 2 write_addbyte(1,miao);//数据改变立即存入24C02
127 2 }
128 1 }
129
130 void timer1() interrupt 3
131 {
132 1 time=1;
133 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 609 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -