📄 main.lst
字号:
C51 COMPILER V9.00 MAIN 08/21/2012 11:13:53 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 READER接收程序
4 说明:
5 收到数据显示灯闪烁一下,并通过串口上显示ID值
6 **********************************************************************/
7
8 #include <reg24le1.h>
9 #include <stdint.h>
10 #include "API.h"
11
12 //#define PIN24
13 #define PIN32
14 //#define PIN48
15
16 #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
28
29 #ifdef PIN32
30 sbit S3 = P1^4; // 1/0=未按/按下
31 sbit S2 = P1^3; // 1/0=未按/按下
32 sbit S1 = P1^2; // 1/0=未按/按下
33
34 sbit LED3 = P0^2; // 1/0=灭/亮
35 sbit LED2 = P0^1; // 1/0=灭/亮
36 sbit LED1 = P0^0; // 1/0=灭/亮
37
38 #define p0dir 0xf0
39 #define p1dir 0xff
40 #endif
41
42 #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
54
55 #define INTERRUPT_RFIRQ 9
C51 COMPILER V9.00 MAIN 08/21/2012 11:13:53 PAGE 2
56
57 #define TX_ADR_WIDTH 6 // RF收发地址共5 bytes
58 #define TX_PLOAD_WIDTH 20 // 数据包长度为20 bytes
59
60 uint8_t const TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x56,0x78,0x90,0x12,0x26}; // 定义RF收发地址
61
62 uint8_t data id_buf[TX_PLOAD_WIDTH]={ 1,2, 3, 4, 5, 6,7}; //typedef unsigned int uint8_t
63
64 uint8_t data rx_buf[TX_PLOAD_WIDTH];
65
66 uint8_t bdata sta;
67 sbit RX_DR =sta^6;
68 sbit TX_DS =sta^5;
69 sbit MAX_RT =sta^4;
70 /**************************************************
71 功能:延时
72 **************************************************/
73 void delay(uint16_t x)
74 {
75 1 uint16_t i,j;
76 1 i=0;
77 1 for(i=0;i<x;i++)
78 1 {
79 2 j=108;
80 2 while(j--);
81 2 }
82 1 }
83 /**************************************************
84 功能:硬件SPI读写
85 **************************************************/
86 uint8_t SPI_RW(uint8_t value)
87 {
88 1 SPIRDAT = value;
89 1 while(!(SPIRSTAT & 0x02)); // 等待SPI传输完成
90 1 return SPIRDAT; // 返回读出值
91 1 }
92 /**************************************************
93 功能:写RF寄存器,读RF状态值
94 **************************************************/
95 uint8_t SPI_RW_Reg(uint8_t reg, uint8_t value)
96 {
97 1 uint8_t status;
98 1
99 1 RFCSN = 0;
100 1 status = SPI_RW(reg); // 选择RF寄存器
101 1 SPI_RW(value); // 写入数据
102 1 RFCSN = 1;
103 1
104 1 return(status); // 返回RF状态值
105 1 }
106 /**************************************************
107 功能:读RF寄存器
108 **************************************************/
109 uint8_t SPI_Read(uint8_t reg)
110 {
111 1 uint8_t reg_val;
112 1
113 1 RFCSN = 0;
114 1 SPI_RW(reg); // 选择RF寄存器
115 1 reg_val = SPI_RW(0); // 读出数据
116 1 RFCSN = 1;
117 1
C51 COMPILER V9.00 MAIN 08/21/2012 11:13:53 PAGE 3
118 1 return(reg_val); // 返回RF状态值
119 1 }
120 /**************************************************
121 功能:读RF寄存器多字节数据到缓冲区
122 **************************************************/
123 uint8_t SPI_Read_Buf(uint8_t reg, uint8_t *pBuf, uint8_t bytes)
124 {
125 1 uint8_t status,byte_ctr;
126 1
127 1 RFCSN = 0;
128 1 status = SPI_RW(reg); // 选择RF寄存器
129 1
130 1 for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
131 1 pBuf[byte_ctr] = SPI_RW(0); // 连接读出数据
132 1
133 1 RFCSN = 1;
134 1
135 1 return(status); // 返回RF状态值
136 1 }
137 /**************************************************
138 功能:把缓冲区的多字节数据写到RF寄存器
139 **************************************************/
140 uint8_t SPI_Write_Buf(uint8_t reg, uint8_t *pBuf, uint8_t bytes)
141 {
142 1 uint8_t status,byte_ctr;
143 1
144 1 RFCSN = 0;
145 1 status = SPI_RW(reg); // 选择RF寄存器
146 1 for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) // 连接写入数据
147 1 SPI_RW(*pBuf++);
148 1 RFCSN = 1;
149 1 return(status); // 返回RF状态值
150 1 }
151
152 /**************************************************
153 功能:设置为接收模式
154 **************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -