📄 1302
字号:
C51 COMPILER V9.00 ZHAO 08/13/2013 14:33:02 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE ZHAO
OBJECT MODULE PLACED IN zhao.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE zhao.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>//头文件
2 #include <intrins.h>
3 #include "DS1302.h"
4 #define uchar unsigned char
5 #define uint unsigned int
6 code duanma[11] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
7 code weima[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
8 uint jishu;
9 uchar dot,flash,a,b,c,d;//
10 uchar key1_state,key2_state,key3_state,key4_state;
11 static uchar key1_flag=0; //定义静态变量
12 sbit key1 = P3^0; //定义4个按键的端口
13 sbit key2 = P3^1;
14 sbit key3 = P3^2;
15 sbit key4 = P3^3;
16 /************时间延迟函数**************/
17 //void delay(int delaytime)
18 //{
19 // while(delaytime--)
20 // {
21 // _nop_();
22 // }
23 //}
24 // 毫秒延时
25 void delayms(unsigned int delaytime)
26 {
27 1 uint i,j;
28 1 for( i = 0;i < delaytime;i++ )
29 1 for(j = 0;j < 120;j++);
30 1 }
31 //消隐函数
32 void xiaoying()
33 {
34 1 delayms(1);
35 1 P0=0;
36 1 delayms(1);
37 1 }
38 /***********获取按键状态函数***************/
39 uchar get_key()
40 {
41 1 if(key1 == 0 )
42 1 {
43 2 key1 = 1;
44 2 delayms(1);
45 2 if(key1 == 0)
46 2 key1_state = 1; //记忆key1按下的状态
47 2 }
48 1 if(key1 == 1 && key1_state == 1)
49 1 {
50 2 key1_state = 0;
51 2 key1_flag++;
52 2 }
53 1 if(key1_flag == 4)
54 1 key1_flag = 0;
55 1 return(key1_flag);
C51 COMPILER V9.00 ZHAO 08/13/2013 14:33:02 PAGE 2
56 1 }
57 /************* T0的中断服务函数****************/
58 void timer0_isr(void) interrupt 1
59 {
60 1 // uchar i;
61 1 TR0 = 0;//给T0重新置初值
62 1 TH0 = (65536-5000)/256;//
63 1 TL0 = (65536-5000)%256;//
64 1 TR0 = 1;
65 1 jishu++;//进入中断的次数
66 1 if(jishu == 100)
67 1 {
68 2 dot =! dot;
69 2 jishu = 0;
70 2
71 2 }
72 1 }
73 /************* T0初始化函数,每5毫秒进一次中断************/
74 void timer0_init()
75 {
76 1 EA = 0;
77 1 TR0 = 0;
78 1 TMOD &= 0xF0;
79 1 TMOD |= 0x01;
80 1 TL0 = (65536-5000)%256;
81 1 TH0 = (65536-5000)/256;
82 1 PT0 = 0;
83 1 ET0 = 1;
84 1 TR0 = 1;
85 1 EA = 1;
86 1 }
87 /*************单片机初始化函数*****************/
88 void Init_mcu(void)
89 {
90 1 timer0_init();//中断T0初始化
91 1 init1302(); //
92 1 key1_flag = 0;
93 1 }
94 /***********按键和时间设置函数*************/
95 void key_setup()
96 {
97 1 uchar i;
98 1 i = get_key();
99 1 if(i == 3)//i=3;adjust second ;调整秒
100 1 {
101 2 if(key2 == 0)
102 2 {
103 3 key2 = 1;
104 3 ;;
105 3 if(key2 == 0)
106 3 key2_state= 1;
107 3 }
108 2 if(key2 == 1 && key2_state == 1)
109 2 {
110 3 key2_state = 0;
111 3 counter[0]++;
112 3 if(counter[0] >= 60)
113 3 counter[0] = 0;
114 3 }
115 2 if(key3 == 0 )
116 2 {
117 3 key3 = 1;
C51 COMPILER V9.00 ZHAO 08/13/2013 14:33:02 PAGE 3
118 3 ;;
119 3 if(key3 == 0)
120 3 key3_state = 1;
121 3 }
122 2 if(key3 == 1 && key3_state == 1)
123 2 {
124 3 key3_state = 0;
125 3 counter[0]--;
126 3 if(counter[0] < 0)
127 3 counter[0] = 59;
128 3 }
129 2
130 2 a = dot*0xff;
131 2 }
132 1 else a = 0;
133 1 if(i == 2)//i=2;adjust the minute;调整分钟
134 1 {
135 2 if(key2 == 0)
136 2 {
137 3 key2 = 1;
138 3 ;;
139 3 if(key2 == 0)
140 3 key2_state= 1;
141 3 }
142 2 if(key2 == 1 && key2_state == 1)
143 2 {
144 3 key2_state = 0;
145 3 counter[1]++;
146 3 if(counter[1]>= 60)
147 3 counter[1] = 0;
148 3 }
149 2 if(key3 == 0 )
150 2 {
151 3 key3 = 1;
152 3 ;;
153 3 if(key3 == 0)
154 3
155 3 key3_state = 1;
156 3 }
157 2 if(key3 == 1 && key3_state == 1)
158 2 {
159 3 key3_state = 0;
160 3 counter[1]--;
161 3 if(counter[1] < 0)
162 3 counter[1] = 59;
163 3 }
164 2 b = dot*0xff;
165 2 }
166 1 else b = 0;
167 1 if(i == 1) //i=1;adjust the hour;调整小时
168 1 {
169 2 if(key2 == 0)
170 2 {
171 3
172 3 key2 = 1;
173 3 ;;
174 3 if(key2 == 0)
175 3 key2_state= 1;
176 3 }
177 2 if(key2 == 1 && key2_state == 1)
178 2 {
179 3 key2_state = 0;
C51 COMPILER V9.00 ZHAO 08/13/2013 14:33:02 PAGE 4
180 3 counter[2]++;
181 3
182 3
183 3 if(counter[2] > 23 && d == 0)
184 3 counter[2] = 0;
185 3 if(counter[2] > 12 && d == 1)
186 3 counter[2] = 1;
187 3 }
188 2 if(key3 == 0)
189 2 {
190 3 key3 = 1;
191 3 ;;
192 3 if(key3 == 0)
193 3 key3_state = 1;
194 3 }
195 2 if(key3 == 1 && key3_state == 1)
196 2 {
197 3 key3_state = 0;
198 3 counter[2]--;
199 3 if(counter[2] < 0 && d == 0)
200 3 counter[2] = 23;
201 3 if(counter[2] < 1 && d == 1)
202 3 counter[2] = 12;
203 3 }
204 2 c = dot*0xff;
205 2 }
206 1
207 1 else c = 0;
208 1 if(key4 == 0)
209 1 {
210 2 key4 = 1;
211 2 ;;
212 2 if(key4 == 0)
213 2 key4_state = 1;
214 2 }
215 1 if(key4 == 1 && key4_state == 1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -