📄 nrf905.lst
字号:
C51 COMPILER V8.05a NRF905 06/08/2008 19:08:31 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE NRF905
OBJECT MODULE PLACED IN nrf905.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nrf905.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #include"LCD1602\LCD1602.h"
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8
9 #define WC 0x00 // Write configuration register command
10 #define RC 0x10 // Read configuration register command
11 #define WTP 0x20 // Write TX Payload command
12 #define RTP 0x21 // Read TX Payload command
13 #define WTA 0x22 // Write TX Address command
14 #define RTA 0x23 // Read TX Address command
15 #define RRP 0x24 // Read RX Payload command
16 /*******************************************************************************************/
17 typedef struct RFConfig
18 {
19 uchar n;
20 uchar buf[10];
21 }RFConfig;
22
23 code RFConfig RxTxConf =
24 {
25 10,
26 0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
27 };
28
29
30 // The content of this struct is nRF905's initialize data.初始化数据
31 // CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
32 // RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
33 // 8 Bits CRC And enable
34 /*******************************************************************************************/
35 uchar data TxBuf[33];
36 uchar data RxBuf[32];
37
38
39 /*******************************************************************************************/
40 //uchar rsbrf,delayf,tf,Key;
41 /*******************************************************************************************/
42 uchar bdata DATA_BUF;
43 sbit flag =DATA_BUF^7;
44 sbit flag1 =DATA_BUF^0;
45 /*******************************************************************************************/
46
47 sbit TX_EN =P2^6;
48 sbit TRX_CE =P2^5;
49 sbit PWR_UP =P2^4;
50 sbit MISO =P2^3;
51 sbit MOSI =P2^2;
52 sbit SCK =P2^1;
53 sbit CSN =P2^0;
54
55 sbit AM =P3^2;
C51 COMPILER V8.05a NRF905 06/08/2008 19:08:31 PAGE 2
56 sbit DR =P3^3;
57 sbit CD =P3^5;
58
59
60 sbit Key1 = P0^1;
61 sbit Key2 = P0^0;
62
63 /*******************************************************************************************/
64 void InitIO(void); // Initialize IO port
65 void Inituart(void); // initialize 232 uart
66 void Config905(void); // Config nRF905 module配置NRF905模式
67 void SetTxMode(void); // Set nRF905 in Tx mode
68 void SetRxMode(void); // Set nRF905 in Rx mode
69 void TxPacket(void); // Send data by nRF905
70 void RxPacket(void); // Recive data by nRF905
71 void SpiWrite(uchar); // Write data to nRF905
72 uchar SpiRead(void); // Read data to nRF905
73 void Delay(uchar n); // Delay 100us
74 //void Scankey(void); // Scan key
75
76
77
78 void delays(void);
79
80
81 uchar *pUART; //字符串指针
82 void print_Char(unsigned char c)
83 {
84 1 SBUF = c;
85 1 c = '\0';
86 1 pUART=&c;
87 1 while (pUART!=0);
88 1 }
89 /*******************************************************************************************/
90 //function Delay100us();Delay 100us
91 /*******************************************************************************************/
92 void Delay(uchar n)
93 {
94 1 uint i;
95 1 while(n--)
96 1 for(i=0;i<80;i++);
97 1 }
98 /*******************************************************************************************/
99
100
101
102
103 volatile unsigned char RxWriteIndex = 0;
104 //volatile unsigned char cc = 0;
105
106
107 void UART_INT(void) interrupt 4
108 {
109 1 if (RI)
110 1 {
111 2
112 2
113 2 TxBuf[RxWriteIndex] = SBUF;
114 2
115 2 if (TxBuf[RxWriteIndex]==0x00)
116 2 TxBuf[RxWriteIndex]=0x01;
117 2 RxWriteIndex++;
C51 COMPILER V8.05a NRF905 06/08/2008 19:08:31 PAGE 3
118 2 TxBuf[RxWriteIndex] = '\0';
119 2
120 2 RI = 0;
121 2 }
122 1 else //TI
123 1 {
124 2 TI=0; //发送中断标志位(SCON)
125 2
126 2 if (*pUART != '\0')
127 2 {
128 3 SBUF = *pUART;
129 3 pUART++;
130 3 }
131 2 else pUART=0; //不会启动下一次发送
132 2
133 2
134 2 /*
135 2 if (cc!=32)
136 2 {
137 2
138 2 cc++;
139 2 SBUF = *pUART;
140 2 pUART++;
141 2 }
142 2 if(cc==32)
143 2 cc=0; */
144 2
145 2 }
146 1 }
147 void print_Str(const uchar*p)
148 {
149 1 pUART=p;
150 1 TI=1;
151 1 while (pUART!=0); //遇到 '\0',输出完毕
152 1 //while(cc!=32);
153 1 }
154
155 unsigned char code displayLCD[] = {"Temperature is :"}; //11
156
157 unsigned char ci = 0;
158
159 void main()
160 {
161 1 LCDInit();
162 1
163 1
164 1 SCON=0x50; //模式1
165 1 TMOD=0x21; //定时模式2
166 1 IE=0x90;
167 1
168 1 //=====9600=======设置串口通讯寄存器
169 1 //PCON=0x00; //波特率9600BPS,晶振11.0592MHZ
170 1 PCON=0x80; //波特率加倍
171 1 TH1=0xFD; //
172 1 TL1=0xFD; //计数器初值
173 1 //================NRF905初始化
174 1 CSN=1; // Spi disable
175 1 SCK=0; // Spi clock line init high
176 1 DR=1; // Init DR for input
177 1 AM=1; // Init AM for input
178 1 PWR_UP=1; // nRF905 power on
179 1 TRX_CE=0; // Set nRF905 in standby mode
C51 COMPILER V8.05a NRF905 06/08/2008 19:08:31 PAGE 4
180 1 TX_EN=0; // set radio in Rx mode
181 1
182 1 TI = 0;//串行中断标志位清零
183 1 TR1 = 1;//打开计数器1
184 1 //================
185 1 Config905(); // Config nRF905 module
186 1 SetRxMode();
187 1
188 1
189 1 // print_Char('a');
190 1
191 1 TxBuf[32] = '\0';
192 1
193 1 while(1)
194 1 {
195 2
196 2 DisplayListChar_code(0,0,displayLCD);
197 2
198 2 //=====================从键盘获得数据
199 2 if (Key1==0) //睡眠键
200 2 {
201 3 delays();
202 3 if (Key1==0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -