📄 updata1.lst
字号:
C51 COMPILER V7.07 UPDATA1 07/13/2007 21:24:24 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE UPDATA1
OBJECT MODULE PLACED IN D:\HEX\UPDATA1.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UPDATA1.C BROWSE DEBUG OBJECTEXTEND OBJECT(D:\HEX\UPDATA1.obj)
stmt level source
1
2
3 #include <REGW78E58B.H>
4 #include <absacc.h>
5 #include <intrins.h>
6 #define uchar unsigned char
7 #define uint unsigned int
8 #define ulong unsigned long
9 #define WaitTI while(TI==0);TI=0 /* 等待串行口发送中断 */
10 #define WaitRI while(RI==0);RI=0 /* 等待串行口接收中断 */
11
12 #define True 1
13 #define False 0
14
15
16
17 sbit P1_0=P1^0;
18 sbit P1_1=P1^1;
19 sbit P1_2=P1^2;
20 sbit P1_3=P1^3;
21 sbit P1_4=P1^4;
22 sbit P1_5=P1^5;
23 sbit P1_6=P1^6;
24 sbit P1_7=P1^7;
25
26 sbit P2_0=P2^0;
27 sbit P2_1=P2^1;
28 sbit P2_2=P2^2;
29 sbit P2_3=P2^3;
30 sbit P2_4=P2^4;
31 sbit P2_5=P2^5;
32 sbit P2_6=P2^6;
33 sbit P2_7=P2^7;
34
35 sbit P3_0=P3^0;
36 sbit P3_1=P3^1;
37 sbit P3_2=P3^2;
38 sbit P3_3=P3^3;
39 sbit P3_4=P3^4;
40 sbit P3_5=P3^5;
41 sbit P3_6=P3^6;
42 sbit P3_7=P3^7;
43
44 sbit P4_0=P4^0;
45 sbit P4_1=P4^1;
46 sbit P4_2=P4^2;
47 sbit P4_3=P4^3;
48
49 #define EraseCode 0xA0 //擦除命令命令字
50 #define BlankCode 0xA1 //全空检查命令命令字
51 #define ProgramCode 0xA2 //编程命令命令字
52 #define VerifyCode 0xA3 //检验命令命令字
53 #define EncryptCode 0XA4 //加密命令字
54 #define RestMcuCode 0xA5 //软件复位
55 #define Head_Flag1 0x1B
C51 COMPILER V7.07 UPDATA1 07/13/2007 21:24:24 PAGE 2
56 #define Head_Flag2 0x10
57
58 //**************错误代码*******
59 #define BlankER 0x80
60
61
62
63 //*****************************
64 bit fini,SerialBit,BagHeadBit;
65 uint crc16;
66 uchar idata handle;
67 uchar THH0,TLL0; //定时时间变量
68 typedef struct{
69 uchar OKHead[4];
70 uchar OKData[140];
71 }TxOKDataDef;
72 typedef struct{
73 uchar ReceiveHead[5];
74 uchar ReceiveData[140];
75 }ReceiveDataDef;
76 typedef struct{
77 uchar ProgramHead[5];
78 uchar ProgramAdd[4];
79 uchar ProgramData[140];
80 }ProgramDataDef;
81
82 union{
83 uchar ComBuf[150];
84 TxOKDataDef OK;
85 ReceiveDataDef RXD;
86 ProgramDataDef PR;
87 }idata Un;
88 void TIMER0_INTRRUPT(void);// interrupt 1 using 1;
89 void initialization(void);
90
91 void RESET_MCU(); //软件复位MCU
92 void PROGRAM_32K_LOOP(); //写MCU
93 void ERASE_MCU();
94 void BANK_CHECK_32K(); //擦除MCU
95 void protect_data();
96 void verfiy_data(); //读数据
97 uint cal_crc(unsigned char *ptr, unsigned char len); //计算数据串的CRC值
98 /**********************************************************************************/
99 /* 从232接收一个数据,数据保存到UC0变量中 */
100 uchar RcvDataBy232(void)
101 {
102 1 uchar Temp;
103 1 uint Counter=0; //清零计数指针
104 1 do
105 1 {
106 2 Counter++;
107 2 if(Counter>0xFff)
108 2 { // 如果等待记时过长则退出
109 3 RI=0; //清除接收中断标志
110 3 SerialBit=1; // 设置接收数据超时标志
111 3 return(0xFF); //退出接收
112 3 }
113 2 }while(RI==0); //没有接收到数据继续等待
114 1 Temp=SBUF; //保存接收到的数据
115 1 RI=0;
116 1 return(Temp); //返回接收到的数据
117 1 }
C51 COMPILER V7.07 UPDATA1 07/13/2007 21:24:24 PAGE 3
118 /****************************************
119 --------- 串口中断 ----------
120 *****************************************/
121 void ssio(void) interrupt 4 using 3
122 {
123 1 uchar data Slen,uc0,j=0;
124 1 ES=0; /* 关串行中断 */
125 1 BagHeadBit=0; /* 接收命令包头出错标志位 */
126 1 SerialBit=0; /* 接收命令包时长度不够标志位 */
127 1 uc0=RcvDataBy232();
128 1 if(uc0!=Head_Flag1) /* 命令头 0X1B */
129 1 //命令头不为0X1B,设置命令头错标志,等待该包数据发送完毕后退出
130 1 { BagHeadBit=1; do{RcvDataBy232();}while(SerialBit==0); SerialBit=0; handle=0xff; goto reti;}
131 1 Un.RXD.ReceiveHead[0]=uc0;
132 1 uc0=RcvDataBy232(); //接收第二字节
133 1 if(uc0!=Head_Flag2) /*0X10*/
134 1 //命令头第二个字节数据不是0X10,柚妹
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -