📄 jishiqi.lst
字号:
C51 COMPILER V8.02 JISHIQI 06/22/2010 11:32:23 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE JISHIQI
OBJECT MODULE PLACED IN jishiqi.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE jishiqi.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //可实现计时功能,最大计时时间为99小时。
2 //支持暂停功能,按键盘中左下角的S2键,可暂停计时;按下S3,可继续计时。
3 //注意晶振需为11.0592M。
4 //若为其他数值晶振,请改变TH0与TL0参数值,否则计时会有很大误差 。
5
6 #include<reg51.h>
7
8 #define uchar unsigned char
9
10 sbit dula=P2^6;
11 sbit wela=P2^7;
12 sbit beep=P2^3;
13 sbit lcden=P3^4;
14 sbit rs=P3^5;
15 unsigned char halt,j,k,a1,a0,b1,b0,c1,c0,s,f,m,n=255;
16 unsigned int pp;
17 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
18 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
19
20 void delay(unsigned char i)
21 {
22 1 for(j=i;j>0;j--)
23 1 for(k=125;k>0;k--);
24 1 }
25
26 void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1)
27 {
28 1 dula=0;
29 1 P0=table[shi2];
30 1 dula=1;
31 1 dula=0;
32 1
33 1 wela=0;
34 1 P0=0xfe;
35 1 wela=1;
36 1 wela=0;
37 1 delay(5);
38 1
39 1 P0=table[shi1]|0x80;
40 1 dula=1;
41 1 dula=0;
42 1
43 1 P0=0xfd;
44 1 wela=1;
45 1 wela=0;
46 1 delay(5);
47 1
48 1 P0=table[fen2];
49 1 dula=1;
50 1 dula=0;
51 1
52 1 P0=0xfb;
53 1 wela=1;
54 1 wela=0;
55 1 delay(5);
C51 COMPILER V8.02 JISHIQI 06/22/2010 11:32:23 PAGE 2
56 1
57 1 P0=table[fen1]|0x80;
58 1 dula=1;
59 1 dula=0;
60 1
61 1 P0=0xf7;
62 1 wela=1;
63 1 wela=0;
64 1 delay(5);
65 1
66 1 P0=table[miao2];
67 1 dula=1;
68 1 dula=0;
69 1
70 1 P0=0xef;
71 1 wela=1;
72 1 wela=0;
73 1 delay(5);
74 1
75 1 P0=table[miao1];
76 1 dula=1;
77 1 dula=0;
78 1
79 1 P0=0xdf;
80 1 wela=1;
81 1 wela=0;
82 1 delay(5);
83 1 }
84
85 void keyscan()
86 {
87 1 if(lcden==0)
88 1 delay(10);
89 1 if(lcden==0)
90 1 {
91 2 halt=1;
92 2 }
93 1 if(rs==0)
94 1 halt=0;
95 1 }
96
97 void main()
98 {
99 1 TMOD=0x01;
100 1 TR0=1;
101 1 TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
102 1 TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12
103 1 ET0=1;
104 1 EA=1;
105 1 while(1)
106 1 { keyscan();
107 2 if(halt==0)
108 2 {
109 3 TR0=1;
110 3 if(pp==20)
111 3 { pp=0;
112 4 m++;
113 4 n--;
114 4 P1=n;//闪烁灯
115 4 if(m==60)
116 4 {
117 5 m=0;
C51 COMPILER V8.02 JISHIQI 06/22/2010 11:32:23 PAGE 3
118 5 f++;
119 5 if(f==60)
120 5 {
121 6 f=0;
122 6 s++;
123 6 if(s==99)
124 6 {
125 7 s=0;
126 7 }
127 6 }
128 5 }
129 4 }
130 3
131 3 a0=s%10;
132 3 a1=s/10;
133 3 b0=f%10;
134 3 b1=f/10;
135 3 c0=m%10;
136 3 c1=m/10;
137 3 display(a1,a0,b1,b0,c1,c0);
138 3 }
139 2 else
140 2 TR0=0;
141 2 display(a1,a0,b1,b0,c1,c0);
142 2 }
143 1 }
144
145 void time0() interrupt 1
146 {TH0=(65536-46080)/256;
147 1 TL0=(65536-46080)%256;
148 1 pp++;
149 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 325 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 6
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 + -