tx433.lst
来自「nrf24E1单通道带超时判断无线收发:调试完nrf9e5后就继续调试的」· LST 代码 · 共 170 行
LST
170 行
C51 COMPILER V7.50 TX433 10/21/2008 13:13:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TX433
OBJECT MODULE PLACED IN tx433.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tx433.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 ADDR_INDEX 8 // Index to address bytes in RFConfig.buf
18 #define ADDR_COUNT 4 // Number of address bytes
19
20 const RFConfig txconf =
21 {
22 15,
23 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
24 0x00, 0x12, 0x34, 0x56, 0x78, 0x83, 0x6c, 0x04
25 };
26 /*
27 0x08 :通道2数据接收包的位数(此处为8bit即一个字节)
28
29 0x08 :通道1数据接收包的位数
30
31 0x00, 0x00, 0x00, 0x00, 0x00:CH2地址
32 发射地址在发射时再设置。
33 0x00, 0x12, 0x34, 0x56, 0x78:CH1地址(高于设定的地址宽度补0,即本行的第一个字节)
34
35 0x83=100000 11 前6位:四个字节(32位)地址宽度(CH1及CH2);
36 后2位:CRC使能且为16bit
37
38 0x6C=0 1 1 011 00 B7最高位:0表示一通道(1表示2通道)
39 B6 :1表示收发子系统处于ShockBurst模式(0表示直接模式)
40 B5 :1表示1Mbps(0为250kbps)
41 B4-B2 :011表示外部的晶振为16M
42 B1-B0 :00表示发射功率为-20dBm
43
44 0x04=0000010 0 B7-B1 :表示发射频率 和 CH1接收频率
45 B0 :0表示发射模式(1为接收模式)
46 */
47 const RFConfig rxconf =
48 {
49 15,
50 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51 0x87, 0x65, 0x43, 0x21, 0x83, 0x6c, 0x05
52 };
53
54
55 //延时函数
C51 COMPILER V7.50 TX433 10/21/2008 13:13:53 PAGE 2
56 void Delay100us(volatile unsigned char n)
57 {
58 1 unsigned char i;
59 1 while(n--)
60 1 for(i=0;i<35;i++)
61 1 ;
62 1 }
63
64
65 unsigned char SpiReadWrite(unsigned char b)
66 {
67 1 EXIF &= ~0x20; // Clear SPI interrupt
68 1 SPI_DATA = b; // Move byte to send to SPI data register
69 1 while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
70 1 ;
71 1 return SPI_DATA;
72 1 }
73
74
75 void Transmitter(unsigned char *str,unsigned char strlen)
76 {
77 1 unsigned char i;
78 1
79 1 CE = 1;
80 1 Delay100us(0);
81 1 for(i=0;i<ADDR_COUNT;i++) // Start with the address of the receiver:
82 1 SpiReadWrite(rxconf.buf[ADDR_INDEX+i]);
83 1 for(i=0;i<strlen;i++)
84 1 SpiReadWrite(*(str + i));
85 1 CE = 0;
86 1 T1 = ~T1; //发送闪烁
87 1 Delay100us(200); // Wait ~300us
88 1 }
89
90
91 //2401子系统初始化
92 void Init(void)
93 {
94 1 unsigned char j;
95 1 // P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2
96 1 // P0_DIR = 0xA2; // 方向要设对,P0.1(RxD) ,P0.5,P0.7为输入,P0.4,P0.6为输出
97 1 PWR_UP=1;
98 1 Delay100us(30); // Wait > 3ms
99 1
100 1 SPICLK = 0; // Max SPI clock (XTAL/8)
101 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
102 1
103 1 CE = 0; // Configure Radio:
104 1 CS = 1;
105 1 Delay100us(0);
106 1 for(j=0;j<txconf.n;j++)
107 1 {
108 2 SpiReadWrite(txconf.buf[j]);
109 2 }
110 1 CS = 0;
111 1 }
112 //串口初始化
113 void Uart_init(void)
114 {
115 1 TH1 = 0xE6; // 9600@16MHz (when T1M=1 and SMOD=1)
116 1 CKCON |= 0x10; // T1M=1 (/4 timer clock)
117 1 PCON = 0x80; // SMOD=1 (double baud rate)
C51 COMPILER V7.50 TX433 10/21/2008 13:13:53 PAGE 3
118 1 SCON = 0x50; // Serial mode1, enable receiver
119 1 TMOD = 0x20; // Timer1 8bit auto reload
120 1 TR1 = 1; // Start timer1
121 1 P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2
122 1 P0_DIR = 0xA2; // P0.1 (RxD) is an input
123 1 }
124
125
126 void main(void)
127 {
128 1 unsigned char UART_BUFFER[5]={0x04,0x65,0x78,0xff,0x32};
129 1 Init();
130 1 Uart_init();
131 1
132 1 if(!T0)
133 1 {
134 2 Transmitter(UART_BUFFER,(UART_BUFFER[0]+1));
135 2
136 2
137 2 }
138 1
139 1
140 1 }
141
142
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 209 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 32 9
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?