📄 fx1n.lst
字号:
C51 COMPILER V8.16 FX1N 10/10/2009 14:43:37 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE FX1N
OBJECT MODULE PLACED IN FX1N.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FX1N.c LARGE WARNINGLEVEL(1) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "system.h"
2
3 //=======================================================================================================
4 // 函数名称: hextoasc
5 //
6 // 功能描述: HEX 转 ASCII
7 //
8 // 输 入: unsigned char hexdata
9 //
10 // 输 出: unsigned int
11 //
12 // 全局变量:
13 // 调用模块: 无
14 //
15 // 作 者: 卢明君
16 // 日 期: 2009年9月15日
17 // 备 注:
18 //-------------------------------------------------------------------------------------------------------
19 // 修改人:
20 // 日 期:
21 // 备 注:
22 //-------------------------------------------------------------------------------------------------------
23 //=======================================================================================================
24 unsigned int hextoasc(unsigned char hexdata)
25 {
26 1 unsigned char ucdata=0;
27 1 unsigned int backdata=0;
28 1 unsigned int tempdata=0;
29 1 ucdata = hexdata & 0x0f;
30 1 backdata = (ucdata<10)?(ucdata+0x30):(ucdata+0x41-0x0a);
31 1 hexdata >>= 4;
32 1 ucdata = hexdata & 0x0f;
33 1 tempdata = (ucdata<10)?(ucdata+0x30):(ucdata+0x41-0x0a);
34 1 tempdata <<= 8;
35 1 backdata |= tempdata;
36 1 return backdata;
37 1 }
38 //=======================================================================================================
39 // 函数名称: asctohex
40 //
41 // 功能描述: ASCII 转 HEX
42 //
43 // 输 入: unsigned char *ascdata
44 //
45 // 输 出: unsigned char
46 //
47 // 全局变量:
48 // 调用模块: 无
49 //
50 // 作 者: 卢明君
51 // 日 期: 2009年9月15日
52 // 备 注: 输入unsigned char *ascdata,函数内,使用到的为*ascdata和*(ascdata+1).
53 //-------------------------------------------------------------------------------------------------------
54 // 修改人:
55 // 日 期:
C51 COMPILER V8.16 FX1N 10/10/2009 14:43:37 PAGE 2
56 // 备 注:
57 //-------------------------------------------------------------------------------------------------------
58 //=======================================================================================================
59 unsigned char asctohex(unsigned char *ascdata)
60 {
61 1 unsigned char backdata=0;
62 1 unsigned char tempdata=0;
63 1 if(*ascdata<0x3a)
64 1 backdata = *ascdata-0x30;
65 1 else if(*ascdata>0x40)
66 1 backdata = *ascdata-0x41+0x0a;
67 1 if(*(ascdata+1)<0x3a)
68 1 tempdata = *(ascdata+1)-0x30;
69 1 else if(*(ascdata+1)>0x40)
70 1 tempdata = *(ascdata+1)-0x41+0x0a;
71 1 backdata <<= 4;
72 1 backdata |= tempdata;
73 1 return backdata;
74 1 }
75 //=======================================================================================================
76 // 函数名称: ascto0F
77 //
78 // 功能描述: 将ASCII 转换成0~F
79 //
80 // 输 入: unsigned char ucdata
81 //
82 // 输 出: unsigned char
83 //
84 // 全局变量:
85 // 调用模块: 无
86 //
87 // 作 者: 卢明君
88 // 日 期: 2009年9月15日
89 // 备 注: ascto0F.F旁边的是数字0
90 //-------------------------------------------------------------------------------------------------------
91 // 修改人:
92 // 日 期:
93 // 备 注:
94 //-------------------------------------------------------------------------------------------------------
95 //=======================================================================================================
96 unsigned char ascto0F(unsigned char ucdata)
97 {
98 1 if(ucdata<0x3a)ucdata=ucdata-0x30;
99 1 else if(ucdata>0x40)ucdata=ucdata-0x41+0x0a;
100 1 else while(1); // 错误处理
101 1 return ucdata;
102 1 }
103 //=======================================================================================================
104 // 函数名称: WriteFlash
105 //
106 // 功能描述: HEX 转 ASCII
107 //
108 // 输 入: unsigned int WriteAddr,unsigned char *Buf,unsigned int WriteLen
109 //
110 // 输 出: void
111 //
112 // 全局变量:
113 // 调用模块: IAPFlashProgremMode
114 //
115 // 作 者: 卢明君
116 // 日 期: 2009年9月15日
117 // 备 注: WriteAddr为写地址;*Buf为待写存储区的指针;WriteLen为写的长度大小.
C51 COMPILER V8.16 FX1N 10/10/2009 14:43:37 PAGE 3
118 //-------------------------------------------------------------------------------------------------------
119 // 修改人:
120 // 日 期:
121 // 备 注:
122 //-------------------------------------------------------------------------------------------------------
123 //=======================================================================================================
124 void WriteFlash(unsigned int WriteAddr,unsigned char *Buf,unsigned int WriteLen)
125 {
126 1 unsigned int i;
127 1 unsigned char wrdata=0;
128 1 for(i=0;i<WriteLen*2;i+=2) // 由原来的每页写512字节,改为每页写256个字节.存储地址不连续; 由原来存储ASCII码
-格式,改为存储HEX格式.
129 1 {
130 2 wrdata=asctohex((unsigned char *)(Buf+i));
131 2 IAPFlashProgremMode(WriteAddr++,wrdata);
132 2 }
133 1 }
134 //=======================================================================================================
135 // 函数名称: ErasurePLC
136 //
137 // 功能描述: PLC擦除IAP空间
138 //
139 // 输 入: unsigned char allorcode
140 //
141 // 输 出: void
142 //
143 // 全局变量:
144 // 调用模块: IAPFlashErasureMode ; IAPFlashProgremMode ; IAPFlashReadMode ;
145 //
146 // 作 者: 卢明君
147 // 日 期: 2009年9月15日
148 // 备 注:
149 //-------------------------------------------------------------------------------------------------------
150 // 修改人:
151 // 日 期:
152 // 备 注:
153 //-------------------------------------------------------------------------------------------------------
154 //=======================================================================================================
155 void ErasurePLC(unsigned char allorcode)
156 {
157 1 unsigned int i;
158 1 unsigned char ucdata=0;
159 1 if(allorcode==ErasureALL)
160 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -