📄 vs8000.lst
字号:
C51 COMPILER V7.00 VS8000 04/15/2004 12:42:04 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE VS8000
OBJECT MODULE PLACED IN vs8000.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE vs8000.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <AT89X51.H>
3 #include <intrins.h>
4 //#include <stdlib.h>
5
6 #define CR 0x0d
7 #define LF 0x0a
8
9 #define MAX_ADDR_INPUT 15
10 #define MAX_ADDR_OUTPUT 3
11
12 #define CHIP_CE0 P3_3
13 #define CHIP_CE1 P3_2
14 #define CHIP_UPDATE P3_4
15 #define CHIP_SHDN P3_5
16 #define CHIP_WR P3_7
17 #define CHIP_A0 P1_0
18 #define CHIP_A1 P1_1
19 #define CHIP_D0 P1_2
20 #define CHIP_D1 P1_3
21 #define CHIP_D2 P1_4
22 #define CHIP_D3 P1_5
23 #define CHIP_DATA P1
24
25 #define PIN_TEST P1_6
26
27 #define WATCHDOG P1_7
28
29 unsigned char o_switcher[4];
30
31 unsigned char my_atoi( char *buffer )
32 {
33 1 //unsigned char result;
34 1 if( buffer[0] < '0' || buffer[0] > '9' ) return 0xff;
35 1 if( buffer[1] < '0' || buffer[1] > '9' ) return 0xff;
36 1 return ( (buffer[0] - '0') * 10 + (buffer[1] - '0') );
37 1 }
38
39 void channel_switch( unsigned char input, unsigned char output, bit display )
40 {
41 1 if( input > MAX_ADDR_INPUT ) {
42 2 printf( "ERROR\n\r" );
43 2 return;
44 2 }
45 1 if( output > MAX_ADDR_OUTPUT ) {
46 2 printf( "ERROR\n\r" );
47 2 return;
48 2 }
49 1
50 1 o_switcher[output] = input << 2;
51 1 o_switcher[output] += output;
52 1 o_switcher[output] &= 0x1f;
53 1 o_switcher[output] |= 0x20;
54 1
55 1 CHIP_CE0 = 1;
C51 COMPILER V7.00 VS8000 04/15/2004 12:42:04 PAGE 2
56 1 CHIP_CE1 = 1;
57 1 CHIP_UPDATE = 1;
58 1 CHIP_WR = 1;
59 1 CHIP_DATA = o_switcher[output];
60 1 PIN_TEST ^= 0x01;
61 1 if( input & 0x08 ) {
62 2 //disable CHIP0
63 2 CHIP_CE0 = 0;
64 2 CHIP_WR = 0;
65 2 _nop_();
66 2 CHIP_WR = 1;
67 2 CHIP_CE0 = 1;
68 2 _nop_();
69 2 _nop_();
70 2 CHIP_UPDATE = 0;
71 2 CHIP_UPDATE = 1;
72 2 _nop_();
73 2 _nop_();
74 2 _nop_();
75 2 _nop_();
76 2
77 2 o_switcher[output] &= 0x1f;
78 2 CHIP_DATA = o_switcher[output];
79 2 PIN_TEST ^= 0x01;
80 2
81 2 //enable CHIP1
82 2 CHIP_CE1 = 0;
83 2 CHIP_WR = 0;
84 2 _nop_();
85 2 CHIP_WR = 1;
86 2 CHIP_CE1 = 1;
87 2 _nop_();
88 2 _nop_();
89 2 CHIP_UPDATE = 0;
90 2 CHIP_UPDATE = 1;
91 2 _nop_();
92 2 _nop_();
93 2 _nop_();
94 2 _nop_();
95 2 }
96 1 else {
97 2 //disable CHIP1
98 2 CHIP_CE1 = 0;
99 2 CHIP_WR = 0;
100 2 _nop_();
101 2 CHIP_WR = 1;
102 2 CHIP_CE1 = 1;
103 2 _nop_();
104 2 _nop_();
105 2 CHIP_UPDATE = 0;
106 2 CHIP_UPDATE = 1;
107 2 _nop_();
108 2 _nop_();
109 2 _nop_();
110 2 _nop_();
111 2
112 2 o_switcher[output] &= 0x1f;
113 2 CHIP_DATA = o_switcher[output];
114 2 PIN_TEST ^= 0x01;
115 2
116 2 //enable CHIP0
117 2 CHIP_CE0 = 0;
C51 COMPILER V7.00 VS8000 04/15/2004 12:42:04 PAGE 3
118 2 CHIP_WR = 0;
119 2 _nop_();
120 2 CHIP_WR = 1;
121 2 CHIP_CE0 = 1;
122 2 _nop_();
123 2 _nop_();
124 2 CHIP_UPDATE = 0;
125 2 CHIP_UPDATE = 1;
126 2 _nop_();
127 2 _nop_();
128 2 _nop_();
129 2 _nop_();
130 2 }
131 1
132 1 CHIP_DATA = 0xff;
133 1 PIN_TEST ^= 0x01;
134 1 if( display ) printf( "SWITCH %d TO %d\n\r", (int)input, (int)output );
135 1 //if( display ) printf( "OK\n\r" );
136 1 }
137
138 int main()
139 {
140 1 bit bInput;
141 1 unsigned char act;
142 1 char cmd[2];
143 1 unsigned char addr_input;
144 1 unsigned char addr_output;
145 1
146 1 SCON = 0x50;
147 1 TMOD = 0x21;
148 1 PCON = 0x00;
149 1
150 1 P3 = 0xff;
151 1 P1 = 0xff;
152 1
153 1
154 1 TH1 = 0xf4;
155 1 TL1 = 0xf4;
156 1 TR1 = 1;
157 1
158 1 TH0 = 0xff;
159 1 TL0 = 0xf0;
160 1 TR0 = 1;
161 1 ET0 = 1;
162 1
163 1 TI = 1;
164 1 RI = 0;
165 1
166 1
167 1 ES = 0;
168 1 EA = 1;
169 1
170 1
171 1 WATCHDOG = 0x01;
172 1
173 1 //printf( "\n\rINITIALIZING...\n\r" );
174 1
175 1 CHIP_SHDN = 0;
176 1
177 1 channel_switch( 0, 0, 0 );
178 1 channel_switch( 1, 1, 0 );
179 1 channel_switch( 2, 2, 0 );
C51 COMPILER V7.00 VS8000 04/15/2004 12:42:04 PAGE 4
180 1 channel_switch( 3, 3, 0 );
181 1
182 1 printf( "\n\rSTARTED\n\r" );
183 1
184 1 bInput = 0;
185 1 act = 0;
186 1 cmd[0] = CR;
187 1 addr_input = 0xff;
188 1 addr_output = 0xff;
189 1 while( 1 ) {
190 2 if( cmd[0] == CR || cmd[0] == LF ) {
191 3 if( bInput ) {
192 4 if( act == 0 ) {
193 5 printf( "ERROR\n\r" );
194 5 }
195 4 else if( act == 1 ) {
196 5 PIN_TEST ^= 0x01;
197 5 printf( "OK\n\r" );
198 5 }
199 4 else if( act == 2 ) {
200 5 channel_switch( addr_input, addr_output, 1 );
201 5 }
202 4 else {
203 5 printf( "ERROR\n\r" );
204 5 }
205 4 bInput = 0;
206 4 act = 0;
207 4 }
208 3 cmd[0] = 0x00;
209 3 }
210 2 else {
211 3 cmd[0] = getchar();
212 3 if( cmd[0] == CR || cmd[0] == LF ) continue;
213 3 bInput = 1;
214 3 cmd[1] = getchar();
215 3 if( cmd[1] == CR || cmd[1] == LF ) {
216 4 cmd[0] = cmd[1];
217 4 continue;
218 4 }
219 3 act = 0;
220 3 if( cmd[0] == 'V' && cmd[1] == 'S' ) {
221 4 act = 1;
222 4 continue;
223 4 }
224 3 if( cmd[0] == 'C' && cmd[1] == 'H' ) {
225 4 act = 2;
226 4 addr_input = 0xff;
227 4 addr_output = 0xff;
228 4 cmd[0] = getchar();
229 4 if( cmd[0] == CR || cmd[0] == LF ) continue;
230 4 cmd[1] = getchar();
231 4 if( cmd[1] == CR || cmd[1] == LF ) {
232 5 cmd[0] = cmd[1];
233 5 continue;
234 5 }
235 4 addr_input = my_atoi(cmd);
236 4 if( addr_input == 0x00 && cmd[0] != '0' ) {
237 5 addr_input = 0xff;
238 5 }
239 4 cmd[0] = getchar();
240 4 if( cmd[0] == CR || cmd[0] == LF ) continue;
241 4 cmd[1] = getchar();
C51 COMPILER V7.00 VS8000 04/15/2004 12:42:04 PAGE 5
242 4 if( cmd[1] == CR || cmd[1] == LF ) {
243 5 cmd[0] = cmd[1];
244 5 continue;
245 5 }
246 4 if( cmd[0] != 'T' || cmd[1] != 'O' ) {
247 5 addr_input = 0xff;
248 5 continue;
249 5 }
250 4 cmd[0] = getchar();
251 4 if( cmd[0] == CR || cmd[0] == LF ) continue;
252 4 cmd[1] = getchar();
253 4 if( cmd[1] == CR || cmd[1] == LF ) {
254 5 cmd[0] = cmd[1];
255 5 continue;
256 5 }
257 4 addr_output = my_atoi(cmd);
258 4 if( addr_output == 0x00 && cmd[0] != '0' ) {
259 5 addr_output = 0xff;
260 5 }
261 4 continue;
262 4 }
263 3 }
264 2 }
265 1 printf( "\n\rSHUTDOWN\n\r" );
266 1 }
267
268 void timer0 (void) interrupt TF0_VECTOR
269 {
270 1 EA = 0;
271 1
272 1 //PIN_TEST ^= 0x01;
273 1 WATCHDOG ^= 0x01;
274 1
275 1 TH0 = 0xff;
276 1 TL0 = 0xf0;
277 1 TR0 = 1;
278 1 ET0 = 1;
279 1 EA = 1;
280 1 }
281
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 754 ----
CONSTANT SIZE = 56 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 7
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -