📄 cs15-2.lst
字号:
C51 COMPILER V7.06 CS15_2 02/18/2007 10:55:17 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CS15_2
OBJECT MODULE PLACED IN CS15-2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CS15-2.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <REG51.H>
2 #define uint unsigned int
3 #define uchar unsigned char
4 uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
5 uchar code ACT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
6 uchar status;
7 sbit OUT=P1^0;
8 void delay(uint k);
9 //***********************************
10 struct time
11 {
12 uchar sec;
13 uchar msec;
14 };
15 struct time run_time,set_time;
16 struct time *pt1,*pt2;
17 //***********************************
18 void initial(void)
19 {
20 1 TMOD=0x11;
21 1 TH0=-(10000/256);
22 1 TL0=-(10000%256);
23 1 TH1=-(1000/256);
24 1 TL1=-(1000%256);
25 1 ET0=1;ET1=1;TR1=1;
26 1 EA=1;
27 1 }
28 //***********************************
29 void time0(void) interrupt 1
30 {
31 1 TH0=-(10000/256);
32 1 TL0=-(10000%256);
33 1 run_time.msec++;
34 1 if(run_time.msec>99){run_time.sec++;run_time.msec=0;}
35 1 if(run_time.sec>99){run_time.msec=0;run_time.sec=0;}
36 1 if((pt2->msec>0)||(pt2->sec>0))
37 1 {
38 2 if((pt1->msec==pt2->msec)&&(pt1->sec==pt2->sec)){TR0=0;OUT=0;}
39 2 }
40 1 }
41 //***********************************
42 void display(uchar cnt)
43 {
44 1 switch(cnt)
45 1 {
46 2 case 0:P0=SEG7[run_time.msec%10];P2=ACT[0];break;
47 2 case 1:P0=SEG7[run_time.msec/10];P2=ACT[1];break;
48 2 case 2:P0=SEG7[run_time.sec%10];P2=ACT[2];break;
49 2 case 3:P0=SEG7[run_time.sec/10];P2=ACT[3];break;
50 2 case 4:P0=SEG7[set_time.msec%10];P2=ACT[4];break;
51 2 case 5:P0=SEG7[set_time.msec/10];P2=ACT[5];break;
52 2 case 6:P0=SEG7[set_time.sec%10];P2=ACT[6];break;
53 2 case 7:P0=SEG7[set_time.sec/10];P2=ACT[7];break;
54 2 default:break;
55 2 }
C51 COMPILER V7.06 CS15_2 02/18/2007 10:55:17 PAGE 2
56 1 }
57 //***********************************
58 void set_ms_display(uchar cnt)
59 { switch(cnt)
60 1 {
61 2 case 0:P0=SEG7[run_time.msec%10];P2=ACT[0];break;
62 2 case 1:P0=SEG7[run_time.msec/10];P2=ACT[1];break;
63 2 case 2:P0=SEG7[run_time.sec%10];P2=ACT[2];break;
64 2 case 3:P0=SEG7[run_time.sec/10];P2=ACT[3];break;
65 2 case 4:P0=SEG7[set_time.msec%10]|0x80;P2=ACT[4];break;
66 2 case 5:P0=SEG7[set_time.msec/10]|0x80;P2=ACT[5];break;
67 2 case 6:P0=SEG7[set_time.sec%10];P2=ACT[6];break;
68 2 case 7:P0=SEG7[set_time.sec/10];P2=ACT[7];break;
69 2 default:break;
70 2 }
71 1 }
72 //********************************************
73 void set_s_display(uchar cnt)
74 {
75 1 switch(cnt)
76 1 {
77 2 case 0:P0=SEG7[run_time.msec%10];P2=ACT[0];break;
78 2 case 1:P0=SEG7[run_time.msec/10];P2=ACT[1];break;
79 2 case 2:P0=SEG7[run_time.sec%10];P2=ACT[2];break;
80 2 case 3:P0=SEG7[run_time.sec/10];P2=ACT[3];break;
81 2 case 4:P0=SEG7[run_time.msec%10];P2=ACT[4];break;
82 2 case 5:P0=SEG7[set_time.msec/10];P2=ACT[5];break;
83 2 case 6:P0=SEG7[set_time.sec%10]|0x80;P2=ACT[6];break;
84 2 case 7:P0=SEG7[set_time.sec/10]|0x80;P2=ACT[7];break;
85 2 default:break;
86 2 }
87 1 }
88 //******************************
89 void time1(void) interrupt 3
90 {
91 1 static uchar cnt;
92 1 TH1=-(1000/256);
93 1 TL1=-(1000%256);
94 1 cnt++;
95 1 if(cnt>7)cnt=0;
96 1 switch(status)
97 1 {
98 2 case 5: display(cnt);break;
99 2 case 0: display(cnt);break;
100 2 case 1: set_ms_display(cnt);break;
101 2 case 2: set_s_display(cnt);break;
102 2 default:break;
103 2 }
104 1 }
105 //****************************************
106 void key_s1(void)
107 {
108 1 P3=0xff;
109 1 if(P3==0xfb)
110 1 {
111 2 switch(status)
112 2 {
113 3 case 1:if(set_time.msec==99)set_time.msec=99;
114 3 else set_time.msec++;break;
115 3 case 2:if(set_time.sec==99)set_time.sec=99;
116 3 else set_time.sec++;break;
117 3 default :break;
C51 COMPILER V7.06 CS15_2 02/18/2007 10:55:17 PAGE 3
118 3 }
119 2 }
120 1 }
121 //****************************************
122 void key_s2(void)
123 {
124 1 P3=0xff;
125 1 if(P3==0xf7)
126 1 {
127 2 switch(status)
128 2 {
129 3 case 1:if(set_time.msec==0)set_time.msec=0;
130 3 else set_time.msec--;break;
131 3 case 2:if(set_time.sec==0)set_time.sec=0;
132 3 else set_time.sec--;break;
133 3 default :break;
134 3 }
135 2 }
136 1 }
137 //-----------------------------------------------
138 void key_s4(void)
139 {
140 1 P3=0xff;
141 1 if(P3==0xdf){status++;}
142 1 if(status==3)status=1;
143 1 if(status==6)
144 1 {run_time.msec=0;
145 2 run_time.sec=0;
146 2 status=0;}
147 1 }
148 //*****************************************
149 void key_s3(void)
150 {
151 1 P3=0xff;
152 1 if(P3==0xef){status=5;TR0=1;}
153 1 }
154 //*****************************************
155 void main(void)
156 {
157 1 pt1=&run_time;pt2=&set_time;
158 1 initial();
159 1 for(;;)
160 1 {
161 2 key_s1();
162 2 key_s2();
163 2 key_s3();
164 2 key_s4();
165 2 delay(300);
166 2 }
167 1 }
168 //****************************************
169 void delay(uint k)
170 {
171 1 uint data i,j;
172 1 for(i=0;i<k;i++)
173 1 {for(j=0;j<121;j++)
174 2 {;}}
175 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1015 ----
C51 COMPILER V7.06 CS15_2 02/18/2007 10:55:17 PAGE 4
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
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 + -