📄 rfwakeup.lst
字号:
C51 COMPILER V7.20 RFWAKEUP 07/08/2008 19:45:20 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE RFWAKEUP
OBJECT MODULE PLACED IN rfwakeup.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE rfwakeup.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg24e1.h>
2 #define TICK 10e-3 // 10ms (100Hz) tick
3 /* LED1-LED4 */
4 sbit LED1 = P0^7;
5 sbit LED2 = P0^6;
6 sbit LED3 = P0^5;
7 sbit LED4 = P0^4;
8 const char Test=0xAA;
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 const RFConfig tconf =
20 {
21 15,
22 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23 0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x04
24 };
25 const RFConfig rconf =
26 {
27 15,
28 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29 0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x05
30 };
31
32 void Delay100us(volatile unsigned char n) reentrant
33 {
34 1 unsigned char i;
35 1 while(n--)
36 1 for(i=0;i<35;i++)
37 1 ;
38 1 }
39
40 void Delayms(volatile unsigned char n) reentrant
41 {
42 1 unsigned char j;
43 1 while(n--)
44 1 for(j=0;j<10;j++)
45 1 Delay100us(10);
46 1
47 1 }
48 void WriteRTC(unsigned int m)
49 {
50 1 while(REGX_CTRL & 0x10) // Wait for the interface to be ready
51 1 ;
52 1 REGX_MSB = m >> 8;
53 1 REGX_LSB = m & 0xff;
54 1 REGX_CTRL = 0x0a;
55 1 while(REGX_CTRL & 0x10) // Wait for the interface to be ready
C51 COMPILER V7.20 RFWAKEUP 07/08/2008 19:45:20 PAGE 2
56 1 ;
57 1
58 1 }unsigned char SpiReadWrite(unsigned char b)
59 {
60 1 EXIF &= ~0x20; // Clear SPI interrupt
61 1 SPI_DATA = b; // Move byte to send to SPI data register
62 1 while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
63 1 ;
64 1 return SPI_DATA;
65 1 }
66
67 void Init_Receiver(void)
68 {
69 1 unsigned char b;
70 1
71 1 CS = 1;
72 1 Delay100us(0);
73 1 for(b=0;b<rconf.n;b++)
74 1 {
75 2 SpiReadWrite(rconf.buf[b]);
76 2 }
77 1 CS = 0;
78 1
79 1 CE = 1;
80 1 }
81
82 void TransmitPacket(unsigned char b)
83 {
84 1 unsigned char i;
85 1 CE = 1;
86 1 Delay100us(0);
87 1 for(i=0;i<ADDR_COUNT;i++)
88 1 SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
89 1 SpiReadWrite(b);
90 1 CE = 0;
91 1 Delay100us(3); // Wait ~300us
92 1 }
93 void Init_transmit(void)
94 {
95 1 unsigned char b;
96 1
97 1 CS = 1;
98 1 Delay100us(0);
99 1 for(b=0;b<tconf.n;b++)
100 1 {
101 2 SpiReadWrite(tconf.buf[b]);
102 2 }
103 1 CS = 0;
104 1 }
105
106
107
108 void RTCISR(void) interrupt 12
109 {
110 1 unsigned char Temp;
111 1 EA=0;
112 1 WDTI=0;
113 1 LED3=0;
114 1 Delayms(20);
115 1 LED3=1;
116 1 PWR_UP=1;
117 1 Delay100us(30);
C51 COMPILER V7.20 RFWAKEUP 07/08/2008 19:45:20 PAGE 3
118 1 SPICLK=0;
119 1 SPI_CTRL=0x02;
120 1
121 1 Init_transmit();
122 1 TransmitPacket(Test);
123 1 Init_Receiver();
124 1
125 1 Delayms(50);
126 1 if(DR1==1)
127 1 {
128 2 Temp=SpiReadWrite(0);
129 2 if(Temp==Test)
130 2 {
131 3 LED2=0;
132 3 Delayms(20);
133 3 LED2=1;
134 3 }
135 2 }
136 1
137 1 EA=1;
138 1 }
139
140 void main(void)
141 {
142 1 P0_ALT=0x06;
143 1 P0_DIR=0x06;
144 1 EA=1;
145 1 EWDI=1;
146 1
147 1 LED1=0;
148 1 Delayms(20);
149 1 LED1=1;
150 1
151 1 LED2=0;
152 1 Delayms(20);
153 1 LED2=1;
154 1
155 1 LED3=0;
156 1 Delayms(20);
157 1 LED3=1;
158 1
159 1 LED4=0;
160 1 Delayms(20);
161 1 LED4=1;
162 1
163 1 WriteRTC(5/TICK);
164 1 while(1)
165 1 {
166 2 LED1=0;
167 2 Delayms(20);
168 2 LED1=1;
169 2 //CK_CTRL = 0x01;
170 2 }
171 1
172 1 }
173
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 364 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V7.20 RFWAKEUP 07/08/2008 19:45:20 PAGE 4
PDATA SIZE = ---- ----
DATA SIZE = 33 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -