📄 mmm.lst
字号:
C51 COMPILER V7.07 MMM 02/17/2009 12:22:04 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE MMM
OBJECT MODULE PLACED IN mmm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mmm.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <absacc.h>
3 #include "string.h"
4
5 #include "intrins.h"
6
7 //***********************串口初始化波特率定义*****原有********************
8 #define OSC_FREQ 11059200L
9
10 #define BAUD_19200 256 - (OSC_FREQ/192L)/19200L
11 #define BAUD_14400 256 - (OSC_FREQ/192L)/14400L
12 #define BAUD_9600 256 - (OSC_FREQ/192L)/9600L
13 #define BAUD_4800 256 - (OSC_FREQ/192L)/4800L
14 #define BAUD_2400 256 - (OSC_FREQ/192L)/2400L
15 #define BAUD_1200 256 - (OSC_FREQ/192L)/1200L
16 //*********************************************************
17 union charint{
18 unsigned char chrX[2];
19 unsigned int intX;
20 };
21 union charint ad_temp;
22 //************************程序用的变量********************
23 unsigned char data RXtem[6], RXdata[6];//程序接收数据缓冲区
24 unsigned char data RXNOM,RXSTAT;
25 unsigned char data RXTimerOUT; //接收超时
26 bit rxok; // 接收完成标志
27
28
29 sbit CS=P2^4;
30 sbit PWR_UP=P2^5;
31 sbit TX_EN=P2^6;
32 sbit Test_led=P1^4;
33 sbit wdog=P1^0;
34 sbit TX=P3^1;
35 sbit RX=P3^0;
36 sbit S_KEY=P2^3 ;
37 /****************************************************************************/
38
39
40 void Delay100ms(unsigned char x)
41 {
42 1 unsigned char i,j;
43 1
44 1 while(x-- != 0)
45 1 { wdog=! wdog;
46 2 for (j = 0;j < 67; j++)for (i = 0;i < 88; i++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;
47 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
48 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
49 3 _nop_() ;_nop_() ;_nop_() ;};
50 2 }
51 1 }
52 /****************************************************************************/
53
C51 COMPILER V7.07 MMM 02/17/2009 12:22:04 PAGE 2
54
55 void Delay1ms(unsigned char idata x)
56 {
57 1 unsigned char i;
58 1
59 1 while(x-- != 0)
60 1 {wdog=! wdog;
61 2 for (i = 0;i < 45; i++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;
62 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
63 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
64 3 _nop_() ;_nop_() ;_nop_() ;};
65 2 }
66 1 }
67
68 /****************************************************************************
69 * *
70 * Function: init_com *
71 * *
72 * Input: - *
73 * Output: - *
74 * *
75 * Description: *
76 ****************************************************************************/
77 void init_com(void)
78 {
79 1 PCON = 0x80; // SMOD = 1; bps = Time1/16
80 1 SCON = 0x50; // Mode 1, 1 star bit, 8 data bit, 1,stop bit UART, enable receive
81 1 TMOD = 0x21; // Timer 1, mode 2, 8-bit auto reload,
82 1 // Timer 0, mode 1, 16-bit counter
83 1 TH1 =BAUD_19200; //BAUD_2400;
84 1 TL1 = TH1;
85 1 TR1 = 1; // Timer 1 run
86 1
87 1 ES = 0; // Enable serail interrupts
88 1 EA=1;
89 1 RXSTAT=0;
90 1 RXNOM=0;
91 1 rxok=0;
92 1 RXTimerOUT=10;
93 1 }
94 /****************************************************************************
95 * *
96 * Function: START_T0 *
97 * *
98 * Input: - *
99 * Output: - *
100 * *
101 * Description: *
102 * *
103 * *
104 ****************************************************************************/
105 void START_T0(unsigned char x)
106 {
107 1 ET0 = 0 ;
108 1 TR0 = 0;
109 1 RXTimerOUT = x ;
110 1 TL0 = 0;
111 1 TH0 = 0;
112 1 TR0 = 1;
113 1 ET0 = 1 ;
C51 COMPILER V7.07 MMM 02/17/2009 12:22:04 PAGE 3
114 1 }
115 /****************************************************************************
116 * *
117 * Function: CALL_isr_T0 *
118 * *
119 * Input: - *
120 * Output: - *
121 * *
122 * Description: *
123 * *
124 * *
125 ****************************************************************************/
126 void CALL_isr_T0(void)
127 {
128 1 TR0 = 0;
129 1 RXTimerOUT = 0;
130 1 TF0 = 1;
131 1
132 1 }
133
134 //********************串口中断处理程序**************************************************************
135 void int4() interrupt 4 using 1
136 {
137 1 unsigned char c;
138 1 if ( RI ) // Receive Command
139 1 {
140 2 // RXTimerOUT=10;
141 2 RI = 0;
142 2 c = SBUF;
143 2 switch(RXSTAT)
144 2 {
145 3 case 0: //接受帧头02
146 3 if(c==0x55){RXSTAT=1;START_T0(20);}
147 3 else
148 3 CALL_isr_T0();
149 3 break;
150 3 case 1: //接收
151 3 if(c==0xaa)
152 3 {
153 4 rxok=1;
154 4 RXSTAT=0;
155 4 CALL_isr_T0();
156 4 }
157 3 else
158 3 CALL_isr_T0();
159 3 RXSTAT=0;
160 3 break;
161 3
162 3 default:
163 3 RXSTAT=0;
164 3 break;
165 3 }
166 2
167 2 }
168 1 else
169 1 {
170 2 TI=0;
171 2
172 2 }
173 1 }
174 /*************************原有的函数需改变*************************************
175 * *
C51 COMPILER V7.07 MMM 02/17/2009 12:22:04 PAGE 4
176 * Function: isr_timer0 *
177 * *
178 * Input: - *
179 * Output: - *
180 * *
181 * Description: *
182 * *
183 * *
184 ****************************************************************************/
185 void isr_timer0(void) interrupt 1 using 2
186 {
187 1 TR0=0;
188 1 if(RXTimerOUT!=0) //此if{}else{} 为新加入的判断超时功能
189 1 {
190 2 RXTimerOUT--;
191 2 }
192 1 else
193 1 {
194 2 RXSTAT=0;
195 2 RXNOM=0;
196 2 }
197 1
198 1
199 1
200 1 TH0=0X4c;
201 1 TL0=0X95;
202 1 TR0=1;
203 1 }
204 //*************************************************************************
205 unsigned char Send(unsigned char *p,unsigned char len)
206 {
207 1 unsigned char i,add=0;
208 1 ES=0;
209 1 RX=1;
210 1 TX=1;
211 1 TX_EN=1;
212 1 Delay1ms(1);
213 1 SBUF=0Xff;
214 1 while(!TI);
215 1 TI=0;
216 1 SBUF=0X55;
217 1 while(!TI);
218 1 TI=0;
219 1
220 1 SBUF=0Xff;
221 1 while(!TI);
222 1 TI=0;
223 1 SBUF=len;
224 1 while(!TI);
225 1 TI=0;
226 1 for(i=0;i<len;i++)
227 1 {
228 2 SBUF=p[i];
229 2 while(!TI);
230 2 TI=0;
231 2 add=add+p[i];
232 2 }
233 1 SBUF=add; //发送校验
234 1 while(!TI);
235 1 TI=0;
236 1 RX=1;
237 1 TX=1;
C51 COMPILER V7.07 MMM 02/17/2009 12:22:04 PAGE 5
238 1
239 1 TX_EN=0;
240 1 Delay1ms(3);
241 1 ES=1;
242 1 EA=1;
243 1 Delay1ms(5);
244 1
245 1 if(rxok)
246 1 {
247 2 ES=0;
248 2 rxok=0;
249 2
250 2 return 1;
251 2 }
252 1 else
253 1 {
254 2 ES=0;
255 2
256 2 return 0;
257 2 }
258 1
259 1 }
260
261 //**************************************************************************
262 void main(void)
263 {
264 1 // unsigned int xx;
265 1
266 1 unsigned char i,*sdata;
267 1 unsigned long yyy=0;
268 1 Test_led=!Test_led;
269 1 Delay100ms(5);
270 1 Test_led=!Test_led;
271 1 wdog=! wdog;
272 1 TX_EN=1;
273 1 init_com();
274 1 ES=0;
275 1 i=0;
276 1 PWR_UP=1;
277 1 CS=1;
278 1 while(1)
279 1 {
280 2 wdog=! wdog;
281 2 //if(!S_KEY)
282 2 {
283 3 //Test_led=!Test_led;
284 3 // Delay1ms(10);
285 3 // Test_led=!Test_led;
286 3 //Delay100ms(5);
287 3 sdata="1234567890";
288 3 if( Send(sdata,10))
289 3 {
290 4 Test_led=!Test_led;
291 4 Delay1ms(60);
292 4 Test_led=!Test_led;
293 4 }
294 3
295 3 else
296 3 Delay1ms(20);
297 3 }
298 2 // Delay100ms(5);
299 2 //
C51 COMPILER V7.07 MMM 02/17/2009 12:22:04 PAGE 6
300 2 }
301 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 479 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 9
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 + -