rx433.lst
来自「nrf24E1单通道带超时判断无线收发:调试完nrf9e5后就继续调试的」· LST 代码 · 共 164 行
LST
164 行
C51 COMPILER V7.50 RX433 10/21/2008 13:14:09 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE RX433
OBJECT MODULE PLACED IN rx433.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE rx433.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************
2 无线接收的接收端程序:
3 将接收到的字符显示在串口。
4
5 ******************************************/
6
7 #include <Nordic\reg24e1.h>
8
9 struct RFConfig
10 {
11 unsigned char n;
12 unsigned char buf[15];
13 };
14
15 typedef struct RFConfig RFConfig;
16
17 #define UART_BUFFER_SIZE 7 //定义串口缓冲区大小 8 bytes
18
19 unsigned char UART_BUFFER[UART_BUFFER_SIZE+1];
20 unsigned char countt;
21
22 const RFConfig rxconf =
23 {
24 15,
25 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26 0x87, 0x65, 0x43, 0x21, 0x83, 0x6c, 0x05
27 };
28
29
30 //延时函数
31 void Delay100us(volatile unsigned char n)
32 {
33 1 unsigned char i;
34 1 while(n--)
35 1 for(i=0;i<35;i++)
36 1 ;
37 1 }
38
39 //串口发送1Byte
40 void PutChar(char c)
41 {
42 1 while(!TI) //Wait until finished seri-port transmitting
43 1 ;
44 1 TI = 0; //Clear interrupt flag
45 1 SBUF = c; //sending a byte
46 1 }
47
48 //串口发送字符串
49 void PutString(const char *s,unsigned char strlen)
50 {
51 1 unsigned char k;
52 1 //EIE &= 0xF0;
53 1 for(k=1;k<=strlen;k++)
54 1 {
55 2 PutChar(*(s+k));
C51 COMPILER V7.50 RX433 10/21/2008 13:14:09 PAGE 2
56 2 }
57 1 //EIE |= 0x0F;
58 1 }
59
60
61 unsigned char SpiReadWrite(unsigned char b)
62 {
63 1 EXIF &= ~0x20; // Clear SPI interrupt (EXIP.5=0)
64 1 SPI_DATA = b; // Move byte to send to SPI data register
65 1 while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting (测试EXIF.5的状态)
66 1 ;
67 1 return SPI_DATA;
68 1 }
69
70
71 void Receiver(void)
72 {
73 1 CE = 1; //进入接收模式
74 1
75 1
76 1 while(DR1 == 0) //DR1=0表示数据未准备好,等待
77 1 ;
78 1 T1 = ~T1;
79 1 CE = 0;
80 1 //countt = 0;
81 1
82 1 UART_BUFFER[0] = SpiReadWrite(0);
83 1
84 1 for(countt = 1;countt <= UART_BUFFER[0];countt++)
85 1 UART_BUFFER[countt] = SpiReadWrite(0);
86 1
87 1 }
88
89 //nRF24E1串口初始化
90 void UART_Init(void)
91 {
92 1 TH1 = 0xE6; // 9600@16MHz (when T1M=1 and SMOD=1)
93 1 CKCON |= 0x30; // T1M=1 (/4 timer clock)
94 1 PCON = 0x80; // SMOD=1 (double baud rate)
95 1 SCON = 0x52; // Serial mode1, enable receiver
96 1 TMOD = 0x20; // Timer1 8bit auto reload
97 1 TR1 = 1; // Start timer1
98 1 P0_ALT |= 0x06;
99 1 P0_DIR = 0x02; // P0.1 (RxD) is input
100 1 }
101
102 //nRF24E1无线接收模块初始化
103 void Init(void)
104 {
105 1 unsigned char j;
106 1 PWR_UP=1;
107 1 Delay100us(30); // Wait > 3ms
108 1
109 1 SPICLK = 0; // Max SPI clock (XTAL/8)
110 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
111 1
112 1 CE = 0; // Configure Radio:
113 1 CS = 1;
114 1 Delay100us(0);
115 1 for(j=0;j<rxconf.n;j++)
116 1 {
117 2 SpiReadWrite(rxconf.buf[j]);
C51 COMPILER V7.50 RX433 10/21/2008 13:14:09 PAGE 3
118 2 }
119 1 CS = 0;
120 1
121 1 }
122
123 void main(void)
124 {
125 1 UART_Init();
126 1 Init();
127 1
128 1
129 1 //CE=1; //进入接收模式
130 1 while(1)
131 1 {
132 2 Receiver();
133 2 PutString(UART_BUFFER,UART_BUFFER[0]);
134 2
135 2 }
136 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 210 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?