📄 rf315mhz.lst
字号:
C51 COMPILER V7.06 RF315MHZ 03/03/2006 09:11:59 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE RF315MHZ
OBJECT MODULE PLACED IN RF315MHz.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RF315MHz.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1 /******************************************************
2 DESIGN FOR RF315MHz USE
3 Designer: BH Zhang
4 Date:2006-1-11
5 Ver:1.0
6 Modify Mark:NONE
7 MCU IO="0" SEND MODOL="1" REC MODOL="0"
8 MCU IO="1" SEND MODOL="0" REC MODOL="1"
9 IO=1 SEND MODOL NOT WORK.
10 IO=0 SEND MODOL WORING.
11 *******************************************************/
12 #include <at89x51.h>
13 #include "rf315mhz.h"
14 #include "timer.h"
15 #include "serial.h"
16 //------------------------------------------------------
17 #define RFADDRESS 0x55 //system address
18 #define THIS 0x00 //host:0 for this
19 //------------------------------------------------------
20 unsigned char RFBuf[RFSENDLEN]; //data buf
21 unsigned char nCodeLen; //record length per bit
22 unsigned char nSendAdd; //receive address
23 //------------------------------------------------------
24 #define SW 3 //stop(wait) len
25 #define SWMIN (SW-2)
26 #define SWMAX (SW+SW)
27 #define S0 3 //0bit len
28 #define S0MIN (S0-2)
29 #define S0MAX (S0+2)
30 #define S1 9 //1bit len
31 #define S1MIN (S1-3)
32 #define S1MAX (S1+3)
33 #define ST 18 //start bit len
34 #define STMIN (ST-2)
35 #define STMAX (ST+2)
36 //------------------------------------------------------
37 #define B0 0 //bit=0
38 #define B1 1 //bit=1
39 #define BS 2 //bit=start bit
40 #define BN 255 //bit=invalid
41 //------------------------------------------------------
42 //(min<=bit len<=max)?1:0
43 #define BitOK(ch,min,max) ((ch>=min)&&(ch<=max))
44 //------------------------------------------------------
45 //get a bit
46 unsigned char GetBit(){
47 1 RFRX=1;
48 1 if(RFRX==1)return BN;
49 1
50 1 TH0=T1OverFlow;
51 1 nCodeLen=0;
52 1 TR1=1;
53 1 while(RFRX==0){
54 2 if(nCodeLen>SWMAX){
55 3 TR1=0;
C51 COMPILER V7.06 RF315MHZ 03/03/2006 09:11:59 PAGE 2
56 3 return BN;
57 3 }
58 2 }
59 1 TR1=0;
60 1 if(nCodeLen<SWMIN)return BN;
61 1
62 1 TH0=T1OverFlow;
63 1 nCodeLen=0;
64 1 TR1=1;
65 1 while(RFRX==1){
66 2 if(nCodeLen>STMAX){
67 3 TR1=0;
68 3 return BN;
69 3 }
70 2 }
71 1 TR1=0;
72 1 if(BitOK(nCodeLen,S0MIN,S0MAX))return B0;
73 1 if(BitOK(nCodeLen,S1MIN,S1MAX))return B1;
74 1 if(BitOK(nCodeLen,STMIN,STMAX))return BS;
75 1 return BN;
76 1 }
77 //------------------------------------------------------
78 bit RFGetStr(){
79 1 unsigned char i,j,k;
80 1
81 1 if(GetBit()==BS){
82 2 for(i=1;i<(RFSENDLEN*8+1);i++){
83 3 j=GetBit();
84 3 if(j==BN)return 0;
85 3 if(j==BS)return 0;
86 3 k>>=1;
87 3 if(j==B1)k|=0x80;
88 3 if(i%8==0)RFBuf[(i/8)-1]=k;
89 3 if(i==8)if(RFBuf[0]!=RFADDRESS)return 0;
90 3 if(i==16)if((RFBuf[1]&0x0f)!=THIS)return 0;
91 3 if(i==(RFSENDLEN*8)){
92 4 k=0;
93 4 for(j=0;j<RFSENDLEN;j++)k+=RFBuf[j];
94 4 if(k)return 0;
95 4 nSendAdd=RFBuf[1]>>4;
96 4 return 1;
97 4 }
98 3 }
99 2 }
100 1 return 0;
101 1 }
102 //------------------------------------------------------
C51 COMPILER V7.06 RF315MHZ 03/03/2006 09:11:59 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION GetBit (BEGIN)
; SOURCE LINE # 46
; SOURCE LINE # 47
0000 D297 SETB RFRX
; SOURCE LINE # 48
0002 309703 JNB RFRX,?C0001
0005 7FFF MOV R7,#0FFH
0007 22 RET
0008 ?C0001:
; SOURCE LINE # 50
0008 758C48 MOV TH0,#048H
; SOURCE LINE # 51
000B E4 CLR A
000C F500 R MOV nCodeLen,A
; SOURCE LINE # 52
000E D28E SETB TR1
0010 ?C0003:
; SOURCE LINE # 53
0010 209709 JB RFRX,?C0004
; SOURCE LINE # 54
0013 E500 R MOV A,nCodeLen
0015 D3 SETB C
0016 9406 SUBB A,#06H
0018 40F6 JC ?C0003
; SOURCE LINE # 55
; SOURCE LINE # 56
001A 801E SJMP ?C0031
; SOURCE LINE # 57
; SOURCE LINE # 58
001C ?C0004:
; SOURCE LINE # 59
001C C28E CLR TR1
; SOURCE LINE # 60
001E E500 R MOV A,nCodeLen
0020 C3 CLR C
0021 9401 SUBB A,#01H
0023 5003 JNC ?C0006
0025 7FFF MOV R7,#0FFH
0027 22 RET
0028 ?C0006:
; SOURCE LINE # 62
0028 758C48 MOV TH0,#048H
; SOURCE LINE # 63
002B E4 CLR A
002C F500 R MOV nCodeLen,A
; SOURCE LINE # 64
002E D28E SETB TR1
0030 ?C0007:
; SOURCE LINE # 65
0030 30970C JNB RFRX,?C0008
; SOURCE LINE # 66
0033 E500 R MOV A,nCodeLen
0035 D3 SETB C
0036 9414 SUBB A,#014H
0038 40F6 JC ?C0007
; SOURCE LINE # 67
003A ?C0031:
003A C28E CLR TR1
; SOURCE LINE # 68
C51 COMPILER V7.06 RF315MHZ 03/03/2006 09:11:59 PAGE 4
003C 7FFF MOV R7,#0FFH
003E 22 RET
; SOURCE LINE # 69
; SOURCE LINE # 70
003F ?C0008:
; SOURCE LINE # 71
003F C28E CLR TR1
; SOURCE LINE # 72
0041 E500 R MOV A,nCodeLen
0043 C3 CLR C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -