📄 nrf905.lst
字号:
C51 COMPILER V7.06 NRF905 03/24/2007 09:42:31 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE NRF905
OBJECT MODULE PLACED IN nrf905.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nrf905.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************************************
2 *nrf905_demo.c
3 *
4 *This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTYT;
5 *
6 *uart:9600BPS
7 *****************
8 * 官方网址: http://www.tianyi-dz.com
9 * 官方论坛: http://www.tianyi-dz.com/bbs
10 ****************
11 ***TY Tech**
12 ***bai chun yu **
13 ***qq:472230383 328997835 **
14 ***Email:baichunyu1232000@163.com **
15 ****************
16 /*******************************************************************************************/
17 #include<at89x51.h>
18 #include<intrins.h>
19
20 #define WC 0x00 // Write configuration register command
21 #define RC 0x10 // Read configuration register command
22 #define WTP 0x20 // Write TX Payload command
23 #define RTP 0x21 // Read TX Payload command
24 #define WTA 0x22 // Write TX Address command
25 #define RTA 0x23 // Read TX Address command
26 #define RRP 0x24 // Read RX Payload command
27 /*******************************************************************************************/
28 typedef struct RFConfig
29 {
30 unsigned char n;
31 unsigned char buf[10];
32 }RFConfig;
33
34 code RFConfig RxTxConf =
35 {
36 10,
37 0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
38 };
39 /*
40 10--------------------------------10 register
41 0x01------------------------------CH_NO=1 fRF = ( 422.4 + CH_NOd /10)*(1+HFREQ_PLLd) MHz=422.4
42 0x0c------------------------------HFREQ_PLLd=0 ,433MHZ,Reduced power,6db
43 0x44------------------------------rx tx address width is 4 Bytes
44 0x20------------------------------rx payload width
45 0x20------------------------------tx payload width
46 0xcc, 0xcc, 0xcc,0xcc-------------receive address
47 0x58 -----------------------------Disable Extern Clock;Fosc=16MHZ 8 Bits CRC And enable
48 */
49 // The content of this struct is nRF905's initialize data.初始化数据
50 // CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
51 // RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
52 // 8 Bits CRC And enable
53 /*******************************************************************************************/
54 unsigned char data TxBuf[32];
55 unsigned char data RxBuf[32];
C51 COMPILER V7.06 NRF905 03/24/2007 09:42:31 PAGE 2
56 /*******************************************************************************************/
57 unsigned char key;
58 unsigned char temp1;
59 unsigned char rsbrf;//receive uart data
60 unsigned char delayf;
61 unsigned char tf;
62 /*******************************************************************************************/
63 unsigned char bdata DATA_BUF;
64 sbit flag =DATA_BUF^7;
65 sbit flag1 =DATA_BUF^0;
66 /*******************************************************************************************/
67 /*sbit TX_EN =P2^6;
68 sbit TRX_CE =P2^5;
69 sbit PWR_UP =P2^4;
70 sbit MISO =P2^3;
71 sbit MOSI =P2^2;
72 sbit SCK =P2^1;
73 sbit CSN =P2^0;
74
75 sbit AM =P3^2;
76 sbit DR =P3^3;
77 sbit CD =P3^5;old*/
78 sbit TX_EN =P1^0;
79 sbit TRX_CE =P1^1;
80 sbit PWR_UP =P1^2;
81 sbit MISO =P1^7;
82 sbit MOSI =P3^2;
83 sbit SCK =P3^3;
84 sbit CSN =P3^4;
85
86 sbit AM =P1^5;
87 sbit DR =P1^6;
88 sbit CD =P1^4;//new
89 /*******************************************************************************************/
90 void InitIO(void); // Initialize IO port
91 void Inituart(void); // initialize 232 uart
92 void Config905(void); // Config nRF905 module配置NRF905模式
93 void SetTxMode(void); // Set nRF905 in Tx mode
94 void SetRxMode(void); // Set nRF905 in Rx mode
95 void TxPacket(void); // Send data by nRF905
96 void RxPacket(void); // Recive data by nRF905
97 void SpiWrite(unsigned char ); // Write data to nRF905
98 unsigned char SpiRead(void); // Read data to nRF905
99 void Delay(unsigned char n); // Delay 100us
100 void Scankey(void); // Scan key
101 void TxData (unsigned char x); // Send key_value to CRT display
102 void comdebug(void);
103
104 #define KEY1 0xfd
105 #define KEY2 0xf7
106 #define KEY3 0xdf
107 #define KEY4 0x7f
108
109 #define LED1 0xfe
110 #define LED2 0xfb
111 #define LED3 0xef
112 #define LED4 0xbf
113 /*******************************************************************************************/
114 void TxData (unsigned char x)
115 {
116 1 SBUF=x;
117 1 while(TI==0);
C51 COMPILER V7.06 NRF905 03/24/2007 09:42:31 PAGE 3
118 1 TI=0;
119 1 }
120 /*******************************************************************************************/
121 //function Delay100us();Delay 100us
122 /*******************************************************************************************/
123 void Delay(unsigned char n)
124 {
125 1 unsigned int i;
126 1 while(n--)
127 1 for(i=0;i<80;i++);
128 1 }
129 /*******************************************************************************************/
130 void serial () interrupt 4
131 {
132 1 unsigned char temp;
133 1 if(RI)
134 1 {
135 2
136 2 temp=SBUF;
137 2 rsbrf=temp;
138 2 RI=0;
139 2 }
140 1 }
141 /*******************************************************************************************/
142 void main()
143 {
144 1 unsigned int cyc=0;
145 1 unsigned int distan=0;
146 1
147 1 SCON=0x50; //模式1
148 1 TMOD=0x21; //定时模式2
149 1 IE=0x90;
150 1
151 1 //=====9600=======设置串口通讯寄存器
152 1 PCON=0x00; //波特率9600BPS,晶振11.0592MHZ
153 1 TH1=0xFD; //
154 1 TL1=0xFD; //计数器初值
155 1 //================NRF905初始化
156 1 CSN=1; // Spi disable
157 1 SCK=0; // Spi clock line init high
158 1 DR=1; // Init DR for input
159 1 AM=1; // Init AM for input
160 1 PWR_UP=1; // nRF905 power on
161 1 TRX_CE=0; // Set nRF905 in standby mode
162 1 TX_EN=0; // set radio in Rx mode
163 1
164 1 TI = 0;//串行中断标志位清零
165 1 TR1 = 1;//打开计数器1
166 1 //================
167 1 Config905(); // Config nRF905 module
168 1 SetTxMode(); // Set Tx Mode
169 1 TxPacket(); // Transmit Tx buffer data
170 1 P0=0x00; // led open
171 1 Delay(500); // delay for led light
172 1 P0=0xff; // led close
173 1 SetRxMode(); // Set nRF905 in Rx mode
174 1
175 1 while(1)
176 1 {
177 2 //=====================从键盘获得数据
178 2 temp1=P0;
179 2 switch(P0)
C51 COMPILER V7.06 NRF905 03/24/2007 09:42:31 PAGE 4
180 2 {
181 3 case KEY1:P0=LED1;TxBuf[0]=LED1;tf=1;break;
182 3 case KEY2:P0=LED2;TxBuf[0]=LED2;tf=1;break;
183 3 case KEY3:P0=LED3;TxBuf[0]=LED3;tf=1;break;
184 3 case KEY4:P0=LED4;TxBuf[0]=LED4;tf=1;break;
185 3 //default:P0=0xff;TxBuf[0]=0xff;
186 3 }
187 2 if (tf==1)
188 2 {
189 3 //==============向串口发送相应的按键
190 3 switch(TxBuf[0])
191 3 {
192 4 case LED1:TxData('A');break;
193 4 case LED2:TxData('B');break;
194 4 case LED3:TxData('C');break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -