📄 jieshou.lst
字号:
C51 COMPILER V7.06 JIESHOU 04/11/2008 00:05:55 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE JIESHOU
OBJECT MODULE PLACED IN Jieshou.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Jieshou.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <ABSACC.h>
3 #include <intrins.h>
4 #include <stdio.h>
5 #define uint unsigned int //0 ~ 255
6 #define uchar unsigned char
7 //--------------------------------------------------------------------------------------------------------
-------
8 #define BYTE_BIT0 0x01
9 #define BYTE_BIT1 0x02
10 #define BYTE_BIT2 0x04
11 #define BYTE_BIT3 0x08
12 #define BYTE_BIT4 0x10
13 #define BYTE_BIT5 0x20
14 #define BYTE_BIT6 0x40
15 #define BYTE_BIT7 0x80
16
17 bdata unsigned char DATA_BUF;
18 #define DATA7 ((DATA_BUF&BYTE_BIT7) != 0)
19 #define DATA0 ((DATA_BUF&BYTE_BIT0) != 0)
20 sbit flag =DATA_BUF^7;
21 sbit flag1 =DATA_BUF^0;
22 //--------------------------------------------------------------------------------------------------------
-------
23 #define TxRxBuf_Len 4
24 unsigned char TxRxBuffer[TxRxBuf_Len];
25 //-----------------------------------------------------NRF905端口配置-------------------------------------
-------
26 sbit TXEN=P1^0;
27 sbit TRX_CE=P3^2;
28 sbit PWR=P1^1;
29 sbit MISO=P1^6;
30 sbit MOSI=P1^5;
31 sbit SCK=P1^7;
32 sbit CSN=P1^3;
33 sbit AM=P1^4;
34 sbit DR=P3^3;
35 sbit CD=P1^2;
36 //----------------------------------------------------数码管位选IO----------------------------------------
------
37 sbit led1=P2^1;
38 sbit led0=P2^0;
39 sbit led2=P2^2;
40 sbit led3=P2^3;
41 //--------------------------------------------------------------------------------------------------------
-------
42 uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码
43 //--------------------------------------------------------------------------------------------------------
--------
44 #define WC 0x00
45 #define RC 0x10
46 #define WTP 0x20
47 #define RTP 0x21
48 #define WTA 0x22
49 #define RTA 0x23
C51 COMPILER V7.06 JIESHOU 04/11/2008 00:05:55 PAGE 2
50 #define RRP 0x24
51 //--------------------------------------------NRF905寄存器配置--------------------------------------------
-------
52 unsigned char idata RFConf[11]=
53 {
54 0x00, //配置命令//
55 0x4c,
56 0x0c,
57 0x44,0x04,0x04,
58 0xcc,0xcc,0xcc,0xcc,
59 0x58, //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
60 };
61 //----------------------------------------------延时------------------------------------------------------
----------
62 void Delay(uchar n)
63 {
64 1 uint k;
65 1 while(n--)
66 1 for(k=0;k<8;k++);
67 1 }
68 //--------------------------------------------------------------------------------------------------------
----------
69 void delay1(uint i)
70 {
71 1 for(;i>0;i--);
72 1 }
73 //---------------------------------------------------SPI读函数--------------------------------------------
----------
74 unsigned char SpiRead(void)
75 {
76 1 unsigned char j;
77 1 for (j=0;j<8;j++)
78 1 {
79 2 DATA_BUF=DATA_BUF<<1;
80 2 SCK=1;
81 2 if (MISO) //读取最高位,保存至最末尾,通过左移位完成整个字节
82 2 {
83 3 DATA_BUF|=BYTE_BIT0;
84 3 }
85 2 else
86 2 {
87 3 DATA_BUF&=~BYTE_BIT0;
88 3 }
89 2 SCK=0;
90 2 }
91 1 return DATA_BUF;
92 1 }
93 //---------------------------------------------------SPI写函数--------------------------------------------
---------
94 void SpiWrite(unsigned char send)
95 {
96 1 unsigned char i;
97 1 DATA_BUF=send;
98 1 for (i=0;i<8;i++)
99 1 {
100 2 if (DATA7) //总是发送最高位
101 2 {
102 3 MOSI=1;
103 3 }
104 2 else
105 2 {
106 3 MOSI=0;
C51 COMPILER V7.06 JIESHOU 04/11/2008 00:05:55 PAGE 3
107 3 }
108 2 SCK=1;
109 2 DATA_BUF=DATA_BUF<<1;
110 2 SCK=0;
111 2 }
112 1 }
113 //-----------------------------------------------初始化nRF905---------------------------------------------
---------
114 void nRF905Init(void)
115 {
116 1 CSN=1; // Spi disable
117 1 SCK=0; // Spi clock line init low
118 1 DR=0; // Init DR for input
119 1 AM=0; // Init AM for input
120 1 CD=0; // Init CD for input
121 1 PWR=1; // nRF905 power on
122 1 TRX_CE=0; // Set nRF905 in standby mode
123 1 TXEN=0; // set radio in Rx mode
124 1 }
125 //-----------------------------------------------NRF905初始化寄存器---------------------------------------
---------------
126 void Config905(void)
127 {
128 1 uchar i;
129 1 CSN=0; // Spi enable for write a spi command
130 1 //SpiWrite(WC); // Write config command写放配置命令
131 1 for (i=0;i<11;i++) // Write configration words 写放配置字
132 1 {
133 2 SpiWrite(RFConf[i]);
134 2 }
135 1 CSN=1; // Disable Spi
136 1 }
137 //-----------------------------------------------设置发送状态---------------------------------------------
-------
138 void SetRxMode(void)
139 {
140 1 TXEN=0;
141 1 TRX_CE=1;
142 1 Delay(1); // delay for mode change(>=650us)
143 1 }
144 //-------------------------------------------------判断数据接收状态---------------------------------------
---------------
145 unsigned char CheckDR(void) //检查是否有新数据传入 Data Ready
146 {
147 1 if (DR=1&&TRX_CE==1 && TXEN==0)
148 1 {
149 2 // Delay(50) ;
150 2 return 1;
151 2 }
152 1 else
153 1 {
154 2 return 0;
155 2 }
156 1 }
157 //----------------------------------------------------读NRF905接收数据------------------------------------
-------------------------
158 void RxPacket(void)
159 {
160 1 uchar i;
161 1 Delay(1);
162 1 // TRX_CE=0; // Set nRF905 in standby mode
163 1 Delay(100);
C51 COMPILER V7.06 JIESHOU 04/11/2008 00:05:55 PAGE 4
164 1 TRX_CE=0;
165 1 CSN=0; // Spi enable for write a spi command
166 1 Delay(1);
167 1 SpiWrite(RRP);
168 1 for (i = 0 ;i < 4 ;i++)
169 1 {
170 2 TxRxBuffer[i]=SpiRead(); // Read data and save to buffer
171 2 }
172 1 CSN=1;
173 1 Delay(10);
174 1 TRX_CE=1;
175 1 }
176 //--------------------------------------------------------数据接收----------------------------------------
---------
177 void RX(void)
178 {
179 1 SetRxMode(); // Set nRF905 in Rx mode
180 1 while (CheckDR()==0);
181 1 Delay(10);
182 1 RxPacket();
183 1 Delay(10);
184 1 }
185 //--------------------------------------------------------------------------------------------------------
----------
186 void main(void)
187 {
188 1 nRF905Init();
189 1 Config905();
190 1 P0=0x00;
191 1 while(1)
192 1 {
193 2 RX();
194 2 Delay(10);
195 2 CSN=0;
196 2 if(TxRxBuffer[0])
197 2 {
198 3 if(TxRxBuffer[0]==0x29)
199 3 {
200 4 P0=seg[1];
201 4 led0=1;led1=1;led2=1;led3=0;
202 4 delay1(50);
203 4 }
204 3
205 3 if(TxRxBuffer[0]==0x30)
206 3 {
207 4 P0=seg[2];
208 4 led0=1;led1=1;led2=0;led3=1;
209 4 delay1(50);
210 4 }
211 3 }
212 2 }
213 1 }
214
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 309 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 ----
IDATA SIZE = 11 ----
C51 COMPILER V7.06 JIESHOU 04/11/2008 00:05:55 PAGE 5
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 + -