📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 06/11/2008 14:41:36 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include "cmddefine.h"
4 #include "serial.h"
5 #include <reg51.h>
6 #include <stdio.h>
7 #include <string.h>
8 #include <intrins.h>
9
10
11
12 #define nop() _nop_()
13
14 #define _Nop() {_nop_();_nop_();_nop_();}
15
16
17
18 ///////////////////////////////////////////////////////////////////////////
19 void clock_vDelay(INT32U u32Time)
20 {
21 1 INT32U i;
22 1 for(i=0; i<u32Time; i++);
23 1 }
24
25 /*
26 ///////////////////////////////////////////////////////////////////////////////
27 void lcd_char(INT8U a)
28 {
29 // clock_vDelay(5);
30 LCDRS = 1;
31 // clock_vDelay(5);
32 LCDRW = 0;
33 LCDPORT = a;
34 LCDEN = 1;
35 clock_vDelay(50);
36 LCDEN = 0;
37 }
38
39 ///////////////////////////////////////////////////////////////////////////////
40 void lcd_comm(INT8U a)
41 {
42 // clock_vDelay(5);
43 LCDRS = 0;
44 // clock_vDelay(5);
45 LCDRW = 0;
46 LCDPORT = a;
47 LCDEN = 1;
48 clock_vDelay(50);
49 LCDEN = 0;
50 }
51
52
53 ///////////////////////////////////////////////////////////////////////////////
54 void lcd_ini(void)
55 {
C51 COMPILER V7.50 MAIN 06/11/2008 14:41:36 PAGE 2
56 lcd_comm(0x38);
57 lcd_comm(0x04);
58 lcd_comm(0x0c);
59 lcd_comm(0x01);
60 lcd_comm(0x02);
61 }
62
63
64 ///////////////////////////////////////////////////////////////////////////////
65 void lcd_print_string(uchar pos, char *ptr, ...)
66 {
67 INT8U i = 0;
68 // clock_vDelay(50);
69 lcd_comm(pos | 0x80);
70
71 while( (*ptr != '\0') && (i < 16) )
72 {
73 //clock_vDelay(5);
74 lcd_char(*ptr ++);
75 i++;
76 }
77 *ptr = 0;
78 }
79 */
80
81
82
83 /////////////////////////////////////////////////////
84 void SendPackHead()
85 {
86 1 uchar code PackHead[7] = "$SEMICO";
87 1 uchar i;
88 1 for(i=0; i<7; i++)
89 1 {
90 2 SBUF = PackHead[i];
91 2 TI = 0;
92 2 while(!TI);
93 2 // serial_putch(PackHead[i]);
94 2 }
95 1 }
96
97
98 void SendPackEnd()
99 {
100 1 uchar code PackEnd[4] = "END*";
101 1 uchar i;
102 1 for(i=0; i<4; i++)
103 1 {
104 2 SBUF = PackEnd[i];
105 2 TI = 0;
106 2 while(!TI);
107 2 // serial_putch(PackEnd[i]);
108 2 }
109 1 }
110
111
112 void SendString(uchar *p, unsigned int length)
113 {
114 1 unsigned int i;
115 1 for(i=0; i<length; i++)
116 1 {
117 2 SBUF = p[i];
C51 COMPILER V7.50 MAIN 06/11/2008 14:41:36 PAGE 3
118 2 TI = 0;
119 2 while(!TI);
120 2 //serial_putch(p[i]);
121 2 }
122 1 }
123
124
125
126 /////////////////////////////////////////////////////////////
127 void SendPackage(uchar PackType, uchar PackLen, uchar* Pack)
128 {
129 1 SendPackHead();
130 1 serial_putch(0x00);
131 1 serial_putch(PackType); //package type
132 1 serial_putch(0x00);
133 1 serial_putch(PackLen); //package length
134 1 SendString(Pack, PackLen); //readcounter + 2addr
135 1 SendPackEnd();
136 1 }
137
138
139
140 ////////////////////////////////////////////////////////////
141 unsigned int Mult(uchar High, uchar Low)
142 {
143 1 uint value;
144 1 value = High;
145 1 value <<= 8;
146 1 value += Low;
147 1 return (value);
148 1 }
149
150
151 //////////////////////////////////////////////////
152 void ProgModeCancle()
153 {
154 1 PGDCLR();
155 1 PGCCLR();
156 1 PW12V_OFF();
157 1 PW5V_OFF();
158 1 }
159
160
161 //////////////////////////////////////////////////
162 void ProgModeSet()
163 {
164 1 PW12V_ON();
165 1 clock_vDelay(10);
166 1 PW5V_ON();
167 1 }
168
169
170 //////////////////////////////////////////////////
171 void ProgCommandSet(uchar cmd)
172 {
173 1 uchar i;
174 1 for(i=0; i<6; i++)
175 1 {
176 2 PGCSET(); //clk = 1
177 2 // nop();
178 2 // nop();
179 2 // nop();
C51 COMPILER V7.50 MAIN 06/11/2008 14:41:36 PAGE 4
180 2 if(cmd & 0x01)
181 2 {
182 3 PGDSET(); //dat = 1
183 3 }
184 2 else
185 2 {
186 3 PGDCLR(); //dat = 0
187 3 }
188 2 cmd >>= 1;
189 2 PGCCLR(); //clk = 0
190 2 }
191 1 }
192
193
194 //////////////////////////////////////////////////////////////
195 void ProgIncAddr(void)
196 {
197 1 ProgCommandSet(PICCMD_INCADDR);
198 1 }
199
200
201
202 //////////////////////////////////////////////////////////////
203 uint ProgReadCode(void)
204 {
205 1 uchar i;
206 1 uint b;
207 1 uint codedata = 0;
208 1
209 1 ProgCommandSet(PICCMD_READCODE); //send command
210 1 clock_vDelay(1); //delay
211 1
212 1 ////////////first clock////////////////////////
213 1 PGCSET(); //clk = 1
214 1 nop();
215 1 nop();
216 1 nop();
217 1 PGCCLR(); //clk = 0
218 1
219 1 for(i=0; i<14; i++)
220 1 {
221 2 PGCSET(); //clk = 1
222 2 b = PGDREAD();
223 2 b <<= i;
224 2 codedata += b;
225 2 PGCCLR(); //clk = 0
226 2 }
227 1
228 1 ////////////last clock////////////////////////
229 1 PGCSET(); //clk = 1
230 1 nop();
231 1 nop();
232 1 nop();
233 1 PGCCLR(); //clk = 0
234 1 return codedata;
235 1 }
236
237 ///////////////////////////////////////////////////////
238 uchar ProgReadEEP(void)
239 {
240 1 uchar i;
241 1 uchar b;
C51 COMPILER V7.50 MAIN 06/11/2008 14:41:36 PAGE 5
242 1 uchar codedata = 0;
243 1
244 1 ProgCommandSet(PICCMD_READEEP); //send command
245 1 clock_vDelay(5); //delay
246 1
247 1 ////////////first clock////////////////////////
248 1 PGCSET(); //clk = 1
249 1 nop();
250 1 nop();
251 1 nop();
252 1 PGCCLR(); //clk = 0
253 1
254 1 for(i=0; i<8; i++)
255 1 {
256 2 PGCSET(); //clk = 1
257 2 // nop();
258 2 // nop();
259 2 // nop();
260 2 b = PGDREAD();
261 2 b <<= i;
262 2 codedata += b;
263 2 PGCCLR(); //clk = 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -