📄 试验.lst
字号:
C51 COMPILER V8.01 试验 12/06/2008 02:59:39 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE 试验
OBJECT MODULE PLACED IN 试验.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 试验.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********DS1302数码管时钟****************/
2
3
4 #include <AT89X51.H>
5 #include"ds1302.h"
6
7 /*********宏定义***************/
8 #define uint unsigned int
9 #define uchar unsigned char
10
11
12
13 /**************全局变量*******************/
14 uchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,
15 0x92,0x82,0xf8,0x80,0x90};//"0~9"代码
16
17 uchar bitcode[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选
18 uchar l_1[8]={16,16,16,16,16,18,13,19};//"LOC"显示代码
19 uchar l_2[8]={16,16,16,21,20,18,13,19};//"UNLOC"显示代码
20
21
22 uchar c[8];//中间变量
23 uchar cnt , cnt1 , mode1 ; //键盘扫描方式mode1
24 bit mode_lock;//键盘锁定,1为锁定,0为解锁
25 bit add_OR_dec_flag; //加减标志位,0为加,1为减
26
27 /**************************************************/
28
29
30
31
32
33 /***********z*1ms延时**************/
34 void delay(uint z)
35 {
36 1 uint x , y ;
37 1 for(x=z;x>0;x--)
38 1 for(y=121;y>0;y--);
39 1 }
40
41
42
43
44 /*******中断,显示初始化************/
45 void init()
46 {
47 1 TMOD=0x11;
48 1 TH0=-1000/256;
49 1 TL0=-1000%256;
50 1 TR0=1;
51 1 ET0=1;
52 1
53 1 EA=1;
54 1
55 1 mode1=0;
C51 COMPILER V8.01 试验 12/06/2008 02:59:39 PAGE 2
56 1 mode_lock=0;
57 1 }
58
59
60
61 /********定时器0中断子程序****************/
62 /******功能:用于动态扫描数码管************/
63 void t0() interrupt 1
64 {
65 1 TH0=-1000/256;
66 1 TL0=-1000%256;
67 1 cnt++;
68 1 if(cnt>7)cnt=0;
69 1 switch(cnt)
70 1 {
71 2 case 0 : P0=led[c[cnt]];P1=bitcode[cnt];break;
72 2 case 1 : P0=led[c[cnt]];P1=bitcode[cnt];break;
73 2 case 2 : P0=led[c[cnt]];P1=bitcode[cnt];break;
74 2 case 3 : P0=led[c[cnt]];P1=bitcode[cnt];break;
75 2 case 4 : P0=led[c[cnt]];P1=bitcode[cnt];break;
76 2 case 5 : P0=led[c[cnt]];P1=bitcode[cnt];break;
77 2 case 6 : P0=led[c[cnt]];P1=bitcode[cnt];break;
78 2 case 7 : P0=led[c[cnt]];P1=bitcode[cnt];break;
79 2 default:break;
80 2 }
81 1 }
82
83
84
85
86 /********时间显示****************/
87 void display_time()
88 {
89 1 c[0]=hour_h;
90 1 c[1]=hour_l;
91 1 c[2]=17;
92 1 c[3]=min_h;
93 1 c[4]=min_l;
94 1 c[5]=17;
95 1 c[6]=sec_h;
96 1 c[7]=sec_l;
97 1 }
98
99
100
101
102 /**********时间调整************************/
103 /******功能:按键P2_0:秒减******************/
104 /****** 按键P2_1:秒加******************/
105 /****** 按键P2_2:分减******************/
106 /****** 按键P2_3:分加******************/
107
108 void sjtz()
109 {
110 1 if(P2_0==0) //秒减
111 1 {
112 2 delay(10);
113 2 if(P2_0==0)
114 2 {
115 3 add_OR_dec_flag=1;
116 3 Set(7,add_OR_dec_flag);//调用时间调整子程序,此程序在DS1302.H文件中
117 3 while(P2_0==0);
C51 COMPILER V8.01 试验 12/06/2008 02:59:39 PAGE 3
118 3 }
119 2 }
120 1 if(P2_1==0)//秒加
121 1 {
122 2 delay(10);
123 2 if(P2_1==0)
124 2 {
125 3
126 3 add_OR_dec_flag=0;
127 3 Set(7,add_OR_dec_flag);//调用时间调整子程序,此程序在DS1302.H文件中
128 3 while(P2_1==0);
129 3 }
130 2 }
131 1 if(P2_2==0) //分减
132 1 {
133 2 delay(10);
134 2 if(P2_2==0)
135 2 {
136 3 add_OR_dec_flag=1;
137 3 Set(6,add_OR_dec_flag);//调用时间调整子程序,此程序在DS1302.H文件中
138 3 while(P2_2==0);
139 3 }
140 2
141 2 }
142 1 if(P2_3==0)//分加
143 1 {
144 2 delay(10);
145 2 if(P2_3==0)
146 2 {
147 3
148 3 add_OR_dec_flag=0;
149 3 Set(6,add_OR_dec_flag);//调用时间调整子程序,此程序在DS1302.H文件中
150 3 while(P2_3==0);
151 3 }
152 2 }
153 1
154 1 }
155
156
157
158 /*********主函数*************/
159 void main()
160 {
161 1 uchar i ;
162 1 init();
163 1
164 1 while(1)
165 1 {
166 2 RTC_display();
167 2 display_time();
168 2 sjtz();//显示时间
169 2 }
170 1 display_time();
171 1
172 1 }
*** WARNING C280 IN LINE 161 OF 试验.C: 'i': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 676 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V8.01 试验 12/06/2008 02:59:39 PAGE 4
PDATA SIZE = ---- ----
DATA SIZE = 79 2
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -