📄 main.lst
字号:
C51 COMPILER V8.16 MAIN 12/09/2009 15:02:55 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE
line level source
1 //
2 //
3 // CPU: STC89C52RC
4 // FOSC: 22.1184MHz
5 // XRAM: 32K @0x8000
6 // FLASH: 512K @0x2000
7 //
8 #include<reg52.h>
9 #include <string.h>
10 #include <intrins.h>
11 #include <stdio.h>
12 #include <absacc.h>
13 #include"FlashRam.h"
14 #include"xmodem.h"
15
16 extern unsigned char data FlashType;
17
18 int TimeTick; // 定时计数器
19 int TimeSec; // 秒
20 bit busy;
21
22 //STC89C52RC
23 sfr P4 = 0xE8;
24 //sfr AUXR = 0x8E;
25 sfr WDTCR = 0xE1;
26
27 sbit led = P1^4;
28 sbit rst_pin = P1^5;
29 // -,-,EN_WDT,CLR_WDT,IDLE_WDT,PS2,PS1,PS0
30 //#define WDTCR_VAL 0x34 // 1 1 0 1 0 0
31 #define WDTCR_VAL 0x14
32
33
34 #define BAUD_128000_22118400 0xFFFB
35 #define BAUD_115200_22118400 0xFFFA
36
37 void dog(void)
38 {
39 1 WDTCR = WDTCR_VAL;
40 1 }
41
42 void init(void)
43 {
44 1 IE = 0;
45 1 P0 = 0xFF;
46 1 P1 = 0xFF;
47 1 P2 = 0xFF;
48 1 P3 = 0xFF;
49 1 P4 = 0xFF;
50 1
51 1 AUXR = 0x02; // 禁用内部扩展RAM
52 1 WDTCR = WDTCR_VAL; // 打开内部看门狗
53 1
54 1 PCON = 0x80 | PCON;
55 1 //RCAP2=65535 - Fosc/(32*Baud)
C51 COMPILER V8.16 MAIN 12/09/2009 15:02:55 PAGE 2
56 1 RCAP2H=0xFF; //115200BPS @ 22.1184MHz
57 1 RCAP2L=0xFA;
58 1 T2CON=0x34;
59 1 SCON = 0x52;
60 1 // ES = 1;
61 1 TCON = 0x05;
62 1
63 1 TMOD &= 0xf0;
64 1 TMOD |= 0x01;
65 1 //TH0 = (65535 - 36864)>>8;
66 1 //TL0 = 65535 - 36864;
67 1 TH0=TL0=0;
68 1 //ET0 = 1;
69 1 //TR0 = 1;
70 1
71 1 //EA = 1;
72 1 }
73
74 void delay(int n)
75 {
76 1 int a,b,c;
77 1 for (a=0; a<n; a++)
78 1 {
79 2 for (b=0; b<5; b++)
80 2 {
81 3 led = 0;
82 3 for(c=0; c<800; c++)dog();
83 3 led = 1;
84 3 for(c=0; c<8000; c++)dog();
85 3 }
86 2 }
87 1 }
88
89 void Mon_RstPin(void)
90 {
91 1 rst_pin = 1;
92 1 rst_pin = 1;
93 1 if (!rst_pin)
94 1 {
95 2 IE = 0;
96 2 for(;;);
97 2 }
98 1 }
99
100
101 void main(void)
102 {
103 1 unsigned char ctmp;
104 1 init();
105 1
106 1 delay(3);
107 1 puts("\n\nFlash Programmer 1.00 <1K-xmodem>\n");
108 1
109 1 puts("Test Flash.....");
110 1
111 1 if (eepGetChipId()) // 检测FLASH存储器
112 1 {
113 2 switch(FlashType)
114 2 {
115 3 case SST28SF040A:
116 3 puts("SST28SF040A\n");
117 3 break;
C51 COMPILER V8.16 MAIN 12/09/2009 15:02:55 PAGE 3
118 3 case SST29SF040:
119 3 puts("SST29SF040");
120 3 break;
121 3 default:
122 3 printf("UnKnow=%02bx\n",FlashType);
123 3 break;
124 3 }
125 2 }
126 1 else
127 1 {
128 2 puts("None Flash\n");
129 2 }
130 1
131 1 puts("\n \"s\" --- write a file to FLASH");
132 1 puts("\n \"C\" --- read file from FLASH\n\n");
133 1 delay(3);
134 1 if(!led)
135 1 {
136 2 eepEraseChip();
137 2 eepEraseSector(0);
138 2 eepProgramByte(0,0);
139 2 eepReadByte(0);
140 2 eepWriteRam(0,0);
141 2 Mon_RstPin();
142 2 }
143 1
144 1 while(1)
145 1 {
146 2 dog();
147 2 ctmp = serial_get_char();
148 2 if (ctmp == 'C')
149 2 {
150 3 led=0;
151 3 xmodem_tx();
152 3 fclose();
153 3 led=1;
154 3 }
155 2 else if (ctmp == 's')
156 2 {
157 3 led=0;
158 3 xmodem_rx();
159 3 led=1;
160 3 }
161 2 }
162 1
163 1 ((void (code *)(void)) 0)();
164 1 }
165
166 //
167 void isr_ext0(void) interrupt 0
168 {
169 1 }
170
171 void isr_timer0(void) interrupt 1
172 {
173 1 ++TimeTick;
174 1
175 1 if (TimeTick > 28 )
176 1 {
177 2 TimeTick=0;
178 2 ++TimeSec;
179 2 // if(TimeSec>=60)
C51 COMPILER V8.16 MAIN 12/09/2009 15:02:55 PAGE 4
180 2 // {
181 2 // TimeSec=0;
182 2 // }
183 2 if (!busy)led = !led;
184 2 }
185 1 TF0=0;
186 1 }
187
188 void isr_ext1(void) interrupt 2
189 {
190 1
191 1 }
192
193 void isr_timer1(void) interrupt 3
194 {
195 1 }
196
197 void isr_uart(void) interrupt 4
198 {
199 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 391 ----
CONSTANT SIZE = 169 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -