📄 source1.lst
字号:
C51 COMPILER V8.02 SOURCE1 05/09/2007 13:09:06 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SOURCE1
OBJECT MODULE PLACED IN Source1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Source1.c DB OE
line level source
1 #include <c8051f020.h>
2
3
4 #define BAUDRATE 9600 /*UART0的波特率*/
5 #define SYSCLK 11059200 /*系统时钟*/
6 sbit buz = P2^5;
7
8 bit ReceiveBit; /*接收标志位*/
9 unsigned char temp;
10
11 void delay(unsigned int m)
12 {
13 1 unsigned int n;
14 1 n=0;
15 1 while(n < m)
16 1 {n++;}
17 1 return;
18 1 }
19
20 void SYSCLK_Init (void)
21 {
22 1 int i; /*延时计数器*/
23 1 OSCXCN = 0x67; /*打开外部晶体振荡器*/
24 1 for (i=0; i < 256; i++); /*延时*/
25 1
26 1 while (!(OSCXCN & 0x80)); /*查询外部晶体是否稳定起振*/
27 1
28 1 OSCICN = 0x88; /*用外部晶体作为系统时钟,并使能时钟丢失检测*/
29 1 }
30
31 void PORT_Init (void)
32 {
33 1 XBR0 |= 0x17; // Enable CEX0 on P0.0
34 1 XBR1 |= 0x00;
35 1 XBR2 |= 0x44; // Enable crossbar and weak pull-ups
36 1 P0MDOUT |= 0x1D; // enable P0.0 as a push-pull output
37 1 P1MDOUT = 0xFD; // Output configuration for P1
38 1 P2MDOUT = 0x00; // Output configuration for P2
39 1 P3MDOUT = 0x00; // Output configuration for P3
40 1 P74OUT = 0x00; // Output configuration for P4-7
41 1
42 1 P1MDIN = 0xFF; // Input configuration for P1
43 1 P5 = 0xFF;
44 1 }
45
46 void UART0_Init (void)
47 {
48 1 SCON0 = 0x50; /*SCON0:模式1,8位UART,时能RX*/
49 1 TMOD = 0x20; /*TMOD: 定时器工作再模式2, 8位重载*/
50 1 TH1 = -(SYSCLK/BAUDRATE/12); /*设置定时1用作波特率的重载值*/
51 1 TR1 = 1; /*开定时器1*/
52 1
53 1 }
54
55
C51 COMPILER V8.02 SOURCE1 05/09/2007 13:09:06 PAGE 2
56 /*串口中断0子程序*/
57 void UART0_ISR (void) interrupt 4 using 3
58 {
59 1 if(RI0 == 1) //是发送中断还是接收中断
60 1 {
61 2 RI0 = 0; /*清接收标志位*/
62 2 temp =SBUF0; /*保存接收到的数据*/
63 2 ReceiveBit=1; /*置接收标志*/
64 2 }
65 1 TI0 = 0; /*清发送标志位*/
66 1 }
67
68 //-----------------------------------------------------------------------------
69 // MAIN Routine
70 //-----------------------------------------------------------------------------
71
72 void main(void)
73 {
74 1 unsigned char i;
75 1 WDTCN = 0xde; /*关看门狗*/
76 1 WDTCN = 0xad;
77 1 ReceiveBit=0;
78 1 SYSCLK_Init(); /*初始化系统时钟*/
79 1 PORT_Init(); /*初始挂交叉开关和I/O口*/
80 1 UART0_Init(); /*初始化UART0*/
81 1 EA=1; //开中断
82 1 ES0=1;
83 1 while(1)
84 1 {
85 2 while (ReceiveBit==1) /*是否接收到一个数据*/
86 2 {
87 3 ES0=0; /*关串口中断0*/
88 3 EA=0; /*关总中断*/
89 3 ReceiveBit=0; /*清接收标志位*/
90 3 delay(60000); /*延时*/
91 3 delay(60000);
92 3 delay(60000);
93 3 SBUF0=temp; /*将接收到数据送出*/
94 3 while(TI0==0); /*发送标志位是否产生*/
95 3 TI0=0; /*清发送标志位*/
96 3 buz=0;
97 3 for(i=0; i<3; i++) /*延时*/
98 3 {
99 4 delay(60000);
100 4 }
101 3 buz=1;
102 3 ES0=1; /*开中断标志*/
103 3 EA=1;
104 3 }
105 2
106 2 }
107 1 }
108
109
110
111
112
113
114
115
116
C51 COMPILER V8.02 SOURCE1 05/09/2007 13:09:06 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 171 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -