📄 receive.lst
字号:
C51 COMPILER V7.05 RECEIVE 06/30/2004 15:51:23 PAGE 1
C51 COMPILER V7.05, COMPILATION OF MODULE RECEIVE
OBJECT MODULE PLACED IN Receive.OBJ
COMPILER INVOKED BY: D:\CYGNAL\IDEFILES\C51\BIN\C51.EXE Receive.c DB OE
stmt level source
1 #include <c8051f020.h> // SFR声明
2 #include <stdio.h>
3 #include <string.h>
4 //-----------------------------------------------------------------------------
5 // sfr定义及全局常量
6 //-----------------------------------------------------------------------------
7 #define SYSCLK 22118400 // 系统时钟为22118400HZ
8 #define BAUDRATE 9600 // UART0 波特率为19200HZ
9 //#define TX_LENGTH 16 // 接收缓冲器长度为16
10
11
12 sfr16 DP = 0x82; // 数据指针
13 sfr16 TMR3RL = 0x92; // Timer3 reload value
14 sfr16 TMR3 = 0x94; // Timer3 counter
15 sfr16 RCAP2 = 0xca; // Timer2 capture/reload
16 sfr16 T2 = 0xcc; // Timer2
17 sfr16 RCAP4 = 0xe4; // Timer4 capture/reload
18 sfr16 T4 = 0xf4; // Timer4
19 sbit PWR= P0^2; //P0.2 =1 为工作模式;P0.2=0为待机模式
20 sbit CS = P0^3; //P0.3=0为频道1,载波频率为433.92MHZ
21 //P0.3=1为频道2,载波频率为434.32HZ
22 sbit TXEN = P0^4; //P0.4=0为接收模式,P0.4=1为发射模式
23 sbit LED = P1^6 ;
24 int i; //LED显示发射状态
25 int k;
26 int j;
27 int m;
28 int l;
29 int q;
30
31 unsigned char xdata re[100];
32 //-----------------------------------------------------------------------------
33 // 函数声明
34 //-----------------------------------------------------------------------------
35
36 void SYSCLK_Init (void); //系统时钟初始化函数声明
37 void PORT_Init (void); //端口初始化函数声明
38 void UART0_Init (void); //UART初始化函数声明
39 //----------------------------------------------------------------------------
40 //系统时钟初始化
41 //-----------------------------------------------------------------------------
42 void SYSCLK_Init (void)
43 {
44 1 int i; // 延时计数
45 1
46 1 OSCXCN = 0x67; // 使用外部时钟22.1184MHz
47 1
48 1 for (i=0; i < 256; i++) ; // 等侍晶振起振
49 1
50 1 while (!(OSCXCN & 0x80)) ; // 等待晶振稳定
51 1 OSCICN = 0x88; // 选择外部晶振作为系统时钟
52 1
53 1 //CKCON = 0x20; //定时器2使用系统时钟
54 1 }
55
C51 COMPILER V7.05 RECEIVE 06/30/2004 15:51:23 PAGE 2
56 //-----------------------------------------------------------------------------
57 // 交叉开关配置
58 //-----------------------------------------------------------------------------
59 //
60
61 void PORT_Init(void)
62 {
63 1 XBR0 = 0x04; //使能UART0
64 1 XBR1 = 0x00;
65 1 XBR2 = 0x40;
66 1 P0MDOUT |= 0xFD; //RX,即P0.1为漏极开路方式,其它为推挽方式
67 1 P1MDOUT |= 0x40; //p1.6为推挽方式
68 1
69 1
70 1 }
71 //--------------------------------------------------------------------------------------
72 //UART初始化
73 //--------------------------------------------------------------------------------------
74 void UART0_Init (void)
75 {
76 1
77 1 SCON0=0x50;
78 1 TMOD=0x20;
79 1 TH1=-(SYSCLK/BAUDRATE/16);
80 1 TR1=1;
81 1 CKCON |=0x10;
82 1 PCON |=0x80;
83 1 //TI0=1;
84 1
85 1 }
86
87
88 void main(void)
89 {
90 1 WDTCN = 0xde; //禁止看门狗定时器
91 1 WDTCN = 0xad;
92 1
93 1
94 1 SYSCLK_Init ();
95 1 PORT_Init ();
96 1 UART0_Init ();
97 1 PWR = 1; //置nRF401为工作模式
98 1 CS = 0;
99 1 for(l=0;l<1000;l++)
100 1 for(q=0;q<100;q++); //选择载波频率为433MHZ
101 1 TXEN = 0; //接收模式
102 1 for(j=0;j<1000;j++)
103 1 for(k=0;k<100;k++);
104 1 EA=1;
105 1 ES0=1;
106 1 //TI0=0;
107 1 //RI0=0;
108 1 while(1)
109 1 {
110 2 while(RI0==0);
111 2 RI0=0;
112 2
113 2 }
114 1 }
115 //UART中断服务程序,中断向量4
116 //------------------------------------------------------------------------------------
117 void UART0_ISR (void) interrupt 4 using 3
C51 COMPILER V7.05 RECEIVE 06/30/2004 15:51:23 PAGE 3
118 {
119 1 if(m==100)
120 1 m=0;
121 1 //while(m<100)
122 1 //if(SBUF0==0xaa)
123 1 //{
124 1 re[m]=SBUF0;
125 1
126 1 m++;
127 1 RI0=0;
128 1
129 1 // }
130 1
131 1
132 1 }
133
134
135
136
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 227 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 100 ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
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 + -