📄 main.lst
字号:
C51 COMPILER V8.01 MAIN 12/04/2006 10:50:21 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE OPTIMIZE(7,SPEED) BROWSE ORDER MODDP2 DEBUG OBJECTEXTEND
line level source
1
2 #include <string.h>
3 #include <stdio.h>
4
5 #include "config.h"
6 #include "isp.h"
7 #include "lcd.h"
8 #include "system.h"
9 #include "hex.h"
10
11 void vInitSystem(void);
12 void uart_tx(Uchar tx_data);
13
14 extern unsigned char Msg;
15 extern unsigned char m_BankSector;
16 extern unsigned char mBuffer[256];
17 extern unsigned int offset;
18 extern unsigned char SreialStr;
19
20 unsigned int mSectorSize;
21 unsigned char m_Bank;
22 unsigned int moffset;
23
24 float mPer;
25 float mPercent;
26
27 void main(void)
28 {
29 1 unsigned char mPTick=0;
30 1 unsigned char mFlashTimes;
31 1 unsigned int mFlashMax;
32 1 unsigned int mFlashID;
33 1 unsigned long mErrsum;
34 1
35 1 mFlashID = vFlashId();
36 1 vInitSystem();
37 1 SreialStr = 0;
38 1
39 1 //界面显示
40 1 vDrawLogo(4, 36, 256, 72, 1);
41 1 lprintf(7,166,0,"FirmWare V1.0 12/15/06");
42 1 lprintf(7,184,0,"Serial No xxxx-xxxx");
43 1 lprintf(7,202,0,"Device ID = %4X",mFlashID);
44 1 lprintf(3,220,0,"Shanghai Spectrum Instrument Ltd.");
45 1
46 1 Msg = HEX_DEC_OK;
47 1 while(1)
48 1 {
49 2 switch (Msg)
50 2 {
51 3 case HEX_DEC_SECTOR_IRQ :
52 3 mFlashID = vFlashId();
53 3 Msg = HEX_DEC_OK;
54 3 vCOmSend(2, 0x1D, mFlashID); //返回FLASH ID号
55 3 break;
C51 COMPILER V8.01 MAIN 12/04/2006 10:50:21 PAGE 2
56 3
57 3 case HEX_DEC_SECTOR_BANK :
58 3 mSectorSize = offset;
59 3 Msg = HEX_DEC_OK;
60 3 vCOmSend(2, 0x1E, mSectorSize); //返回FLASH扇区大小
61 3 break;
62 3
63 3 case HEX_DEC_START : //开始
64 3 mFlashMax = 0; //每帧允许编程次数
65 3 mPer = 0;
66 3 mPTick = 0;
67 3 mErrsum = 0;
68 3 vFlashErase(); //擦除Flash
69 3 Msg = HEX_DEC_OK;
70 3 lprintf(7,126,0,"Programing ...... ");
71 3 vCOmSend(0, 0x05, 0); //就绪
72 3 break;
73 3
74 3 case HEX_DEC_SEG_ERR : //段错误
75 3 Msg = HEX_DEC_OK;
76 3 vCOmSend(0, 0x09, 0);
77 3 break;
78 3
79 3 case HEX_DEC_SEG_DATA : //段数据
80 3 m_Bank = m_BankSector;
81 3 Msg = HEX_DEC_OK;
82 3 vCOmSend(0, 0x08, 0); //段正确
83 3 break;
84 3
85 3 case HEX_DEC_FRAME_ERR : //帧错误
86 3 Msg = HEX_DEC_OK;
87 3 vCOmSend(0, 0x07, 0); //帧错误
88 3 break;
89 3
90 3 case HEX_DEC_FRAME_DATA : //帧数据
91 3 moffset = offset;
92 3 mFlashMax = 0;
93 3 vWriteSector(mBuffer,mSectorSize,offset,m_Bank);
94 3 if((mFlashMax = vVerify(mBuffer,mSectorSize,moffset,m_Bank)) !=0)
95 3 {
96 4 mFlashTimes = 1;
97 4 vWriteSector(mBuffer,mSectorSize,offset,m_Bank);
98 4 if((mFlashMax = vVerify(mBuffer,mSectorSize,moffset,m_Bank)) !=0)
99 4 {
100 5 mFlashTimes = 2;
101 5 vWriteSector(mBuffer,mSectorSize,offset,m_Bank);
102 5 if((mFlashMax = vVerify(mBuffer,mSectorSize,moffset,m_Bank)) !=0)
103 5 {
104 6 vWriteSector(mBuffer,mSectorSize,offset,m_Bank);
105 6 mFlashMax = vVerify(mBuffer,mSectorSize,moffset,m_Bank);
106 6 }
107 5 }
108 4 }
109 3 if(mFlashMax != 0)
110 3 {
111 4 mErrsum += (unsigned long )mFlashMax;
112 4 lprintf(7,148,0,"Error Number is %ld",mErrsum);
113 4 Msg = HEX_DEC_OK;
114 4 vCOmSend(0, 0x1A, 0); //烧写错误
115 4 break;
116 4 }
117 3
C51 COMPILER V8.01 MAIN 12/04/2006 10:50:21 PAGE 3
118 3 mPer += (float)mSectorSize;
119 3 mPTick++;
120 3 if(7<mPTick)
121 3 {
122 4 mPTick = 0;
123 4 mPercent = (float)(mPer/(4*65536.0));
124 4 mPercent = mPercent*100+0.5;
125 4 lprintf(24,126,0,"%3d%c",(unsigned int)mPercent,'%');
126 4 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -