?? 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 + -