📄 电源老化测试定时器.lst
字号:
C51 COMPILER V8.05a 电源老化测试定时芲 11/08/2007 21:39:03 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 电源老化测试定时芲
OBJECT MODULE PLACED IN 电源老化测试定时器.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 电源老化测试定时器.c BROWSE DEBUG OBJECTEXTEND TABS(8)
line level source
1
2 #include<reg51.h>
3 #include<intrins.h>
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 sbit RSPIN = P2^7;
8 sbit RWPIN = P2^6;
9 sbit EPIN = P2^5;
10 sbit out= P1^0;
11 /* 增特殊功能寄存器定义 */
12 sfr ISP_DATA = 0xe2;
13 sfr ISP_ADDRH = 0xe3;
14 sfr ISP_ADDRL = 0xe4;
15 sfr ISP_CMD = 0xe5;
16 sfr ISP_TRIG = 0xe6;
17 sfr ISP_CONTR = 0xe7;
18
19
20 /* 定义常量 */
21 #define ERROR 0
22 #define OK 1
23
24 bit km; //按键已去抖动标志
25 bit kp; //按键已处理标志
26
27 bit ON_OFF;
28 bit start;
29 bit rest;
30 bit sheding;
31 uchar show_status; //LED 显示状态标志
32 uchar XPOS,YPOS;
33 uint ON,OFF,TIMER;
34 uint ON_R ,OFF_R,TIMER_R;
35 uchar ON_0,ON_1,ON_2,OFF_0,OFF_1,OFF_2,TIMER_0,TIMER_1,TIMER_2 ;
36 uint count_down; //1秒钟计时用
37 uchar miao;
38
39 void delay(unsigned int t)
40 { unsigned int i,j;
41 1 for(i=0;i<t;i++)
42 1 for(j=0;j<10;j++)
43 1 ;
44 1 }
45
46
47 /* 打开 ISP,IAP 功能 */
48 void ISP_IAP_enable(void)
49 {
50 1 EA = 0; /* 关中断 */
51 1 ISP_CONTR = ISP_CONTR & 0x18; /* 0001,1000 */
52 1 ISP_CONTR = ISP_CONTR | 0x02;
53 1 ISP_CONTR = ISP_CONTR | 0x80; /* 1000,0000 */
54 1 }
55
C51 COMPILER V8.05a 电源老化测试定时芲 11/08/2007 21:39:03 PAGE 2
56 /* 关闭 ISP,IAP 功能 */
57 void ISP_IAP_disable(void)
58 {
59 1 ISP_CONTR = ISP_CONTR & 0x7f; /* 0111,1111 */
60 1 ISP_TRIG = 0x00;
61 1 EA = 1; /* 开中断 */
62 1 }
63
64 /* 字节读 */
65 uchar byte_read(uint byte_addr)
66 {
67 1 ISP_ADDRH = (uchar)(byte_addr >> 8);
68 1 ISP_ADDRL = (uchar)(byte_addr & 0x00ff);
69 1
70 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
71 1 ISP_CMD = ISP_CMD | 0x01; /* 0000,0001 */
72 1
73 1 ISP_IAP_enable();
74 1
75 1 ISP_TRIG = 0x46;
76 1 ISP_TRIG = 0xb9;
77 1 _nop_();
78 1
79 1 ISP_IAP_disable();
80 1 return (ISP_DATA);
81 1 }
82
83 /* 扇区擦除 */
84 uchar sector_erase(uint sector_addr)
85 {
86 1 uint get_sector_addr = 0;
87 1 get_sector_addr = (sector_addr & 0xfe00); /* 1111,1110,0000,0000; 取扇区地址 */
88 1 ISP_ADDRH = (uchar)(get_sector_addr >> 8);
89 1 ISP_ADDRL = 0x00;
90 1
91 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
92 1 ISP_CMD = ISP_CMD | 0x03; /* 0000,0011 */
93 1
94 1 ISP_IAP_enable();
95 1 ISP_TRIG = 0x46; /* 触发ISP_IAP命令 */
96 1 ISP_TRIG = 0xb9; /* 触发ISP_IAP命令 */
97 1 _nop_();
98 1
99 1 ISP_IAP_disable();
100 1 return OK;
101 1 }
102
103 /* 字节编程 */
104 uchar byte_program(uint byte_addr, uchar original_data)
105 {
106 1 ISP_ADDRH = (uchar)(byte_addr >> 8);
107 1 ISP_ADDRL = (uchar)(byte_addr & 0x00ff);
108 1
109 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
110 1 ISP_CMD = ISP_CMD | 0x02; /* 0000,0010 */
111 1 ISP_DATA = original_data;
112 1
113 1 ISP_IAP_enable();
114 1 ISP_TRIG = 0x46; /* 触发ISP_IAP命令 */
115 1 ISP_TRIG = 0xb9; /* 触发ISP_IAP命令 */
116 1 _nop_();
117 1
C51 COMPILER V8.05a 电源老化测试定时芲 11/08/2007 21:39:03 PAGE 3
118 1 ISP_IAP_disable();
119 1 return OK;
120 1 }
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144 void lcdwaitidle(void)
145 { P0=0xff;
146 1 RSPIN=0;
147 1 RWPIN=1;
148 1 EPIN=1;
149 1 while((P0&0x80)==0x80);
150 1 EPIN=0;
151 1 }
152
153 void lcdwcn(unsigned char c)
154 { RSPIN=0;
155 1 RWPIN=0;
156 1 P0=c;
157 1 EPIN=1;
158 1 _nop_();
159 1 EPIN=0;
160 1 }
161
162 void lcdwc(unsigned char c)
163 { lcdwaitidle();
164 1 lcdwcn(c);
165 1 }
166
167 void lcdwd(unsigned char d)
168 { lcdwaitidle();
169 1 RSPIN=1;
170 1 RWPIN=0;
171 1 P0=d;
172 1 EPIN=1;
173 1 _nop_();
174 1 EPIN=0;
175 1 }
176
177 void lcdpos(void)
178 { XPOS&=0x0f;
179 1 YPOS&=0x03;
C51 COMPILER V8.05a 电源老化测试定时芲 11/08/2007 21:39:03 PAGE 4
180 1 if(YPOS==0x00)
181 1 lcdwc(XPOS|0x80);
182 1 else if(YPOS==0x01)
183 1 lcdwc((XPOS+0x40)|0x80);
184 1 }
185
186 void lcdreset()
187 { delay(150); lcdwcn(0x38);
188 1 delay(50); lcdwcn(0x38);
189 1 delay(50); lcdwcn(0x38);
190 1 lcdwc(0x38);
191 1 lcdwc(0x08);
192 1 lcdwc(0x01);
193 1 lcdwc(0x06);
194 1 lcdwc(0x0c);
195 1 }
196
197 void lcdwone(unsigned char x,unsigned char y,unsigned char s)
198 { YPOS=y;
199 1 XPOS=x;
200 1 { lcdpos();
201 2 lcdwd(s);
202 2
203 2
204 2 }
205 1 }
206
207
208 void lcdwda(unsigned char x,unsigned char y,unsigned char *s)
209 { YPOS=y;
210 1 for(XPOS=x;XPOS<16;XPOS++)
211 1 { lcdpos();
212 2 lcdwd(*s);
213 2 s++;
214 2
215 2 }
216 1 }
217
218
219
220 void show_1602()
221 {
222 1
223 1
224 1
225 1 ON_R=ON;
226 1 OFF_R=OFF;
227 1 TIMER_R=TIMER;
228 1
229 1
230 1 ON_2=ON_R/100;
231 1 ON_1= (ON_R-=ON_2*100)/10;
232 1 ON_0= ON_R-=ON_1*10;
233 1
234 1 OFF_2=OFF_R/100;
235 1 OFF_1= (OFF_R-=OFF_2*100)/10;
236 1 OFF_0= OFF_R-=OFF_1*10;
237 1
238 1
239 1
240 1 TIMER_2=TIMER_R/100;
241 1 TIMER_1= (TIMER_R-=TIMER_2*100)/10;
C51 COMPILER V8.05a 电源老化测试定时芲 11/08/2007 21:39:03 PAGE 5
242 1 TIMER_0= TIMER_R-=TIMER_1*10;
243 1
244 1 lcdwone(4,0,0X30+ON_2);
245 1 lcdwone(5,0,0X30+ON_1);
246 1 lcdwone(6,0,0X30+ON_0);
247 1
248 1 lcdwone(4,1,0X30+OFF_2);
249 1 lcdwone(5,1,0X30+OFF_1);
250 1 lcdwone(6,1,0X30+OFF_0);
251 1
252 1 lcdwone(11,1,0X30+TIMER_2);
253 1 lcdwone(12,1,0X30+TIMER_1);
254 1 lcdwone(13,1,0X30+TIMER_0);
255 1
256 1 delay(5000);
257 1 switch(show_status )
258 1 { case 1:
259 2
260 2 lcdwone(4,0,0X20);
261 2 lcdwone(5,0,0X20);
262 2 lcdwone(6,0,0X20);
263 2 break;
264 2
265 2 case 2:
266 2 lcdwone(4,1,0X20);
267 2 lcdwone(5,1,0X20);
268 2 lcdwone(6,1,0X20);
269 2 break;
270 2
271 2 case 3:
272 2 lcdwone(11,1,0X20);
273 2 lcdwone(12,1,0X20);
274 2 lcdwone(13,1,0X20);
275 2 break;
276 2
277 2 case 4:
278 2 sector_erase(0x2000);
279 2 byte_program( 0x2000, ON_2);
280 2 byte_program( 0x2001, ON_1);
281 2 byte_program( 0x2002, ON_0);
282 2
283 2 byte_program( 0x2003, OFF_2);
284 2 byte_program( 0x2004, OFF_1);
285 2 byte_program( 0x2005, OFF_0);
286 2
287 2 byte_program( 0x2006, TIMER_2);
288 2 byte_program( 0x2007, TIMER_1);
289 2 byte_program( 0x2008, TIMER_0);
290 2 show_status=0;
291 2
292 2 break;
293 2
294 2 default:
295 2 break;
296 2
297 2
298 2 }
299 1 delay(5000);
300 1
301 1
302 1
303 1 }
C51 COMPILER V8.05a 电源老化测试定时芲 11/08/2007 21:39:03 PAGE 6
304
305 void read_ISP_IAP()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -