📄 stopwatch.lst
字号:
C51 COMPILER V7.09 STOPWATCH 03/16/2009 16:07:46 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE STOPWATCH
OBJECT MODULE PLACED IN stopwatch.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE stopwatch.c BROWSE INTVECTOR(0X4000) DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3
4 sbit dat=P1^0;
5 sbit clk=P1^1;
6 sbit isKeyPress=P1^2;
7 sbit sege1=P1^6;
8 sbit sege2=P1^5;
9 sbit sege3=P1^4;
10 sbit sege4=P1^3;
11
12 unsigned char SEGCODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
13 unsigned char KEYCHECKCODE[8] = {1,2,4,8,16,32,64,128};
14 unsigned int counter=0x10,dbuffer=0,min=0;
15
16
17 void initial(void)
18 {
19 1 TMOD=0x01;
20 1 TH0=0x00;
21 1 TL0=0x00;
22 1 IE=0x82;
23 1 TR0=1;
24 1 }
25
26 void send(unsigned char a)
27 {
28 1 data unsigned char i;
29 1 for(i=0;i<8;i++)
30 1 {
31 2 if(_crol_(a,i)&0x80)
32 2 dat=1;
33 2 else
34 2 dat=0;
35 2 clk=1;
36 2 clk=0;
37 2 }
38 1 }
39
40 void delay(unsigned int k)
41 {
42 1 unsigned int i,j;
43 1 for(i=0;i<k;i++)
44 1 for(j=0;j<121;j++);
45 1 }
46
47
48 unsigned char key_scan(void)
49 {
50 1 unsigned char data keyNum,i,keyValue;
51 1
52 1 keyNum=0xff;
53 1 send(0x00);
54 1 while(!isKeyPress)
55 1 {
C51 COMPILER V7.09 STOPWATCH 03/16/2009 16:07:46 PAGE 2
56 2 //keyNum=0xff;
57 2 //display_bit=0xfe;
58 2 for(i = 0;i < 8; i++)
59 2 {
60 3 send(~KEYCHECKCODE[i]);
61 3 if(!isKeyPress)
62 3 {
63 4 keyValue = i;
64 4 break;
65 4 }
66 3 /*
67 3 send(display_bit);
68 3 if(!isKeyPress)
69 3 {
70 3 keyNum=display_bit;
71 3 break;
72 3 }
73 3 display_bit=_crol_(display_bit,1);
74 3 */
75 3 }
76 2 delay(200);
77 2 return keyValue;
78 2 }
79 1 return keyNum;
80 1 }
81
82
83
84 int main(void)
85 {
86 1 initial();
87 1
88 1 while(1)
89 1 {
90 2 unsigned char keyValue = 8;
91 2 unsigned char i;
92 2 send(0x00);
93 2 while(!isKeyPress)
94 2 {
95 3 for(i = 0;i < 8; i++)
96 3 {
97 4 send(~KEYCHECKCODE[i]);
98 4 if(!isKeyPress)
99 4 {
100 5 keyValue = i;
101 5 break;
102 5 }
103 4 }
104 3 }
105 2
106 2 if(keyValue==0)
107 2 {
108 3 min++;
109 3 if(min > 59)
110 3 {
111 4 min = 0;
112 4 }
113 3 }
114 2
115 2 if(keyValue==1)
116 2 {
117 3 min--;
C51 COMPILER V7.09 STOPWATCH 03/16/2009 16:07:46 PAGE 3
118 3 if(min < 0)
119 3 {
120 4 min = 59;
121 4 }
122 3 }
123 2
124 2 send(SEGCODE[dbuffer%10]);
125 2 sege4=0;
126 2 delay(1);
127 2 sege4=1;
128 2 send(SEGCODE[dbuffer/10]);
129 2 sege3=0;
130 2 delay(1);
131 2 sege3=1;
132 2 send(SEGCODE[min%10]);
133 2 sege2=0;
134 2 delay(1);
135 2 sege2=1;
136 2 send(SEGCODE[min/10]);
137 2 sege1=0;
138 2 delay(1);
139 2 sege1=1;
140 2 }
141 1 }
142
143 void timer0_int(void) interrupt 1
144 {
145 1 TH0=0x00;
146 1 TL0=0x00;
147 1 TR0=0;
148 1
149 1 if(!(counter--))
150 1 {
151 2 counter=0x10;
152 2 if(dbuffer!=59)
153 2 dbuffer++;
154 2 else if(min<59)
155 2 {
156 3 dbuffer=0;
157 3 min++;
158 3 }
159 2 else
160 2 min=0;
161 2 }
162 1 TR0=1;
163 1 }
164
165
166
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 422 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 24 3
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 + -