📄 mmm.lst
字号:
C51 COMPILER V8.02 MMM 05/01/2006 15:43:37 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MMM
OBJECT MODULE PLACED IN mmm.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE mmm.c BROWSE DEBUG OBJECTEXTEND
line 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 /****************************************************************************/
35
36
37 void Delay100ms(unsigned char x)
38 {
39 1 unsigned char i,j;
40 1
41 1 while(x-- != 0)
42 1 { wdog=! wdog;
43 2 for (j = 0;j < 114; j++)for (i = 0;i < 88; i++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;
44 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
45 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
46 3 _nop_() ;_nop_() ;_nop_() ;};
47 2 }
48 1 }
49 /****************************************************************************/
50
51
52 void Delay1ms(unsigned char idata x)
53 {
C51 COMPILER V8.02 MMM 05/01/2006 15:43:37 PAGE 2
54 1 unsigned char i;
55 1
56 1 while(x-- != 0)
57 1 {wdog=! wdog;
58 2 for (i = 0;i < 45; i++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;
59 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
60 3 _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
-) ;
61 3 _nop_() ;_nop_() ;_nop_() ;};
62 2 }
63 1 }
64
65 /****************************************************************************
66 * *
67 * Function: init_com *
68 * *
69 * Input: - *
70 * Output: - *
71 * *
72 * Description: *
73 ****************************************************************************/
74 void init_com(void)
75 {
76 1 PCON = 0x80; // SMOD = 1; bps = Time1/16
77 1 SCON = 0x50; // Mode 1, 1 star bit, 8 data bit, 1,stop bit UART, enable receive
78 1 TMOD = 0x21; // Timer 1, mode 2, 8-bit auto reload,
79 1 // Timer 0, mode 1, 16-bit counter
80 1 TH1 =BAUD_19200; //BAUD_2400;
81 1 TL1 = TH1;
82 1 TR1 = 1; // Timer 1 run
83 1
84 1 ES = 0; // Enable serail interrupts
85 1 EA=1;
86 1 RXSTAT=0;
87 1 RXNOM=0;
88 1 rxok=0;
89 1 RXTimerOUT=10;
90 1 }
91 /****************************************************************************
92 * *
93 * Function: START_T0 *
94 * *
95 * Input: - *
96 * Output: - *
97 * *
98 * Description: *
99 * *
100 * *
101 ****************************************************************************/
102 void START_T0(unsigned char x)
103 {
104 1 ET0 = 0 ;
105 1 TR0 = 0;
106 1 RXTimerOUT = x ;
107 1 TL0 = 0;
108 1 TH0 = 0;
109 1 TR0 = 1;
110 1 ET0 = 1 ;
111 1 }
112 /****************************************************************************
113 * *
C51 COMPILER V8.02 MMM 05/01/2006 15:43:37 PAGE 3
114 * Function: CALL_isr_T0 *
115 * *
116 * Input: - *
117 * Output: - *
118 * *
119 * Description: *
120 * *
121 * *
122 ****************************************************************************/
123 void CALL_isr_T0(void)
124 {
125 1 TR0 = 0;
126 1 RXTimerOUT = 0;
127 1 TF0 = 1;
128 1
129 1 }
130
131 //********************串口中断处理程序**************************************************************
132 void int4() interrupt 4 using 1
133 {
134 1 unsigned char c;
135 1 if ( RI ) // Receive Command
136 1 {
137 2 // RXTimerOUT=10;
138 2 RI = 0;
139 2 c = SBUF;
140 2 switch(RXSTAT)
141 2 {
142 3 case 0: //接受帧头02
143 3 if(c==0x55){RXSTAT=1;START_T0(20);}
144 3 else
145 3 CALL_isr_T0();
146 3 break;
147 3 case 1: //接收
148 3 if(c==0xaa)
149 3 {
150 4 rxok=1;
151 4 RXSTAT=0;
152 4 CALL_isr_T0();
153 4 }
154 3 else
155 3 CALL_isr_T0();
156 3 RXSTAT=0;
157 3 break;
158 3
159 3 default:
160 3 RXSTAT=0;
161 3 break;
162 3 }
163 2
164 2 }
165 1 else
166 1 {
167 2 TI=0;
168 2
169 2 }
170 1 }
171 /*************************原有的函数需改变*************************************
172 * *
173 * Function: isr_timer0 *
174 * *
175 * Input: - *
C51 COMPILER V8.02 MMM 05/01/2006 15:43:37 PAGE 4
176 * Output: - *
177 * *
178 * Description: *
179 * *
180 * *
181 ****************************************************************************/
182 void isr_timer0(void) interrupt 1 using 2
183 {
184 1 TR0=0;
185 1 if(RXTimerOUT!=0) //此if{}else{} 为新加入的判断超时功能
186 1 {
187 2 RXTimerOUT--;
188 2 }
189 1 else
190 1 {
191 2 RXSTAT=0;
192 2 RXNOM=0;
193 2 }
194 1
195 1
196 1
197 1 TH0=0X4c;
198 1 TL0=0X95;
199 1 TR0=1;
200 1 }
201 //*************************************************************************
202 unsigned char Send(unsigned char *p,unsigned char len)
203 {
204 1 unsigned char i,add=0;
205 1 ES=0;
206 1 TX_EN=1;
207 1 Delay1ms(6);
208 1 SBUF=0X55;
209 1 while(!TI);
210 1 TI=0;
211 1 SBUF=0XAA;
212 1 while(!TI);
213 1 TI=0;
214 1 SBUF=len;
215 1 while(!TI);
216 1 TI=0;
217 1 for(i=0;i<len;i++)
218 1 {
219 2 SBUF=p[i];
220 2 while(!TI);
221 2 TI=0;
222 2 add=add+p[i];
223 2 }
224 1 SBUF=add; //发送校验
225 1 while(!TI);
226 1 TI=0;
227 1 TX_EN=0;
228 1 ES=1;
229 1 EA=1;
230 1 Delay1ms(15);
231 1
232 1 if(rxok)
233 1 {
234 2 ES=0;
235 2 rxok=0;
236 2 TX_EN=1;
237 2 Delay1ms(4);
C51 COMPILER V8.02 MMM 05/01/2006 15:43:37 PAGE 5
238 2 return 1;
239 2 }
240 1 else
241 1 {
242 2 ES=0;
243 2 TX_EN=1;
244 2 Delay1ms(4);
245 2 return 0;
246 2 }
247 1
248 1 }
249
250 //**************************************************************************
251 void main(void)
252 {
253 1 // unsigned int xx;
254 1
255 1 unsigned char i,*sdata;
256 1 unsigned long yyy=0;
257 1 Test_led=!Test_led;
258 1 Delay100ms(5);
259 1 Test_led=!Test_led;
260 1 wdog=! wdog;
261 1 TX_EN=1;
262 1 init_com();
263 1 ES=0;
264 1 i=0;
265 1 PWR_UP=1;
266 1 CS=1;
267 1 while(1)
268 1 {
269 2 wdog=! wdog;
270 2 sdata="12";
271 2 if( Send(sdata,2))
272 2 {
273 3 Test_led=!Test_led;
274 3 Delay1ms(60);
275 3 Test_led=!Test_led;
276 3 }
277 2 else
278 2 Delay1ms(10);
279 2 // Delay100ms(1);
280 2 //
281 2 }
282 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 472 ----
CONSTANT SIZE = 3 ----
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 + -