📄 fasong.lst
字号:
C51 COMPILER V7.06 FASONG 04/10/2008 23:53:08 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FASONG
OBJECT MODULE PLACED IN Fasong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Fasong.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <ABSACC.h>
3 #include <intrins.h>
4 #include <stdio.h>
5 //--------------------------------------------------------------------------------------------------------
---------
6 #define uint unsigned int
7 #define uchar unsigned char
8 //--------------------------------------------------------------------------------------------------------
---------
9 #define BYTE_BIT0 0x01
10 #define BYTE_BIT1 0x02
11 #define BYTE_BIT2 0x04
12 #define BYTE_BIT3 0x08
13 #define BYTE_BIT4 0x10
14 #define BYTE_BIT5 0x20
15 #define BYTE_BIT6 0x40
16 #define BYTE_BIT7 0x80
17 //--------------------------------------------------------------------------------------------------------
---------
18 bdata unsigned char DATA_BUF;
19 #define DATA7 ((DATA_BUF&BYTE_BIT7) != 0)
20 #define DATA0 ((DATA_BUF&BYTE_BIT0) != 0)
21 sbit flag =DATA_BUF^7;
22 sbit flag1 =DATA_BUF^0;
23 //---------------------------------------------------发送数据缓冲区---------------------------------------
-----------
24 #define TxRxBuf_Len 4
25 unsigned char TxRxBuf[TxRxBuf_Len]=
26 {
27 0x29,0x30,0x31,0x32,
28 };
29 //---------------------------------------------------配置口定义-------------------------------------------
---------
30 sbit TXEN=P1^0;
31 sbit TRX_CE=P3^2;
32 sbit PWR=P1^1;
33 sbit MISO=P1^6;
34 sbit MOSI=P1^5;
35 sbit SCK=P1^7;
36 sbit CSN=P1^3;
37 //---------------------------------------------------NRF905状态IO-----------------------------------------
------------
38 sbit AM=P1^4;
39 sbit DR=P3^3;
40 sbit CD=P1^2;
41 //----------------------------------------------------按键------------------------------------------------
---
42 sbit KEY0=P3^6;
43 sbit KEY1=P3^7;
44 //----------------------------------------------------数码管位控制----------------------------------------
----------------
45 sbit led1=P2^1;
46 sbit led0=P2^0;
47 sbit led2=P2^2;
C51 COMPILER V7.06 FASONG 04/10/2008 23:53:08 PAGE 2
48 sbit led3=P2^3;
49 //--------------------------------------------------------------------------------------------------------
----------
50 uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码
51 //-------------------------------------------------------nrf905控制指令-----------------------------------
---------
52 #define WC 0x00
53 #define RC 0x10
54 #define WTP 0x20
55 #define RTP 0x21
56 #define WTA 0x22
57 #define RTA 0x23
58 #define RRP 0x24
59 //------------------------------------------------NRF905寄存器配置----------------------------------------
---------
60 unsigned char idata RFConf[11]=
61 {
62 0x00, //配置命令//
63 0x4c, //CH_NO,配置频段在423MHZ
64 0x0c, //输出功率为10db,不重发,节电为正常模式
65 0x44, //地址宽度设置,为4字节
66 0x04,0x04, //接收发送有效数据长度为32字节
67 0xCC,0xCC,0xCC,0xCC, //接收地址
68 0x58, //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
69 };
70 bit lcdbit;
71 code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
72 //------------------------------------------------延时----------------------------------------------------
---------
73 static void Delay(uchar n)
74 {
75 1 uint i;
76 1 while(n--)
77 1 for(i=0;i<80;i++);
78 1 }
79 //-------------------------------------------------SPI写函数----------------------------------------------
-------------
80 void SpiWrite(unsigned char send)
81 {
82 1 unsigned char i;
83 1 DATA_BUF=send;
84 1 for (i=0;i<8;i++)
85 1 {
86 2 if (DATA7) //总是发送最高位
87 2 {
88 3 MOSI=1;
89 3 }
90 2 else
91 2 {
92 3 MOSI=0;
93 3 }
94 2 SCK=1;
95 2 DATA_BUF=DATA_BUF<<1;
96 2 SCK=0;
97 2 }
98 1 }
99 //------------------------------------------------------初始化nRF905--------------------------------------
--------
100 void nRF905Init(void)
101 {
102 1 CSN=1; // Spi disable
103 1 SCK=0; // Spi clock line init low
C51 COMPILER V7.06 FASONG 04/10/2008 23:53:08 PAGE 3
104 1 DR=0; // Init DR for input
105 1 AM=0; // Init AM for input
106 1 CD=0; // Init CD for input
107 1 PWR=1; // nRF905 power on
108 1 TRX_CE=0; // Set nRF905 in standby mode
109 1 TXEN=0; // set radio in Rx mode
110 1 }
111 //-----------------------------------------------------初始化寄存器---------------------------------------
---------
112 void Config905(void)
113 {
114 1 uchar i;
115 1 CSN=0; // Spi enable for write a spi command
116 1 //SpiWrite(WC); // Write config command写放配置命令
117 1 for (i=0;i<11;i++) // Write configration words 写放配置字
118 1 {
119 2 SpiWrite(RFConf[i]);
120 2 }
121 1 CSN=1; // Disable Spi
122 1 }
123 //-----------------------------------------------------发送数据打包---------------------------------------
-------------
124 void TxPacket(uchar *TxRxBuf)
125 {
126 1 uchar i;
127 1 //Config905();
128 1 CSN=0;
129 1 SpiWrite(WTP); // Write payload command
130 1 for (i=0;i<4;i++)
131 1 {
132 2 SpiWrite(TxRxBuf[i]); // Write 32 bytes Tx data
133 2 }// Spi enable for write a spi command
134 1 CSN=1;
135 1 Delay(1); // Spi disable
136 1 CSN=0; // Spi enable for write a spi command
137 1 SpiWrite(WTA); // Write address command
138 1 for (i=0;i<4;i++) // Write 4 bytes address
139 1 {
140 2 SpiWrite(TxAddress[i]);
141 2 }
142 1 CSN=1; // Spi disable
143 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
144 1 Delay(1); // while (DR!=1);
145 1 TRX_CE=0; // Set TRX_CE low
146 1 }
147 //----------------------------------------------------------设置发送状态----------------------------------
------------
148 void SetTxMode(void)
149 {
150 1 TRX_CE=0;
151 1 TXEN=1;
152 1 Delay(1); // delay for mode change(>=650us)
153 1 }
154 //--------------------------------------------------------------------------------------------------------
----------
155 void main(void)
156 {
157 1 uchar i;
158 1 nRF905Init();
159 1 Config905();
160 1 P0= seg[8];
161 1 led0=0;
C51 COMPILER V7.06 FASONG 04/10/2008 23:53:08 PAGE 4
162 1 led1=0;
163 1 led2=0;
164 1 led3=0;
165 1 while(1)
166 1 {
167 2 if(KEY0==0) //键0按下
168 2 {
169 3 while(!KEY0); //等待按键松开 RED
170 3 TxRxBuf[0]=0x29;
171 3 TxRxBuf[1]=0x30;
172 3 TxRxBuf[2]=0x31;
173 3 TxRxBuf[3]=0x32;
174 3 P0= seg[1];
175 3 led0=1;
176 3 led1=1;
177 3 led2=1;
178 3 led3=0;
179 3 for(i=0;i<2;i++)
180 3 {
181 4 SetTxMode();// Set nRF905 in Tx mode
182 4 TxPacket(TxRxBuf);// Send data by nRF905
183 4 }
184 3 // Delay(250);
185 3 }
186 2 if(KEY1==0) //有键1按下
187 2 {
188 3 while(!KEY1); //等待按键松开GREEN
189 3 TxRxBuf[0]=0x30;
190 3 TxRxBuf[1]=0x31;
191 3 TxRxBuf[2]=0x32;
192 3 TxRxBuf[3]=0x29;
193 3 P0= seg[2];
194 3 led0=1;
195 3 led1=1;
196 3 led2=0;
197 3 led3=1;
198 3 for(i=0;i<2;i++)
199 3 {
200 4 SetTxMode();// Set nRF905 in Tx mode
201 4 TxPacket(TxRxBuf);// Send data by nRF905
202 4 }
203 3 // Delay(250);
204 3 }
205 2 }
206 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 306 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 4
IDATA SIZE = 11 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -