📄 main.lst
字号:
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG2051.H>
2 #include <intrins.H>
3
4 #define SL_BOARD /*双龙ISP板*/
5 //#define SOME_CHIP /*只支持少数几种芯片*/
6
7 #ifndef SL_BOARD
sbit LED_RED1 = P3^3;
sbit LED_RED2 = P3^4;
sbit LED_GREEN = P3^5;
sbit MOSI = P1^6;
sbit MISO = P1^5;
sbit SCK = P1^7;
sbit RESET = P1^4;
#else
17 sbit LED_RED1 = P3^2;
18 sbit LED_RED2 = P3^4;
19 sbit LED_GREEN = P3^5;
20
21 sbit MOSI = P1^2;
22 sbit MISO = P1^3;
23 sbit SCK = P1^4;
24 sbit RESET = P3^3;
25 #endif
26
27 #ifdef SOME_CHIP /* 只支持生产所用的芯片,避免太多的芯片选择导至出错!!! */
code DeviceType[][2]=
{
//AT90S8515
0x38,0,
//ATmega8515
0x3A,'P',
//ATmega8515 BOOT
0x3B,'P',
//ATmega8
0x76,'P',
//ATmega8 BOOT
0x77,'P',
};
#else
42 code DeviceType[][2]=
43 {
44 //AT90S1200 rev. A
45 0x10,0,
46 //AT90S1200 rev. B
47 0x11,0,
48 //AT90S1200 rev. C
49 0x12,0,
50 //AT90S1200
51 0x13,0,
52 //AT90S2313
53 0x20,0,
54 //AT90S4414
55 0x28,0,
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 2
56 //AT90S4433
57 0x30,0,
58 //AT90S2333
59 0x34,0,
60 //AT90S8515
61 0x38,0,
62 //ATmega8515
63 0x3A,'P',
64 //ATmega8515 BOOT
65 0x3B,'P',
66 //ATmega103
67 0x41,'P',
68 //ATmega603
69 0x42,'P',
70 //ATmega128
71 0x43,'P',
72 //ATmega128 BOOT
73 0x44,'P',
74 //AT90S2323
75 0x48,0,
76 //AT90S2343
77 0x4C,0,
78 //ATtiny11
79 0x50,0,
80 //ATtiny10
81 0x51,0,
82 //ATtiny12
83 0x55,0,
84 //ATtiny15
85 0x56,0,
86 //ATtiny19
87 0x58,0,
88 //ATtiny28
89 0x5C,0,
90 //ATtiny26
91 0x5E,'P',
92 //ATmega161
93 0x60,'P',
94 //ATmega161 BOOT
95 0x61,'P',
96 //ATmega163
97 0x64,'P',
98 //ATmega83
99 0x65,'P',
100 //ATmega163 BOOT
101 0x66,'P',
102 //ATmega83 BOOT
103 0x67,'P',
104 //AT90S8535
105 0x68,0,
106 //ATmega8535??
107 0x6A,'P',
108 //ATmega8535 BOOT??
109 0x6B,'P',
110 //AT90S4434
111 0x6C,0,
112 //AT90C8534
113 0x70,0,
114 //AT90C8544
115 0x71,0,
116 //ATmega32
117 0x72,'P',
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 3
118 //ATmega32 BOOT
119 0x73,'P',
120 //ATmega16
121 0x74,'P',
122 //ATmega16 BOOT
123 0x75,'P',
124 //ATmega8
125 0x76,'P',
126 //ATmega8 BOOT
127 0x77,'P',
128 //AT89C1051
129 // 0x80,0
130 //AT89C2051
131 // 0x81,0
132 //AT89S8252
133 0x86,0,
134 //AT89S53
135 0x87,0
136 };
137 #endif
138
139 #define SW_MAJOR '3' /*Major SW revision number*/
140 #define SW_MINOR '0' /*Minor SW revision number*/
141 #define HW_MAJOR '1' /*Major HW revision number*/
142 #define HW_MINOR '0' /*Minor HW revision number*/
143
144 unsigned char loop,device,pgm_mode;
145 unsigned char Addr_H,Addr_L ;
146 unsigned char command;
147
148
149 void Delay(unsigned int time)
150 {
151 1 while(time) time--;
152 1 }
153
154 void pulse_sck(void)
155 {
156 1 SCK = 1;
157 1 _nop_();
158 1 _nop_();
159 1 _nop_();
160 1 SCK = 0;
161 1 }
162
163 void IncAddrAuto()
164 {
165 1 Addr_L++;
166 1
167 1 if(Addr_L == 0 )
168 1 Addr_H++;
169 1 }
170
171 void init_serial(void)
172 {
173 1 SCON = 0X50;/*Timer 1 is being used to generate baud rates.*/
174 1 PCON = 0X80 | PCON;
175 1 TMOD = 0X20;
176 1 TH1 = 0XFD;
177 1 TR1 = 1; /*TCON.6*/
178 1 // ES = 1; /*IE.4 */
179 1 RI = 0; /*SCON.0*/
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 4
180 1 }
181
182 unsigned char getc()
183 {
184 1 unsigned char buff;
185 1
186 1 while(RI == 0);
187 1 buff = SBUF;
188 1 RI = 0;
189 1 return buff;
190 1 }
191
192 void putc(unsigned char ch)
193 {
194 1 SBUF = ch ;
195 1 _nop_();
196 1 _nop_();
197 1 while( TI==0 );
198 1 TI =0;
199 1 }
200
201 void showID()
202 {
203 1 code char ID[]={"AVR ISP"};
204 1
205 1 for(loop=0;loop<sizeof(ID)-1;loop++) //ID-1是不要发串末的0
206 1 putc ( ID[loop] );
207 1 }
208
209 void show_device(void)
210 {
211 1 for( loop=0;
212 1 loop< sizeof(DeviceType)/sizeof(DeviceType[0]);
213 1 loop++ )
214 1 putc ( DeviceType[loop][0] );
215 1 }
216
217 unsigned char check_device(unsigned char device)
218 {
219 1 for( loop=0;
220 1 loop< sizeof(DeviceType)/sizeof(DeviceType[0]);
221 1 loop++ )
222 1 {
223 2 if(device == DeviceType[loop][0] )
224 2 return DeviceType[loop][1];
225 2 }
226 1 return '?';
227 1 }
228
229 unsigned char wrser(unsigned char dat)
230 {
231 1 unsigned char indat = 0;
232 1 for(loop = 0;loop<8;loop++)
233 1 {
234 2 if( dat & 0x80 )
235 2 MOSI = 1;
236 2 else
237 2 MOSI = 0;
238 2
239 2 dat <<=1;
240 2
241 2 indat <<= 1;
C51 COMPILER V7.09 MAIN 04/11/2005 16:01:24 PAGE 5
242 2
243 2 if(MISO)
244 2 indat |= 1;
245 2
246 2 pulse_sck();
247 2 }
248 1
249 1 return indat;
250 1 }
251
252 void spiinit()
253 {
254 1 unsigned char count;
255 1
256 1 SCK = 0;
257 1 RESET = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -