?? fasong.lst
字號:
C51 COMPILER V7.06 FASONG 11/03/2008 11:28:47 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 #define uint unsigned int
6 #define uchar unsigned char
7 #define BYTE_BIT0 0x01
8 #define BYTE_BIT1 0x02
9 #define BYTE_BIT2 0x04
10 #define BYTE_BIT3 0x08
11 #define BYTE_BIT4 0x10
12 #define BYTE_BIT5 0x20
13 #define BYTE_BIT6 0x40
14 #define BYTE_BIT7 0x80
15 ////////////SPI指令
16 #define WC 0x00
17 #define RC 0x10
18 #define WTP 0x20
19 #define RTP 0x21
20 #define WTA 0x22
21 #define RTA 0x23
22 #define RRP 0x24
23 bdata unsigned char DATA_BUF;
24 #define DATA7 ((DATA_BUF&BYTE_BIT7) != 0)
25 #define DATA0 ((DATA_BUF&BYTE_BIT0) != 0)
26 sbit flag =DATA_BUF^7;
27 sbit flag1 =DATA_BUF^0;
28 #define TxRxBuf_Len 32
29 unsigned char TxRxBuf[TxRxBuf_Len]=
30 {
31
32 0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,
33 0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
34 0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,
35 0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,
36 };
37 //配置口定義//
38 //----------------------------------------------NRF905控制IO----------------------------------------------
---------
39 sbit TXEN=P1^0;
40 sbit TRX_CE=P3^2;
41 sbit PWR=P1^1;
42 //----------------------------------------------NRF905 SPI接口--------------------------------------------
--------
43 sbit MISO=P1^6;
44 sbit MOSI=P1^5;
45 sbit SCK=P1^7;
46 sbit CSN=P1^3;
47 //----------------------------------------nrf905狀態標志--------------------------------------------------
--------
48 sbit AM=P1^4;
49 sbit DR=P3^3;
50 sbit CD=P1^2;
51 //--------------------------------------------------------------------------------------------------------
--------
C51 COMPILER V7.06 FASONG 11/03/2008 11:28:47 PAGE 2
52 sbit led3=P2^0;
53 sbit led2=P2^1;
54 sbit led1=P2^2;
55 sbit led0=P2^3;
56 //--------------------------------------------------------------------------------------------------------
-------
57 sbit KEY0=P3^6;
58 sbit KEY1=P3^7;
59 //--------------------------------------------------------------------------------
60 sbit BELL=P3^4;
61 ///////////////////////////////////////////////////////
62 //sbit DQ=P3^5 ;
63 //RF寄存器配置//
64 unsigned char idata RFConf[11]=
65 {
66 0x00, //配置命令//
67 0x4c, //CH_NO,配置頻段在423MHZ
68 0x0C, //輸出功率為10db,不重發,節電為正常模式
69 0x44, //地址寬度設置,為4字節
70 0x20,0x20, //接收發送有效數據長度為32字節
71 0xCC,0xCC,0xCC,0xCC, //接收地址
72 0x58, //CRC充許,8位CRC校驗,外部時鐘信號不使能,16M晶振
73 };
74 bit lcdbit;
75 code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
76 ///////////延時/////////////////
77 static void Delay(uchar n)
78 {
79 1 uint i;
80 1 while(n--)
81 1 for(i=0;i<80;i++);
82 1 }
83
84 ///////////////
85 unsigned char SpiRead(void)
86 {
87 1 unsigned char i;
88 1 for (i=0;i<8;i++)
89 1 {
90 2 DATA_BUF=DATA_BUF<<1;
91 2 SCK=1;
92 2 if (MISO) //讀取最高位,保存至最末尾,通過左移位完成整個字節
93 2 {
94 3 DATA_BUF|=BYTE_BIT0;
95 3 }
96 2 else
97 2 {
98 3 DATA_BUF&=~BYTE_BIT0;
99 3 }
100 2 SCK=0;
101 2 }
102 1 return DATA_BUF;
103 1 }
104
105 void SpiWrite(unsigned char send)
106 {
107 1 unsigned char i;
108 1 DATA_BUF=send;
109 1 for (i=0;i<8;i++)
110 1 {
111 2 if (DATA7) //總是發送最高位
112 2 {
C51 COMPILER V7.06 FASONG 11/03/2008 11:28:47 PAGE 3
113 3 MOSI=1;
114 3 }
115 2 else
116 2 {
117 3 MOSI=0;
118 3 }
119 2 SCK=1;
120 2 DATA_BUF=DATA_BUF<<1;
121 2 SCK=0;
122 2 }
123 1 }
124 ////////////////初始化nRF905///////////////////
125 void nRF905Init(void)
126 {
127 1 CSN=1; // Spi disable
128 1 SCK=0; // Spi clock line init low
129 1 DR=0; // Init DR for input
130 1 AM=0; // Init AM for input
131 1 CD=0; // Init CD for input
132 1 PWR=1; // nRF905 power on
133 1 TRX_CE=0; // Set nRF905 in standby mode
134 1 TXEN=0; // set radio in Rx mode
135 1 }
136 ////////初始化寄存器
137 void Config905(void)
138 {
139 1 uchar i;
140 1 CSN=0; // Spi enable for write a spi command
141 1 //SpiWrite(WC); // Write config command寫放配置命令
142 1 for (i=0;i<11;i++) // Write configration words 寫放配置字
143 1 {
144 2 SpiWrite(RFConf[i]);
145 2 }
146 1 CSN=1; // Disable Spi
147 1 }
148 /////////////初始化
149 void Inituart(void)
150 {
151 1 TMOD = 0x20; //timer1 working mode 1
152 1 TL1 = 0xfd; //f7=9600 for 16mhz Fosc,and ...
153 1 TH1 = 0xfd; //...fd=19200 for 11.0592mhz Fosc
154 1 SCON = 0xd8; //uart mode 3,ren==1
155 1 PCON = 0x80; //smod=1
156 1 TR1 = 1; //start timer1
157 1 }
158 /////////////發送數據
159 void TxPacket(void)
160 {
161 1 uchar i;
162 1 //Config905();
163 1 CSN=0;
164 1 SpiWrite(WTP); // Write payload command
165 1 for (i=0;i<32;i++)
166 1 {
167 2 SpiWrite(TxRxBuf[i]); // Write 32 bytes Tx data
168 2 }// Spi enable for write a spi command
169 1 CSN=1;
170 1 Delay(1); // Spi disable
171 1 CSN=0; // Spi enable for write a spi command
172 1 SpiWrite(WTA); // Write address command
173 1 for (i=0;i<4;i++) // Write 4 bytes address
174 1 {
C51 COMPILER V7.06 FASONG 11/03/2008 11:28:47 PAGE 4
175 2 SpiWrite(TxAddress[i]);
176 2 }
177 1 CSN=1; // Spi disable
178 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
179 1 Delay(1); // while (DR!=1);
180 1 TRX_CE=0; // Set TRX_CE low
181 1 }
182 ////////////////////////////////////////////////////
183 void SetTxMode(void)
184 {
185 1 TRX_CE=0;
186 1 TXEN=1;
187 1 Delay(1); // delay for mode change(>=650us)
188 1 }
189 unsigned char CheckCD(void) //Pin->檢查是否已存在 同頻率載波
190 {
191 1 if (CD==1)
192 1 {
193 2 return 1;
194 2 }
195 1 else
196 1 {
197 2 return 0;
198 2 }
199 1 }
200 void TX(void)
201 {
202 1 SetTxMode();// Set nRF905 in Tx mode
203 1 TxPacket();// Send data by nRF905
204 1
205 1
206 1 CheckCD(); // 返回CD的當前電平
207 1
208 1 // SetRF_PA_PWR(unsigned char i); //設置發射功率
209 1 }
210 void main(void)
211 {
212 1 Inituart();
213 1 nRF905Init();
214 1 Config905();
215 1 while(1)
216 1 {
217 2 TX();
218 2 }
219 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 255 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 ----
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 + -