📄 si4421.lst
字号:
C51 COMPILER V8.16 SI4421 12/10/2009 11:19:18 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE SI4421
OBJECT MODULE PLACED IN si4421.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE si4421.c LARGE BROWSE INTVECTOR(0X1000) DEBUG OBJECTEXTEND
line level source
1 #include "global.h"
2
3 uchar idata n;
4 bit revframe;
5 /******************************************************************************
6 ** 函数: ia442xinit()
7 ** 入参:
8 ** 返回:
9 ** 说明: ia442x初始化
10 ******************************************************************************/
11 void ia442xinit()
12 {
13 1 spisendcommand(0xCED4); //SYNC=2DD4;
14 1 spisendcommand(0xCC77); //OB1,OB0, LPX,!ddy,DDIT,BW0
15 1 spisendcommand(0x80d7); //;配置命令,fd-915M,dd-433M
16 1 spisendcommand(0x8208); //;电源管理 crystal on batter dectector
17 1 spisendcommand(0xa080); //;频率设置 430.32MHz(中心频率)
18 1 spisendcommand(0xc623); //;9600波特率设置 (c605)BR = 10000 / 29 / (R+1) / (1+cs*7) [kbps] R= (10000 / 29
- / (1+cs*7) / BR) –
19 1 spisendcommand(0x9480); //;接收控制 VDI OUTPUT FAST 200KHz(BW) RELATIVE to MAXIMUM 0dB RSSIsetth -85dBm
20 1 spisendcommand(0xc22c); //;数据滤波 Clock recovery (CR) auto lock control, if set.CR will start in fast
-mode.
21 1 //;fast mode, fast attack and fast release (6 to 8 bit preamble (1010...)
-is recommended)
22 1 //;Digital filter
-
23 1 spisendcommand(0xca80); //;FIFO COMMAND FIFO IT LEVEL 8 SYNCHRON PATTERN FIFO FILL DISABLE DISABLE THE H
-IGHLY SEBSITIVE
24 1 spisendcommand(0xc4f7); //;AFC COMMAND KEEP THE Foffset VALUE +7Fres to -8Fres
25 1 spisendcommand(power); //;TXCTRL bias 75KHz RELATIVE OUTPUT POWER 0dB
26 1
27 1 }
28 /******************************************************************************
29 ** 函数: receive(void)
30 ** 入参:
31 ** 返回:
32 ** 说明: 接收
33 ******************************************************************************/
34
35 bit receive(void)
36 {
37 1
38 1 bit flg;
39 1
40 1 sdi=0;
41 1 nsel=0;
42 1 revframe = 0;
43 1 if(sdo)
44 1 {
45 2
46 2 fiforxframe();
47 2 if (revframe)
48 2 {
49 3 spisendcommand(0xca83);
50 3 flg=1;
C51 COMPILER V8.16 SI4421 12/10/2009 11:19:18 PAGE 2
51 3
52 3 }
53 2 else
54 2 {
55 3 flg=0;
56 3 }
57 2
58 2 }
59 1 else
60 1 {
61 2 flg=0;
62 2 }
63 1
64 1 return(flg);
65 1 }
66
67 /******************************************************************************
68 ** 函数: fiforxframe()
69 ** 入参:
70 ** 返回:
71 ** 说明: ia442x接收一帧数据
72 ******************************************************************************/
73
74 void fiforxframe()
75 {
76 1 unsigned char i;
77 1 unsigned int k;
78 1
79 1 n = 0;
80 1 spirevbyte();
81 1 spirevbyte();
82 1 rxdata[0]=spirevbyte();
83 1 nsel=1;
84 1 if(rxdata[0]==0xfa)
85 1 {
86 2 sdi=0;
87 2 nsel=0;
88 2 // while(!sdo);
89 2
90 2 for(k=0;k<6000;k++)
91 2 {
92 3 if(sdo)
93 3 {
94 4 break;
95 4 }
96 3 }
97 2 if(k==6000)
98 2 { // nres=0;
99 3 //delayms(50);
100 3 //nres=1;
101 3 ia442xinit();
102 3 spirevtwobyte();
103 3 spisendcommand(0x8288); //电源管理 whole receive crystal on
104 3 spisendcommand(0xca83); //FIFO COMMAND
105 3 if(DEBUG) Printf_String("\r\n[msg:]001 si4421's sdo is dead but she can receive");
106 3 return;
107 3 }
108 2
109 2 spirevbyte();
110 2 spirevbyte();
111 2 rxdata[1]=spirevbyte();
112 2 nsel=1;
C51 COMPILER V8.16 SI4421 12/10/2009 11:19:18 PAGE 3
113 2 n=rxdata[1]&0xff; //最大接收255字节
114 2 if(n<31)
115 2 {
116 3 for(i=0;i<n;i++)
117 3 {
118 4 sdi = 0;
119 4 nsel = 0;
120 4
121 4 // while(!sdo);
122 4 for(k=0;k<6000;k++)
123 4 {
124 5 if(sdo)
125 5 {
126 6 break;
127 6 }
128 5 }
129 4 if(k==6000)
130 4 { //nres=0;
131 5 // delayms(50);
132 5 // nres=1;
133 5 ia442xinit();
134 5 spirevtwobyte();
135 5 spisendcommand(0x8288); //电源管理 whole receive crystal on
136 5 spisendcommand(0xca83); //FIFO COMMAND
137 5 return;
138 5 if(DEBUG) Printf_String("\r\n[msg:]002 si4421's sdo is dead but she can receive");
139 5 }
140 4
141 4 spirevbyte();
142 4 spirevbyte();
143 4 rxdata[i+2]=spirevbyte();
144 4 nsel=1;
145 4 }
146 3 revframe=1;
147 3
148 3 spisendcommand(0xca81);//Disables the highly sensitive RESET mode.
149 3 }
150 2 else
151 2 {revframe = 0;}
152 2
153 2 }
154 1 else
155 1 {
156 2 revframe = 0;
157 2 }
158 1
159 1 }
160 /******************************************************************************
161 ** 函数: txregframe()
162 ** 入参:
163 ** 返回:
164 ** 说明: ia442x发送一帧数据
165 ******************************************************************************/
166 void txregframe(unsigned char len)
167 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -