📄 g_rx.lst
字号:
C51 COMPILER V7.50 G_RX 05/04/2007 15:36:33 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE G_RX
OBJECT MODULE PLACED IN G_rx.OBJ
COMPILER INVOKED BY: D:\专业工程软件\Keil C51\C51\BIN\C51.EXE G_rx.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <Nordic\reg9e5.h>
2
3 #define HFREQ 0 // 0=433MHz, 1=868/915MHz
4 bit rx_rqst;
5 char rcv_data;
6
7 unsigned char SpiReadWrite(unsigned char b)
8 {
9 1 EXIF &= ~0x20; // spi接口设置函数
10 1 SPI_DATA = b; // Move byte to send to SPI data register
11 1 while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
12 1 ;
13 1 return SPI_DATA;
14 1 }
15
16
17 void PutChar(char c)
18 {
19 1 while(!TI) //输出字符函数
20 1 ;
21 1 TI = 0;
22 1 SBUF = c;
23 1 }
24
25 void PutString(const char *s)
26 {
27 1 while(*s != 0) //输出字符串函数
28 1 PutChar(*s++);
29 1 }
30
31
32
33 unsigned char ReceivePacket()
34 {
35 1 unsigned char b;
36 1
37 1 TRX_CE = 1;
38 1
39 1 while(DR == 0)
40 1 ;
41 1 RACSN = 0;
42 1 SpiReadWrite(RRP);
43 1 b = SpiReadWrite(0);
44 1 RACSN = 1;
45 1 TRX_CE = 0;
46 1 return b;
47 1 }
48
49 void Receiver(void)
50 {
51 1 unsigned char b;
52 1 TXEN = 0;
53 1 for(;;)
54 1 {
55 2 b = ReceivePacket();
C51 COMPILER V7.50 G_RX 05/04/2007 15:36:33 PAGE 2
56 2 P0 = (b >> 1);
57 2 if (rx_rqst==1)
58 2 { rx_rqst=0; PutChar(rcv_data);}
59 2 }
60 1 }
61
62 void uart_init(void)
63 {
64 1 TH1 = 0xE6; //串口初始化函数 19200@16MHz (when T1M=1 and SMOD=1)
65 1 CKCON |= 0x30; // T1M=1 (/4 timer clock)
66 1 PCON = 0x80; // SMOD=1 (double baud rate)
67 1 SCON = 0x52; // Serial mode1, enable receiver
68 1 TMOD = 0x20; // Timer1 8bit auto reload
69 1 TR1 = 1; // Start timer1
70 1
71 1 }
72
73
74 void Init(void)
75 {
76 1 unsigned char tmp; //芯片初始化
77 1
78 1 P0_ALT = 0x06;
79 1 P0_DIR = 0x02;
80 1
81 1 SPICLK = 0; // Max SPI clock
82 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
83 1
84 1 // Configure Radio:
85 1 RACSN = 0;
86 1 SpiReadWrite(WRC | 0x03); // Write to RF config address 3 (RX payload)
87 1 SpiReadWrite(0x01); // One byte RX payload
88 1 SpiReadWrite(0x01); // One byte TX payload
89 1 RACSN = 1;
90 1
91 1 RACSN = 0;
92 1 SpiReadWrite(RRC | 0x01); // Read RF config address 1
93 1 tmp = SpiReadWrite(0) & 0xf1; // Clear the power and frequency setting bits
94 1 RACSN = 1;
95 1
96 1 RACSN = 0;
97 1 SpiReadWrite(WRC | 0x01); // Write RF config address 1
98 1 // Change to 433 or 868/915MHz defined by HFREQ above:
99 1 SpiReadWrite(tmp | (HFREQ << 1));
100 1 RACSN = 1;
101 1
102 1 RACSN = 0;
103 1 SpiReadWrite(RRC | 0x09); // Read RF config Rx_deepess 1
104 1 tmp = SpiReadWrite(0) | 0x04; // Clear the power and frequency setting bits
105 1 RACSN = 1;
106 1
107 1
108 1 RACSN = 0;
109 1 SpiReadWrite(WRC | 0x09); // Write to RF config Rx_deepess 9 (cpu clk)
110 1 SpiReadWrite(tmp); // One byte RX cpu clk
111 1 RACSN = 1;
112 1
113 1
114 1
115 1 }
116
117 void DR_ISR(void) interrupt 10
C51 COMPILER V7.50 G_RX 05/04/2007 15:36:33 PAGE 3
118 {
119 1
120 1 EXIF = EXIF & 0xBF;
121 1
122 1 RACSN = 0;
123 1 SpiReadWrite(RRP);
124 1 rcv_data = SpiReadWrite(0);
125 1
126 1 RACSN = 1;
127 1
128 1 if (!rcv_data )
129 1 { rx_rqst=1; }
130 1
131 1 }
132
133
134 void main(void)
135 {
136 1 Init();
137 1 uart_init();
138 1
139 1 EX4 = 1;
140 1 PX4 = 1;
141 1 EA = 1;
142 1
143 1 Receiver();
144 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 253 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 3
IDATA SIZE = ---- ----
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 + -