📄 rec_ptr8000.lst
字号:
C51 COMPILER V7.02a REC_PTR8000 04/23/2006 19:19:57 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE REC_PTR8000
OBJECT MODULE PLACED IN Rec_ptr8000.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Rec_ptr8000.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X52.h>
2 #include <ABSACC.h>
3 #include <intrins.h>
4 #include <stdio.h>
5 #define uint unsigned int
6 #define uchar unsigned char
7 //配置口定义//
8 sbit TXEN = P2^6;
9 sbit TRX_CE = P2^5;
10 sbit PWR = P2^4;
11 //SPI口定义//
12 sbit MISO = P2^3;
13 sbit MOSI = P2^2;
14 sbit SCK = P2^1;
15 sbit CSN = P2^0;
16 //sbit P2_0 = P2^0;
17 //状态输出口//
18 sbit AM =P3^2;
19 sbit DR = P3^3;
20 sbit LCD = P3^4;
21
22 //RF寄存器配置//
23 unsigned char idata RFConf[11]=
24 {
25 0x00, //配置命令//
26 0x6C, //CH_NO,配置频段在433.2MHZ
27 0x0E, //输出功率为10db,不重发,节电为正常模式
28 0x44, //地址宽度设置,为4字节
29 0x03,0x03, //接收发送有效数据长度为3字节
30 0xE7,0xE7,0xE7,0xE7, //接收地址
31 0xC0, //CRC充许,16位CRC校验16M晶振
32 };
33
34 uchar TxRxBuffer[5];
35 bit lcdbit;
36 ///////////延时/////////////////
37 void Delay(uint x)
38 {
39 1 uint i;
40 1 for(i=0;i<x;i++){
41 2 _nop_();
42 2 }
43 1 }
44
45 ////////////用SPI口写数据至NRF905内//////////
46 void SpiWrite(unsigned char b)
47 {
48 1 unsigned char i=8;
49 1 while (i--)
50 1 {
51 2 Delay(10);
52 2 SCK=0;
53 2 MOSI=(bit)(b&0x80);
54 2 b<<=1 ;
55 2 Delay(10);
C51 COMPILER V7.02a REC_PTR8000 04/23/2006 19:19:57 PAGE 2
56 2 SCK=1;
57 2 Delay(10);
58 2 SCK=0;
59 2 }
60 1 SCK=0;
61 1 }
62 ///////////////from 905 read data////////////////
63 unsigned char SpiRead(void)
64 {
65 1 register unsigned char i=8;
66 1 unsigned char ddata=0;
67 1 while (i--)
68 1 {
69 2 ddata<<=1 ;
70 2 SCK=0;
71 2 Delay(20);
72 2 ddata|=MISO;
73 2 SCK=1 ;
74 2 Delay(20);
75 2 }
76 1 SCK=0;
77 1 return ddata;
78 1 }
79 ///////////////接收数据包/////////////////
80 void RxPacket(void)
81 {
82 1 uchar i;
83 1 i=0;
84 1 while(DR)
85 1 {
86 2 TxRxBuffer[i] = SpiRead();
87 2 i++;
88 2 }
89 1 }
90
91 /*
92 ;写发射数据命令:20H
93 ;读发射数据命令:21H
94 ;写发射地址命令:22H
95 ;读发射地址命令:23H
96 ;读接收数据命令:24H
97 */
98 void TxPacket(void)
99 { PWR=1;
100 1 TXEN=1;
101 1 CSN=0;
102 1 SpiWrite(0x22); //写发送地址,后面跟4字节地址//
103 1 SpiWrite(0xE7);
104 1 SpiWrite(0xE7);
105 1 SpiWrite(0xE7);
106 1 SpiWrite(0xE7);
107 1 CSN=1;
108 1 Delay(2);
109 1 CSN=0;
110 1 SpiWrite(0x20); //写发送数据命令,后面跟三字节数据//
111 1 SpiWrite(0x41);
112 1 SpiWrite(0x42);
113 1 SpiWrite(0x43);
114 1 SpiWrite(0x44);
115 1 SpiWrite(0x45);
116 1 CSN=1;
117 1 Delay(2);
C51 COMPILER V7.02a REC_PTR8000 04/23/2006 19:19:57 PAGE 3
118 1 TRX_CE=1; //使能发射模式//
119 1 Delay(100); //等带发送完成//
120 1 TRX_CE=0;
121 1 while(!DR);
122 1
123 1 }
124 ////////////////等待接收数据包///////////////////
125 uchar temp;
126 void Wait_Rec_Packet(void)
127 {
128 1 TXEN=0;
129 1 TRX_CE=1;
130 1 PWR=1;
131 1 Delay(1000);
132 1 while(1)
133 1 { //if (LCD==1) P0=~P0;
134 2 if(DR)
135 2 { //P0=~P0;
136 3 TRX_CE=0; //如果数据准备好,则进入待机模式,以便SPI口操作
137 3 CSN=0;
138 3 SpiWrite(0x24);
139 3 RxPacket();
140 3 CSN=1;
141 3 temp=TxRxBuffer[0]+TxRxBuffer[1]+TxRxBuffer[2];
142 3 if(temp==0x06){
143 4 lcdbit=!lcdbit;
144 4 LCD=lcdbit;
145 4 P0=~P0;
146 4 //如果接收的数据正确
147 4 }
148 3 break;
149 3 }
150 2 }
151 1 }
152 ////////////初始化配置寄存器////////////////
153 void Ini_System(void)
154 {
155 1 uchar i;
156 1 LCD=0;
157 1 Delay(10000);
158 1 LCD=1;
159 1 lcdbit=1;
160 1 CSN=1;
161 1 SCK=0;
162 1 PWR=1;
163 1 TRX_CE=0;
164 1 TXEN=0;
165 1 Delay(2);
166 1 CSN=0;
167 1
168 1 SpiWrite( 0x00); //配置命令//
169 1 SpiWrite( 0x6C); //CH_NO,配置频段在433.2MHZ
170 1 SpiWrite( 0x0E); //输出功率为10db,不重发,节电为正常模式
171 1 SpiWrite( 0x44); //地址宽度设置,为4字节
172 1 SpiWrite( 0x03);SpiWrite( 0x03); //接收发送有效数据长度为3字节
173 1 SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7); //接收地址
174 1 SpiWrite( 0xDE);
175 1
176 1
177 1 /*for(i=0;i<11;i++){
178 1 SpiWrite(RFConf[i]);
179 1 }*/
C51 COMPILER V7.02a REC_PTR8000 04/23/2006 19:19:57 PAGE 4
180 1 CSN=1;
181 1 PWR=1;
182 1 TRX_CE=1;
183 1 TXEN=0;
184 1 Delay(1000);
185 1 }
*** WARNING C280 IN LINE 155 OF REC_PTR8000.C: 'i': unreferenced local variable
186
187 void main(void)
188 {
189 1 uchar i;
190 1
191 1 Ini_System();
192 1 PWR=0;
193 1 P0=0;
194 1 DR=0;
195 1 //TxPacket();
196 1 while(1)
197 1 {
198 2 //Wait_Rec_Packet(); //等待接收完成
199 2 // for(i=0;i<2;i++)
200 2 // Delay(65530);
201 2 TxPacket();
202 2 Delay(5000);
203 2 P0=~P0;
204 2 }
205 1 }
*** WARNING C280 IN LINE 189 OF REC_PTR8000.C: 'i': unreferenced local variable
206
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 362 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 2
IDATA SIZE = 11 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -