📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 11/13/2008 00:17:47 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <string.h>
2 #include <AT89X52.h>
3 #include <intrins.h>
4 #include "nRF2401.H"
5
6 #define INT8U unsigned char
7 #define INT16U unsigned int
8
9 #define FOSC 24000000
10 #define BAUD 9600
11 #define TIMER1 0XFD //256-(110592/(12*32*96))
12 #define TIMER0H (65535-3*FOSC/12/1000)/256
13 #define TIMER0L (65535-3*FOSC/12/1000)%256 //定时3MSVR
14
15 #define time0h (65535-3000)/256
16 #define time0l (65535-3000)%256 //定时3MS
17
18
19
20
21 sbit LED1 = P1^4;
22 sbit LED2 = P1^5;
23 sbit key1 = P1^6;
24 sbit key2 = P1^7;
25 sbit key3 = P3^2;
26 sbit key4 = P3^3;
27 sbit key5 = P3^4;
28 sbit key6 = P3^5;
29 sbit key7 = P3^6;
30 sbit key8 = P3^7;
31 bit ledcon ;
32 INT16U delay=0;
33 INT16U timer[2]; //超时计数器
34 unsigned char RxBuf[25]; // 接收缓冲,保存接收到的数据
35
36
37 /*****************************************************************************************
38 //函数名:UartInit()
39 //输入:无
40 //输出:无
41 //功能描述:串口初始化程序
42 /*****************************************************************************************/
43 void UartInit(void)
44 {
45 1 SCON = 0x50; //串口方式1,允许接收
46 1 TMOD = 0x21; //定时器1工作方式2,定时器0工作方式1
47 1 TH1 = 0xf3;
48 1 TL1 = 0xf3;
49 1 PCON=PCON|0x80;
50 1 TR1 = 1; //启动定时器1
51 1 }
52
53
54 /*****************************************************************************************
55 //函数名:SendCh(ch)
C51 COMPILER V8.08 MAIN 11/13/2008 00:17:47 PAGE 2
56 //输入:无
57 //输出:无
58 //功能描述:串口发送一个字符
59 /*****************************************************************************************/
60 void SendCh(INT8U ch)
61 {
62 1 SBUF = ch;
63 1 while(!TI);
64 1 TI = 0;
65 1 }
66
67
68 /*****************************************************************************************
69 //函数名:void SendStr(INT8U *arr)
70 //输入:发送的字符串
71 //输出:无
72 //功能描述:发送一个字符串
73 /*****************************************************************************************/
74 void SendStr(INT8U *arr)
75 {
76 1 INT8U i;
77 1
78 1 i = 0;
79 1 while(arr[i] != '\0')
80 1 {
81 2 SendCh(arr[i]);
82 2 i++;
83 2 }
84 1 }
85 /********************************************************************************/
86 /* 含回车换行的字符串输出函数 */
87 int Puts(char *s)
88 {
89 1
90 1 while (*s)
91 1 {
92 2 SendCh(*s);
93 2 s++;
94 2 }
95 1 SendCh(0x0a);//回车换行
96 1 SendCh(0x0d);
97 1 // Putstr("\n");
98 1
99 1 return 1;
100 1 }
101 void hexASCII(unsigned char *dat,unsigned char len)
102 {
103 1 const unsigned char tabel[]="0123456789ABCDEF";
104 1 unsigned char i,temp;
105 1 // SendStr("HEX->ASCII字符串输出len=");
106 1
107 1 for (i=len;i>0;i--)
108 1 {
109 2 SendCh(0x20);
110 2 SendCh(0x30);
111 2 SendCh(0x78);
112 2 temp=dat[len-i]&0xf0;
113 2 temp=temp>>4;
114 2 SendCh(tabel[temp]);
115 2 temp=dat[len-i]&0x0f;
116 2 SendCh(tabel[temp]);
117 2
C51 COMPILER V8.08 MAIN 11/13/2008 00:17:47 PAGE 3
118 2 }
119 1 SendCh(0x0a);//回车换行
120 1 SendCh(0x0d);
121 1 }
122
123 /*****************************************************************************************
124 //函数名:void TimerInit(void)
125 //输入:无
126 //输出:无
127 //功能描述:定时器0初始化程序
128 /*****************************************************************************************/
129 void TimerInit(void)
130 {
131 1 TH0 = TIMER0H;
132 1 TL0 = TIMER0L;
133 1 ET0 = 1; //定时器0中断允许
134 1 TF0 = 0;
135 1 TR0 = 1; //启动定时器0
136 1 EA = 1; //开全局中断
137 1 }
138
139
140
141
142
143 /*****************************************************************************************
144 //函数名:ResetTimer(INT8U n)
145 //输入:要复位的计时器
146 //输出:无
147 //功能描述:复位计时器
148 /*****************************************************************************************/
149 void ResetTimer(INT8U n)
150 {
151 1 ET0 = 0; // Disable Timer0 interrupt
152 1 timer[n & 0x01] = 0; // Clear timer[n]
153 1 ET0 = 1; // Enable Timer0 interrupt
154 1 }
155
156
157 /*****************************************************************************************
158 //函数名:INT16U ReadTimer(INT8U n)
159 //输入:要读的计时器
160 //输出:读出值
161 //功能描述:读计时器
162 /*****************************************************************************************/
163 INT16U ReadTimer(INT8U n)
164 {
165 1 INT16U tmp;
166 1 ET0 = 0; // Disable Timer0 interrupt
167 1 tmp = timer[n]; // Clear timer[n]
168 1 ET0 = 1; // Enable Timer0 interrupt
169 1 return tmp;
170 1 }
171
172
173
174
175
176 /******************************************************************************************
177 *******************************************************************************************
178 ************************************中断服务程序*******************************************
179 *******************************************************************************************
C51 COMPILER V8.08 MAIN 11/13/2008 00:17:47 PAGE 4
180 ******************************************************************************************/
181 void Timer0ISR(void) interrupt 1
182 {
183 1 EA = 0;
184 1 //TH0+=TIMER0H;
185 1 //TL0+=TIMER0L;
186 1 //timer[0]++;
187 1 //timer[1]++;
188 1 TH0=0xff;
189 1 TL0=0xff;
190 1 delay++;
191 1 if(delay>10000)
192 1 {
193 2 delay=0;
194 2 if(ledcon)
195 2 {
196 3 LED1=0;
197 3 LED2=1;
198 3 ledcon=0;
199 3 }
200 2 else
201 2 {
202 3
203 3 LED1=1;
204 3 LED2=0;
205 3 ledcon=1;
206 3 }
207 2 }
208 1 EA = 1;
209 1 }
210
211
212 main()
213 {
214 1
215 1 UartInit();
216 1
217 1 TimerInit();
218 1
219 1 nRF2401_Initial(); // nRF2401A初始化
220 1 nRF2401_Mode(0); // 设置nRF2401A工作方式:接收
221 1 // nRF2401_SetAddress(Address,5); // 设置接收端地址 00 00 00 00 01
222 1
223 1 ;
224 1 Puts(" 设置nRF2401A工作方式:接收");
225 1 while(1)
226 1 {
227 2 if((nRF2401_RxStatus()) == 1) // nRF2401A有数据请求
228 2 {
229 3
230 3 LED1=0;
231 3 LED2=1;
232 3 nRF2401_ReceiveByte(RxBuf); // 接收数据
233 3 // SendStr(RxBuf);
234 3
235 3 hexASCII(RxBuf,26);
236 3
237 3 /* switch(RxBuf[2])
238 3 {
239 3 case 1:
240 3 Puts("Key1");
241 3 break;
C51 COMPILER V8.08 MAIN 11/13/2008 00:17:47 PAGE 5
242 3 case 2:
243 3 Puts("Key2");
244 3 break;
245 3 case 3:
246 3 Puts("Key3");
247 3 break;
248 3 case 4:
249 3 Puts("Key4");
250 3 break;
251 3 case 5:
252 3 Puts("Key5");
253 3 break;
254 3 case 6:
255 3 Puts("Key6");
256 3 break;
257 3 case 7:
258 3 Puts("Key7");
259 3 break;
260 3 case 8:
261 3 Puts("Key8");
262 3 break;
263 3 default:
264 3 break;
265 3 } */
266 3 }
267 2
268 2 }
269 1 }
270
271
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 379 ----
CONSTANT SIZE = 44 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 31 25
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 + -