📄 yj.lst
字号:
C51 COMPILER V8.08 YJ 06/09/2008 14:14:26 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE YJ
OBJECT MODULE PLACED IN yj.OBJ
COMPILER INVOKED BY: D:\keilc\C51\BIN\C51.EXE yj.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<absacc.h>
3 #include <intrins.h>
4 #define uchar unsigned char
5 uchar code time[]={"Time:"};//第一行显示 “Time“
6 uchar idata date[] ={" "};// 第二行显示时间
7 sbit RS=P3^2; // lcd1602
8 sbit RW=P3^1; // lcd1602读写端口
9 sbit EN=P3^0; //使能端 下降沿有效
10 sbit flag=ACC^7;
11 sbit FZ=P1^0; //分设置键
12 sbit XZ=P1^1; //时设置键
13 sbit TC=P3^4; //退出键
14 sbit SZ=P1^2; //设置指示灯
15 sbit ZC=P1^3; //正常计时指示灯
16 sbit ST=P3^3;// 时间设置模式
17 uchar second; //秒
18 uchar mint; //分
19 uchar hour; //时
20 uchar t; //定时器计数次数
21 void delay(int y) //延时函数
22 {
23 1 uchar i,j;
24 1 for(j=0;j<=y;j++)
25 1 for(i=0;i<=100;i++);
26 1 }
27
28 void wait(void) //判断显示器是否处于忙状态
29 {
30 1 RS=0;
31 1 RW=1;
32 1 do{ACC=P0;}
33 1 while(flag==1); //读显示器忙标志位
34 1 }
35
36 void writecom(uchar com) //写液晶显示命令
37 {
38 1 RS=0;
39 1 RW=0;
40 1 EN=0;
41 1 P0=com;
42 1 delay(1);
43 1 EN=1;
44 1 delay(1);
45 1 EN=0;//使能 数据送到命令寄存器
46 1 }
47 void writedat(uchar dat) //写数据送显示
48 {
49 1 RS=1;
50 1 RW=0;
51 1 EN=0;
52 1 P0=dat;
53 1 delay(1);
54 1 EN=1;
55 1 delay(1);
C51 COMPILER V8.08 YJ 06/09/2008 14:14:26 PAGE 2
56 1 EN=0;
57 1 }
58 void lcdinit(void) //显示器初始化以及定时器初始化
59 {
60 1
61 1 TMOD=0x01;
62 1 TH0=(65536-50000)/256;
63 1 TL0=(65536-50000)%256;
64 1 EA=1;
65 1 ET0=1;
66 1 EX1=1;
67 1 TR0=1;
68 1 SZ=0;
69 1 t=0;
70 1 second=0;
71 1 mint=0;
72 1 hour=12;
73 1 writecom(0x38);
74 1 wait();
75 1 writecom(0x08);
76 1 wait();
77 1 writecom(0x01);
78 1 wait();
79 1 writecom(0x06);
80 1 wait();
81 1 writecom(0x0c);
82 1 wait();
83 1
84 1
85 1 }
86 /////////////////////////
87 /////////////////////// /
88 ////////显示函数////////
89 void display(uchar x,uchar *p)
90 {
91 1 while(*p!='\0')
92 1 { writecom(x);
93 2 wait();
94 2 writedat(*p);
95 2 wait();
96 2 x++;p++;
97 2 delay(5);
98 2 }
99 1
100 1 }
101 void time0(void) interrupt 1
102 {
103 1
104 1 t++;
105 1 if(t==7) //溢出7次为一秒
106 1 {
107 2 t=0;
108 2 second++;
109 2 if(second==60)
110 2 {
111 3 mint++;
112 3 second=0;
113 3 if(mint==60)
114 3 { hour++;
115 4 mint=0;
116 4 if(hour==24)hour=0;
117 4
C51 COMPILER V8.08 YJ 06/09/2008 14:14:26 PAGE 3
118 4 }
119 3
120 3 }
121 2
122 2 }
123 1 TH0=(65536-50000)/256;
124 1 TL0=(65536-50000)%256;
125 1
126 1 }
127
128 ///////////////////////////////////
129 //////////////////////////////////
130 /////////////显示时间/////////////
131 void display1(void)
132 {
133 1
134 1 date[0]=hour/10+0x30; // 第二行第一位显示时的十位
135 1 date[1]=hour%10+0x30; // 第二位显示时的个位
136 1 date[2]=0x3a; // 第三位显示":"
137 1 date[3]=mint/10+0x30; // 分的十位
138 1 date[4]=mint%10+0x30; // 分的个位
139 1 date[5]=0x3a; // ":"
140 1 date[6]=second/10+0x30; // 秒的十位
141 1 date[7]=second%10+0x30; // 秒的个位
142 1 display(0xc0,date); //
143 1
144 1 }
145
146 //////////////////////////////////////
147 //时间设置函数 ///////////////////////
148 /////////////////////////////////////
149 void key(void) interrupt 2
150 {
151 1
152 1 EA=0; //关中断 定时器停止计数
153 1 SZ=1; //设置等点亮
154 1 ZC=0; //计时等熄灭
155 1 second=0;
156 1 while(1)
157 1 {
158 2 if(FZ==0)
159 2 {
160 3
161 3 delay(5) ;
162 3 if(FZ==0) //每按下一次分加1
163 3 {
164 4 delay(5); //延时
165 4 mint++;
166 4
167 4 if(mint==60){mint=0;}
168 4
169 4 }
170 3 }
171 2 if(XZ==0)
172 2 {
173 3 delay(5) ;
174 3 if(XZ==0) //每按下一次时加1
175 3 {
176 4 delay(50);
177 4 hour++;
178 4 if(hour==24){hour=0;}
179 4
C51 COMPILER V8.08 YJ 06/09/2008 14:14:26 PAGE 4
180 4 }
181 3 }
182 2 display1(); //及时显示变化
183 2
184 2 if(TC==0) break; // 退出键按下 退出时间设置
185 2 }
186 1 SZ=0; // 设置灯灭
187 1 ZC=1; // 计时灯亮
188 1 EA=1; // 开中断 定时器计数
189 1
190 1 }
191 /***************************************************/
192 /******************主函数****************************/
193 /****************************************************/
194
195 void main(void)
196 {
197 1
198 1 lcdinit();
199 1 display(0x80,time); //显示"Time"
200 1
201 1 while(1)
202 1 {
203 2
204 2 display1();
205 2 }
206 1
207 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 464 ----
CONSTANT SIZE = 6 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 1
IDATA SIZE = 17 ----
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 + -