📄 nrf905.lst
字号:
C51 COMPILER V7.06 NRF905 12/13/2007 12:29:01 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 #include<reg51.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define WC 0x00
6 #define RC 0x10
7 #define WTP 0x20
8 #define RTP 0x21
9 #define WTA 0x22
10 #define RTA 0x23
11 #define RRP 0x24
12 typedef struct REConfig
13 {
14 uchar n;
15 uchar buf[10];
16 }RFConfig;
17 code RFConfig RxTxConf=
18 {
19 10,0x01, 0x0c, 0x44, 0x20, 0xcc, 0xcc, 0xcc, 0xcc,0x58
20 };
21 uchar data TxBuf[32];
22 uchar data RxBuf[32];
23 uchar bdata DATA_BUF;
24 sbit flag=DATA_BUF^7;
25 sbit flag1=DATA_BUF^0;
26 sbit TX_EN=P2^6;
27 sbit TRX_CE=P2^5;
28 sbit PWR_UP=P2^4;
29 sbit MISO=P2^3;
30 sbit MOSI=P2^2;
31 sbit SCK=P2^1;
32 sbit CSN=P2^0;
33 sbit AM=P3^2;
34 sbit DR=P3^3;
35 sbit CD=P3^5;
36 void InitIO(void);
37 void Inituart(void);
38 void Config905(void);
39 void SetTxMode(void);
40 void SetRxMode(void);
41 void TxPacket(void);
42 void RxPacket(void);
43 void SpiWrite(uchar);
44 uchar SpiRead(void);
45 void Delay(uchar n);
46 void Scankey(void);
47 void TxData(uchar x);
48 void main()
49 {
50 1 InitIO();
51 1 Inituart();
52 1 Config905();
53 1 SetTxMode();
54 1 TxPacket();
55 1 Delay(500);
C51 COMPILER V7.06 NRF905 12/13/2007 12:29:01 PAGE 2
56 1 P0=0xff;
57 1 SetRxMode();
58 1 while(1)
59 1 {
60 2 Scankey();
61 2 if(DR)
62 2 RxPacket();
63 2 }
64 1
65 1 }
66 void InitIO(void)
67 {
68 1 P0=0x0f;
69 1 CSN=1;
70 1 SCK=0;
71 1 DR=1;
72 1 AM=1;
73 1 PWR_UP=1;
74 1 TRX_CE=0;
75 1 TX_EN=0;
76 1 }
77 void Inituart(void)
78 {
79 1 TMOD=0x20;
80 1 TL1=0xfd;
81 1 TH1=0xfd;
82 1 SCON=0xd8;
83 1 PCON=0x80;
84 1 TR1=1;
85 1 }
86 void Config905(void)
87 {
88 1 uchar i;
89 1 CSN=0;
90 1 SpiWrite(WC);
91 1 for(i=0;i<RxTxConf.n;i++)
92 1 {
93 2 SpiWrite(RxTxConf.buf[i]);
94 2 }
95 1 CSN=1;
96 1 }
97 void Delay(uchar n)
98 {
99 1 uint i;
100 1 while(n--)
101 1 for(i=0;i<80;i++);
102 1 }
103 void SpiWrite(uchar byte)
104 {
105 1 uchar i;
106 1 DATA_BUF=byte;
107 1 //variable
108 1 for(i=0;i<8;i++)
109 1 {
110 2 if(flag)
111 2 MOSI=1;
112 2 else
113 2 MOSI=0;
114 2 SCK=1;
115 2 DATA_BUF=DATA_BUF<<1;
116 2 SCK=0;
117 2 }
C51 COMPILER V7.06 NRF905 12/13/2007 12:29:01 PAGE 3
118 1 }
119 uchar SpiRead(void)
120 {
121 1 uchar i;
122 1 for(i=0;i<8;i++)
123 1 {
124 2 DATA_BUF=DATA_BUF<<1;
125 2 SCK=1;
126 2 if(MISO)
127 2 flag1=1;
128 2 else
129 2 flag1=0;
130 2 SCK=0;
131 2 }
132 1 return DATA_BUF;
133 1 }
134 void TxPacket(void)
135 {
136 1 uchar i;
137 1 CSN=0;
138 1 SpiWrite(WTP);
139 1 for(i=0;i<32;i++)
140 1 {
141 2 SpiWrite(TxBuf[i]);
142 2 }
143 1 CSN=1;
144 1 Delay(1);
145 1 CSN=0;
146 1 SpiWrite(WTA);
147 1 for(i=0;i<4;i++)
148 1 {
149 2 SpiWrite(RxTxConf.buf[i+5]);
150 2 }
151 1 CSN=1;
152 1 Delay(1);
153 1 TRX_CE=0;
154 1 }
155 void RxPacket(void)
156 {
157 1 uchar i,xx;
158 1 TRX_CE=0;
159 1 CSN=0;
160 1 SpiWrite(RRP);
161 1 for(i=0;i<32;i++)
162 1 {
163 2 RxBuf[i]=SpiRead();
164 2 }
165 1 CSN=1;
166 1 while(DR||AM);
167 1 P0=RxBuf[0];
168 1 TRX_CE=1;
169 1 xx=(RxBuf[0]>>4)&0x0f;
170 1 TxData(xx);
171 1 Delay(500);
172 1 P0=0xff;
173 1 }
174 void SetTxMode(void)
175 {
176 1 TX_EN=1;
177 1 TRX_CE=0;
178 1 Delay(1);
179 1 }
C51 COMPILER V7.06 NRF905 12/13/2007 12:29:01 PAGE 4
180 void SetRxMode(void)
181 {
182 1 TX_EN=1;
183 1 TRX_CE=1;
184 1 Delay(1);
185 1 }
186 void Scankey()
187 {
188 1 uchar Temp,xx;
189 1 P0=0xff;
190 1 Temp=P0&0x0f;
191 1 if(Temp!=0x0f)
192 1 {
193 2 Delay(10);
194 2 Temp=P0&0x0f;
195 2 if(Temp!=0x0f)
196 2 {
197 3 xx=Temp;
198 3 Temp=Temp<<4;
199 3 TxBuf[0]=Temp;
200 3 P0=Temp;
201 3 SetTxMode();
202 3 TxPacket();
203 3 TxData(xx);
204 3 Delay(500);
205 3 P0=0xff;
206 3 SetRxMode();
207 3 while((P0&0x0f)!=0x0f);
208 3 }
209 2 }
210 1 }
211 void TxData(uchar x)
212 {
213 1 SBUF=x;
214 1 while(TI==0);
215 1 TI=0;
216 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 402 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 65 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -