📄 main.lst
字号:
C51 COMPILER V9.00 MAIN 08/21/2012 17:44:01 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************
2 功能:
3 RFID TARGET发射程序
4 说明:
5 本程序采用定时2秒发射ID一次,发射完毕进入低功耗模式,低功耗电流3uA
6 ID长度为6 byte
7 **********************************************************************/
8
9
10 #include <Nordic\reg24le1.h>
11 #include <stdint.h>
12 #include "API.h"
13
14 //#define PIN24
15 #define PIN32
16 //#define PIN48
17
18 #ifdef PIN24
sbit S3 = P0^6; // 1/0=未按/按下
sbit S2 = P0^4; // 1/0=未按/按下
sbit S1 = P0^3; // 1/0=未按/按下
sbit LED3 = P0^2; // 1/0=灭/亮
sbit LED2 = P0^1; // 1/0=灭/亮
sbit LED1 = P0^0; // 1/0=灭/亮
#define p0dir 0xd8
#define p1dir 0xff
#endif
30
31 #ifdef PIN32
32 sbit S3 = P1^4; // 1/0=未按/按下
33 sbit S2 = P1^3; // 1/0=未按/按下
34 sbit S1 = P1^2; // 1/0=未按/按下
35
36 sbit LED3 = P0^2; // 1/0=灭/亮
37 sbit LED2 = P0^1; // 1/0=灭/亮
38 sbit LED1 = P0^0; // 1/0=灭/亮
39
40 #define p0dir 0xf0
41 #define p1dir 0xff
42 #endif
43
44 #ifdef PIN48
sbit S3 = P0^7; // 1/0=未按/按下
sbit S2 = P0^6; // 1/0=未按/按下
sbit S1 = P0^5; // 1/0=未按/按下
sbit LED3 = P0^2; // 1/0=灭/亮
sbit LED2 = P0^1; // 1/0=灭/亮
sbit LED1 = P0^0; // 1/0=灭/亮
#define p0dir 0xf0
#define p1dir 0x02
#endif
C51 COMPILER V9.00 MAIN 08/21/2012 17:44:01 PAGE 2
56
57 #define INTERRUPT_RFIRQ 9
58 #define INTERRUPT_TICK 13
59
60 #define TX_ADR_WIDTH 6 // RF收发地址共5 bytes
61 #define TX_PLOAD_WIDTH 20 // 数据包长度为20 bytes
62
63 uint8_t const TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x56,0x78,0x90,0x12,0x26}; // 定义RF收发地址
64
65 uint8_t data id_buf[TX_PLOAD_WIDTH]={ 1,2, 3, 4, 5, 6,7}; //typedef unsigned int uint8_t
66
67 uint8_t data rx_buf[TX_PLOAD_WIDTH];
68
69 uint8_t bdata sta;
70 sbit RX_DR =sta^6; //读取接收数据指令
71 sbit TX_DS =sta^5; // 写待发数据指令
72 sbit MAX_RT =sta^4;
73
74 /**************************************************
75 功能:延时
76 **************************************************/
77 void delay(uint16_t x)
78 {
79 1 uint16_t i,j;
80 1 i=0;
81 1 for(i=0;i<x;i++)
82 1 {
83 2 j=108;
84 2 while(j--);
85 2 }
86 1 }
87 /**************************************************
88 功能:硬件SPI读写
89 **************************************************/
90 uint8_t SPI_RW(uint8_t value)
91 {
92 1 SPIRDAT = value;
93 1
94 1 while(!(SPIRSTAT & 0x02)); // 等待SPI传输完成
95 1
96 1 return SPIRDAT; // 返回读出值
97 1 }
98 /**************************************************
99 功能:写RF寄存器,读RF状态值
100 **************************************************/
101 uint8_t SPI_RW_Reg(uint8_t reg, uint8_t value)
102 {
103 1 uint8_t status;
104 1
105 1 RFCSN = 0;
106 1 status = SPI_RW(reg); // 选择RF寄存器
107 1 SPI_RW(value); // 写入数据
108 1 RFCSN = 1;
109 1
110 1 return(status); // 返回RF状态值
111 1 }
112 /**************************************************
113 功能:读RF寄存器
114 **************************************************/
115 uint8_t SPI_Read(uint8_t reg)
116 {
117 1 uint8_t reg_val;
C51 COMPILER V9.00 MAIN 08/21/2012 17:44:01 PAGE 3
118 1
119 1 RFCSN = 0;
120 1 SPI_RW(reg); // 选择RF寄存器
121 1 reg_val = SPI_RW(0); // 读出数据
122 1 RFCSN = 1;
123 1
124 1 return(reg_val); // 返回RF状态值
125 1 }
126
127 /**************************************************
128 功能:读RF寄存器多字节数据到缓冲区
129 **************************************************/
130 uint8_t SPI_Read_Buf(uint8_t reg, uint8_t *pBuf, uint8_t bytes)
131 {
132 1 uint8_t status,byte_ctr;
133 1
134 1 RFCSN = 0;
135 1 status = SPI_RW(reg); // 选择RF寄存器
136 1
137 1 for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
138 1 pBuf[byte_ctr] = SPI_RW(0); // 连接读出数据
139 1
140 1 RFCSN = 1;
141 1
142 1 return(status); // 返回RF状态值
143 1 }
144 /**************************************************
145 功能:把缓冲区的多字节数据写到RF寄存器
146 **************************************************/
147 uint8_t SPI_Write_Buf(uint8_t reg, uint8_t *pBuf, uint8_t bytes)
148 {
149 1 uint8_t status,byte_ctr;
150 1
151 1 RFCSN = 0;
152 1 status = SPI_RW(reg); // 选择RF寄存器
153 1 for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) // 连接写入数据
154 1 SPI_RW(*pBuf++);
155 1 RFCSN = 1;
156 1 return(status); // 返回RF状态值
157 1 }
158 /**************************************************
159 功能:设置为掉电模式
160 **************************************************/
161 void PD_Mode(void)
162 {
163 1 RFCE=0;
164 1 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0c); // PWR_UP=0
165 1 }
166 /**************************************************
167 功能:设置为发射模式
168 **************************************************/
169 void TX_Mode(void)
170 {
171 1 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // 上电, CRC为2 bytes,接收模式,允许RX_DR产生中断
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -