📄 nrf905e.lst
字号:
C51 COMPILER V7.06 NRF905E 04/21/2007 14:54:04 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE NRF905E
OBJECT MODULE PLACED IN nrf905e.OBJ
COMPILER INVOKED BY: D:\keil\D\C51\BIN\C51.EXE nrf905e.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 /******************************************************************************************/
9 #include<at89x51.h>
10 #include<intrins.h>
11
12 #define uchar unsigned char
13 #define uint unsigned int
14
15 #define WC 0x00 // Write configuration register command
16 #define RC 0x10 // Read configuration register command
17 #define WTP 0x20 // Write TX Payload command
18 #define RTP 0x21 // Read TX Payload command
19 #define WTA 0x22 // Write TX Address command
20 #define RTA 0x23 // Read TX Address command
21 #define RRP 0x24 // Read RX Payload command
22 /*******************************************************************************************/
23 typedef struct RFConfig
24 {
25 uchar n;
26 uchar buf[10];
27 }RFConfig;
28
29 code RFConfig RxTxConf =
30 {
31 10,
32 0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
33 };
34 // The content of this struct is nRF905's initialize data.初始化数据
35 // CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
36 // RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
37 // 8 Bits CRC And enable
38 /*******************************************************************************************/
39 uchar data TxBuf[32];
40 uchar data RxBuf[32];
41 /*******************************************************************************************/
42 uchar key,rsbrf,delayf,tf,temp;
43 /*******************************************************************************************/
44 uchar bdata DATA_BUF;
45 sbit flag =DATA_BUF^7;
46 sbit flag1 =DATA_BUF^0;
47 /*******************************************************************************************/
48 sbit TX_EN =P2^7;
49 sbit TRX_CE =P2^6;
50 sbit PWR_UP =P2^5;
51 sbit MISO =P2^4;
52 sbit MOSI =P2^3;
53 sbit SCK =P2^2;
54 sbit CSN =P2^1;
55 sbit WXW =P2^0;
C51 COMPILER V7.06 NRF905E 04/21/2007 14:54:04 PAGE 2
56
57 sbit AM =P3^2;
58 sbit DR =P3^3;
59 sbit CD =P3^5;
60 /************************************/
61
62 /*******************************************************/
63 void InitIO(void); // Initialize IO port
64 void Inituart(void); // initialize 232 uart
65 void Config905(void); // Config nRF905 module配置NRF905模式
66 void SetTxMode(void); // Set nRF905 in Tx mode
67 void SetRxMode(void); // Set nRF905 in Rx mode
68 void TxPacket(void); // Send data by nRF905
69 void RxPacket(void); // Recive data by nRF905
70 void SpiWrite(uchar); // Write data to nRF905
71 uchar SpiRead(void); // Read data to nRF905
72 void Delay(uchar n); // Delay 100us
73 void KeyScan(void);
74 //void Scankey(void); // Scan key
75 void TxData (uchar x); // Send key_value to CRT display
76 void comdebug(void);
77
78
79 /*******************************************************************************************/
80 void TxData (unsigned char x)
81 {
82 1 SBUF=x;
83 1 while(TI==0);
84 1 TI=0;
85 1 }
86 /*******************************************************************************************/
87 //function Delay100us();Delay 100us
88 /*******************************************************************************************/
89 void Delay(uchar n)
90 {
91 1 uint i;
92 1 while(n--)
93 1 for(i=0;i<80;i++);
94 1 }
95 /*******************************************************************************************/
96 void serial () interrupt 4
97 {
98 1 unsigned char temp;
99 1 if(RI)
100 1 {
101 2
102 2 temp=SBUF;
103 2 rsbrf=temp;
104 2 RI=0;
105 2 }
106 1 }
107 /********************************************************/
108 void KeyScan(void) //按键扫描子程序
109 {
110 1 P1=0xff;
111 1 temp = P1;
112 1 temp&=0xf0;
113 1 if(temp !=0xf0)
114 1 {
115 2 Delay(50);
116 2 temp=P1;
117 2 temp&=0xf0;
C51 COMPILER V7.06 NRF905E 04/21/2007 14:54:04 PAGE 3
118 2 if(temp !=0xf0)
119 2 { temp=P1;}
120 2 }
121 1 }
122
123 /***********************************/
124 void main()
125 {
126 1 unsigned int cyc=0;
127 1 unsigned int distan=0;
128 1 WXW=0;
129 1
130 1 SCON=0x50; //模式1
131 1 TMOD=0x21; //定时模式2
132 1 IE=0x90;
133 1
134 1 //=====9600=======设置串口通讯寄存器
135 1 PCON=0x00; //波特率9600BPS,晶振11.0592MHZ
136 1 TH1=0xFD; //
137 1 TL1=0xFD; //计数器初值
138 1 //================NRF905初始化
139 1 CSN=1; // Spi disable
140 1 SCK=0; // Spi clock line init high
141 1 DR=1; // Init DR for input
142 1 AM=1; // Init AM for input
143 1 PWR_UP=1; // nRF905 power on
144 1 TRX_CE=0; // Set nRF905 in standby mode
145 1 TX_EN=0; // set radio in Rx mode
146 1
147 1 TI = 0;//串行中断标志位清零
148 1 TR1 = 1;//打开计数器1
149 1 //================
150 1 Config905(); // Config nRF905 module
151 1 SetTxMode(); // Set Tx Mode
152 1 TxPacket(); // Transmit Tx buffer data
153 1 P0=0xff;
154 1 //WXW=0; //上电全亮一下;
155 1 Delay(500); // delay for led light
156 1 //P0=0x00;
157 1 WXW=1; // led close
158 1 SetRxMode(); // Set nRF905 in Rx mode
159 1
160 1 while(1)
161 1 {
162 2 KeyScan();
163 2 //=====================从键盘获得键值数据
164 2
165 2 switch(temp)
166 2 {
167 3 case 0x7e:P0=0x3f;TxBuf[0]=0x3f;tf=1;break;
168 3 case 0x7d:P0=0x06;TxBuf[0]=0x06;tf=1;break;
169 3 case 0x7b:P0=0x5b;TxBuf[0]=0x5b;tf=1;break;
170 3 case 0xbe:P0=0x4f;TxBuf[0]=0x4f;tf=1;break;
171 3 case 0xbd:P0=0x66;TxBuf[0]=0x66;tf=1;break;
172 3 case 0xbb:P0=0x6d;TxBuf[0]=0x6d;tf=1;break;
173 3 case 0xde:P0=0x7d;TxBuf[0]=0x7d;tf=1;break;
174 3 case 0xdd:P0=0x07;TxBuf[0]=0x07;tf=1;break;
175 3 case 0xdb:P0=0x7f;TxBuf[0]=0x7f;tf=1;break;
176 3 case 0xee:P0=0x6f;TxBuf[0]=0x6f;tf=1;break;
177 3 case 0xed:P0=0x77;TxBuf[0]=0x77;tf=1;break;
178 3 case 0xeb:P0=0x7c;TxBuf[0]=0x7c;tf=1;break;
179 3
C51 COMPILER V7.06 NRF905E 04/21/2007 14:54:04 PAGE 4
180 3 //default:P0=0xff;TxBuf[0]=0xff;
181 3 }
182 2
183 2
184 2 WXW=0;
185 2 Delay(50);
186 2
187 2 if (tf==1)
188 2 {
189 3 //==============向串口发送相应的按键
190 3 switch(TxBuf[0])
191 3 {
192 4 case 0x3f:TxData('0');break;
193 4 case 0x06:TxData('1');break;
194 4 case 0x5b:TxData('2');break;
195 4 case 0x4f:TxData('3');break;
196 4 case 0x66:TxData('4');break;
197 4 case 0x6d:TxData('5');break;
198 4 case 0x7d:TxData('6');break;
199 4 case 0x07:TxData('7');break;
200 4 case 0x7f:TxData('8');break;
201 4 case 0x6f:TxData('9');break;
202 4 case 0x77:TxData('A');break;
203 4 case 0x7c:TxData('B');break;
204 4 //default:P0=0xff;TxBuf[0]=0xff;
205 4 }
206 3 //===============NRF905发送相应的按键
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -