?? rf2272.lst
字號:
C51 COMPILER V7.08 RF2272 09/20/2007 18:03:19 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE RF2272
OBJECT MODULE PLACED IN RF2272.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE RF2272.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*頭碼時間4.7ms,每個碼1.3ms,碼長17ms,單片機晶振為12M時,一個周期為1us
2 每個碼均長為1300/4=325us ,time>325 and time <650時,bit =1
3 time >100(干擾)and time <325時, bit=0;
4 */
5 #include <my_89x51.h>
6
7 #define uint unsigned int
8 #define ulong unsigned long
9 #define uchar unsigned char
10
11 sbit RemPin = P3^3 ;
12 sbit LEDR =P1^3;
13 sbit LEDG =P1^4;
14 uchar receive[3];//二位地址碼+一位數據碼
15
16
17
18 //------------------------------------- sub functon ----------------------------------------------
19
20 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21 void d1ms (uint ljh_in) /*1mS延時函數*/
22 {
23 1 uint data ljh_i;
24 1 uchar data ljh_j;
25 1 for(ljh_i=0;ljh_i<ljh_in;ljh_i++){
26 2 for(ljh_j=0;ljh_j<108;ljh_j++){
27 3 _nop_(); _nop_();
28 3 _nop_(); _nop_();
29 3 _nop_(); _nop_();
30 3 }
31 2 }
32 1 }
33 //<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<
34 void ledg()
35 {
36 1 d1ms(100);
37 1 LEDG=1;
38 1 d1ms(100);
39 1 LEDG=!LEDG;
40 1 d1ms(100);
41 1 LEDG=!LEDG;
42 1 d1ms(100);
43 1 LEDG=0;
44 1 }
45 //<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<
46 void ledr()
47 {
48 1 d1ms(50);
49 1 LEDR=1;
50 1 d1ms(50);
51 1 LEDR=0;
52 1 d1ms(50);
53 1 LEDR=1;
54 1 d1ms(50);
55 1 LEDR=1;
C51 COMPILER V7.08 RF2272 09/20/2007 18:03:19 PAGE 2
56 1 d1ms(50);
57 1 LEDR=0;
58 1 }
59 //對接收的數據進行分析處理
60 void RW_E2ROM()
61 {
62 1 uchar i,j,temp,num,temp1;
63 1 i2c_read(0xb0, 1, &num);
64 1 j = 0xb1;
65 1 for(i=0;i<num;i++)
66 1 {
67 2 i2c_read(j, 1, &temp);
68 2 j++;
69 2 }
70 1 ;
71 1
72 1 temp1 = temp + 0x30;
73 1 i2c_write(0x2d, 1, &temp1);
74 1 }
75
76 //無線中斷接收int
77 void RemIn(void) interrupt 2 using 1
78 {
79 1 unsigned char i,j;
80 1 unsigned int temp;
81 1
82 1 EA=0;
83 1 TH0 = TL0 = 0;
84 1 while (!RemPin); //等待高電平
85 1 TR0=1;
86 1 while (RemPin) //等待低電平
87 1 {if (TF0==1) goto RemExit;} //超時就退出;
88 1 TR0=0;
89 1 temp=TH0;
90 1 temp=(temp<<8)+TL0;
91 1 // if (temp>6000 || temp<4000) //判斷同步碼的寬度
92 1 if (temp>3000 || temp<2000) //判斷同步碼的寬度 6M晶振
93 1 {
94 2 temp=TH0;
95 2 goto RemExit;
96 2 }
97 1 //同步碼檢測成功
98 1 for (i=0; i<3; i++) {//解 3*8=24 位碼
99 2 for (j=0; j<8; j++)
100 2 {
101 3 while (!RemPin); //等待高電平
102 3 TH0=0;
103 3 TL0=0;
104 3 TR0=1;
105 3 while (RemPin) //等待低電平
106 3 {if (TF0==1) goto RemExit; }//超時就退出
107 3 TR0=0;
108 3 temp=TH0;
109 3 temp=((temp<<8)+TL0);
110 3
111 3 // if (temp>400 && temp<600)
112 3 if (temp>200 && temp<300)//6m晶振
113 3 {
114 4 receive[i]=receive[i]<<1;
115 4 receive[i]=receive[i]+1; //保存 1
116 4 }
117 3 // else if (temp>100 && temp<234)
C51 COMPILER V7.08 RF2272 09/20/2007 18:03:19 PAGE 3
118 3 else if (temp>50 && temp<117)//6M晶振
119 3 {
120 4 receive[i]=receive[i]<<1; //保存0
121 4 }
122 3 else goto RemExit;
123 3 }
124 2 }
125 1 temp=0;//在這里設置一個斷點,運行到這里后看看receive里的三個字節(jié)數據就是解碼的結果
126 1
127 1 while ((receive[0] == 0xea)&&(receive[1] == 0xaa))
128 1 ledg();
129 1 RemExit:
130 1 {
131 2 TR0=0;
132 2 EA=1;
133 2 RemPin=1;
134 2 TF0=0;
135 2 return;
136 2 }
137 1
138 1 }
139
140 main()
141 {
142 1 P1 =0xff;
143 1 P3 =0xff;
144 1 RemPin=1;
145 1 IT1=1; //設定INT1的觸發(fā)方式為脈沖負邊沿觸發(fā)
146 1 EX1=1; //打開INT1中斷請求
147 1 TMOD=0x01;
148 1 EA=1;
149 1 ledr();
150 1 while (1)
151 1 {ledr();
152 2 RW_E2ROM();
153 2 }
154 1 //RemPin=1;
155 1 }
156
157
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 389 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 7
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 + -