📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 12/07/2007 14:43:00 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /////////////////////////////////////
2 // Generated Initialization File //
3 /////////////////////////////////////
4
5 #include "includes.h"
6
7 // Peripheral specific initialization functions,
8 // Called from the Init_Device() function
9 void Reset_Sources_Init()
10 {
11 1 WDTCN = 0xDE;
12 1 WDTCN = 0xAD;
13 1 }
14
15 void Timer_Init()
16 {
17 1 CKCON = 0x10;
18 1 TCON = 0x40;
19 1 TMOD = 0x20;
20 1 TH1 = 0xFA;
21 1 }
22
23 void UART_Init()
24 {
25 1 SCON0 = 0x50;
26 1 }
27
28 void Port_IO_Init()
29 {
30 1 // P0.0 - TX0 (UART0), Open-Drain, Digital
31 1 // P0.1 - RX0 (UART0), Open-Drain, Digital
32 1 // P0.2 - Unassigned, Open-Drain, Digital
33 1 // P0.3 - Unassigned, Open-Drain, Digital
34 1 // P0.4 - Unassigned, Open-Drain, Digital
35 1 // P0.5 - Unassigned, Open-Drain, Digital
36 1 // P0.6 - Unassigned, Open-Drain, Digital
37 1 // P0.7 - Unassigned, Open-Drain, Digital
38 1
39 1 // P1.0 - Unassigned, Open-Drain, Digital
40 1 // P1.1 - Unassigned, Open-Drain, Digital
41 1 // P1.2 - Unassigned, Open-Drain, Digital
42 1 // P1.3 - Unassigned, Open-Drain, Digital
43 1 // P1.4 - Unassigned, Open-Drain, Digital
44 1 // P1.5 - Unassigned, Open-Drain, Digital
45 1 // P1.6 - Unassigned, Open-Drain, Digital
46 1 // P1.7 - Unassigned, Open-Drain, Digital
47 1
48 1 // P2.0 - Unassigned, Open-Drain, Digital
49 1 // P2.1 - Unassigned, Open-Drain, Digital
50 1 // P2.2 - Unassigned, Open-Drain, Digital
51 1 // P2.3 - Unassigned, Open-Drain, Digital
52 1 // P2.4 - Unassigned, Open-Drain, Digital
53 1 // P2.5 - Unassigned, Open-Drain, Digital
54 1 // P2.6 - Unassigned, Open-Drain, Digital
55 1 // P2.7 - Unassigned, Open-Drain, Digital
C51 COMPILER V8.08 MAIN 12/07/2007 14:43:00 PAGE 2
56 1
57 1 // P3.0 - Unassigned, Open-Drain, Digital
58 1 // P3.1 - Unassigned, Open-Drain, Digital
59 1 // P3.2 - Unassigned, Open-Drain, Digital
60 1 // P3.3 - Unassigned, Open-Drain, Digital
61 1 // P3.4 - Unassigned, Open-Drain, Digital
62 1 // P3.5 - Unassigned, Open-Drain, Digital
63 1 // P3.6 - Unassigned, Open-Drain, Digital
64 1 // P3.7 - Unassigned, Open-Drain, Digital
65 1 P1MDOUT = 0xff;
66 1 XBR0 = 0x04;
67 1 XBR2 = 0x40;
68 1 }
69
70 void Oscillator_Init()
71 {
72 1 int i = 0;
73 1 OSCXCN = 0x67;
74 1 for (i = 0; i < 3000; i++); // Wait 1ms for initialization
75 1 while ((OSCXCN & 0x80) == 0);
76 1 OSCICN = 0x0C;
77 1 }
78
79 // Initialization function for device,
80 // Call Init_Device() from your main program
81 void Init_Device(void)
82 {
83 1 Reset_Sources_Init();
84 1 Timer_Init();
85 1 UART_Init();
86 1 Port_IO_Init();
87 1 Oscillator_Init();
88 1 }
89
90 sbit P16 = P1^6;
91 UINT8 FlashPageMax = 119;
92 #define START 0x43 //向主机发送,请求数据发送
93 #define ACK 0x06 //每接收到一个程序,如果验证正确,发送ack
94 #define SOH 0x01 //主机发送帧头
95 #define EOT 0x04 // 发送结束.
96 #define NAK 0x15
97
98 //定义状态.
99
100 #define SendStart 0
101 #define RecData 1
102 #define SendAck 2
103 #define RunUsr 3
104 #define RecSOH 4
105 #define SaveData 5
106 #define SendNak 6
107 typedef union{
108 UINT16 intnum;
109 UINT8 charnum[2];
110 }UNION16;
111 void main()
112 {
113 1 UINT8 flashErasePage=0;
114 1 UINT8 stage;
115 1 UINT8 tmp[2] = {0};
116 1 UINT8 flashData[512] ={0};
117 1 UINT8 tmpBuf[132] = {0};
C51 COMPILER V8.08 MAIN 12/07/2007 14:43:00 PAGE 3
118 1 UINT8 tmpBufIndex;
119 1 UINT16 flashDataIndex;
120 1 UINT8 index = 0;
121 1 UNION16 crc;
122 1 Init_Device();
123 1 stage = SendStart;
124 1 while(1) {
125 2 switch(stage){
126 3 case SendStart://发送起始传输命令
127 3 SBUF0 = START;
128 3 while(TI0==0);
129 3 TI0=0;
130 3
131 3 //stage = SendStart;
132 3 stage = RecSOH;
133 3 break;
134 3 case RecSOH:
135 3 while(RI0==0);
136 3 RI0=0;
137 3 tmp[0] = SBUF0;
138 3 if(SOH==tmp[0]){//接收到SOH起始帧头
139 4 stage = RecData;
140 4 }
141 3 else if(EOT==tmp[0]){//接收到EOT结束帧头.
142 4 stage = RunUsr;
143 4 }
144 3 break;
145 3 case RecData:
146 3 for(tmpBufIndex=0;tmpBufIndex<132;tmpBufIndex++){
147 4 while(RI0==0);
148 4 RI0=0;
149 4 tmpBuf[tmpBufIndex] = SBUF0;
150 4 }
151 3 if(tmpBuf[0]+tmpBuf[1]==0xff){//序列号正确
152 4 crc.intnum = Crc16Cal(&tmpBuf[2],128);
153 4 if((crc.charnum[0]==tmpBuf[130])&&(crc.charnum[1]==tmpBuf[131])){
154 5 stage = SaveData;
155 5 }
156 4 }else{
157 4 stage = SendNak;
158 4 }
159 3 case SaveData:
160 3 /* for(flashDataIndex;flashDataIndex+128;flashDataIndex++){
161 3 flashData[flashDataIndex] = tmpBuf[tmpBufIndex++];
162 3 }
163 3 if(flashDataIndex ==512){
164 3 if(flashErasePage>FlashPageMax){
165 3 while(1){
166 3 SBUF0 =0x43;//C
167 3 while(TI0 == 0);
168 3 TI0 = 0;
169 3 }
170 3 }
171 3 FlashErase(flashErasePage);
172 3 FlashWrite(flashData,flashErasePage);
173 3 flashDataIndex = 0;
174 3 flashErasePage++;
175 3
176 3
177 3 } */
178 3 stage = SendAck;
179 3 break;
C51 COMPILER V8.08 MAIN 12/07/2007 14:43:00 PAGE 4
180 3 case SendAck:
181 3 SBUF0 = ACK;
182 3 stage = RecSOH;
183 3 break;
184 3 case SendNak:
185 3 SBUF0 = NAK;
186 3 stage = RecSOH;
187 3 break;
188 3 case RunUsr:
189 3 SBUF0 = ACK;
190 3 while(TI0==0);
191 3 TI0=0;
192 3 while(1);
193 3 break;
194 3
195 3
196 3
197 3 }
198 2 }
199 1 }
*** WARNING C280 IN LINE 119 OF MAIN.C: 'flashDataIndex': unreferenced local variable
200
201
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 523 ----
CONSTANT SIZE = 646 ----
XDATA SIZE = 657 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -