📄 serial.lst
字号:
C51 COMPILER V7.07 SERIAL 08/16/2007 10:00:05 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define LEN 4
4 uchar idata Readata[4];
5 uchar i;
6 //uchar idata Wridata[4];
7 bit read_flag;
8 //void Back(uchar tem);
9 //uchar Receive();
10 void Send();
11 //void delay(uchar count);
12 void Initserial();// 串口初始化程序
13 void main()
14 {
15 1 uchar i;
16 1 for(i=0;i<10;i++);
17 1 Initserial();// 串口初始化程序
18 1 while(1)
19 1 { if(read_flag) //如果取数标志已置位,就将读到的数从串口发出
20 2 {read_flag=0; //取数标志清0
21 3 Send();
22 3 }
23 2 }
24 1 }
25
26 void Initserial() // 串口初始化程序
27 {
28 1 TMOD=0X20;//定时器T1定义为模式2
29 1 TL1=0XFD;//置初值波特率为9600b/s
30 1 TH1=0XFD;
31 1 PCON=0X00;//SMOD=0
32 1 TR1=1;
33 1 SCON=0X50;//设置串行口控制字,方式1,允许接收
34 1 IE|= 0x90; //开中断
35 1 }
36 void Send()
37 { uchar j;
38 1 for(j=0;j<LEN;j++)
39 1 {SBUF=Readata[j];
40 2 while(TI!=1);TI=0;//等待发送完
41 2 }
42 1
43 1
44 1 }
45 void serial () interrupt 4 using 3 ////串口接收中断函数
46 { if(RI)
47 1 { uchar ch;
48 2 RI =0;
49 2 ch=SBUF;
50 2 Readata[i]=ch;
51 2 i++;
52 2 if(i==LEN)
53 2 {read_flag=1;
54 3 i=0;
55 3 }
C51 COMPILER V7.07 SERIAL 08/16/2007 10:00:05 PAGE 2
56 2 }
57 1 }
58
59
60
61
62 /*返回函数的功能是:CAN0节点向PC机回送标志,从而PC机在确认后能够发送数据*/
63 /*void Back(uchar tem)
64 {
65 SBUF=tem;
66 while(TI!=1);//等待发送完
67 TI=0;
68 }
69 uchar Receive()
70 {
71 uchar addr,i,flag;
72 uchar D1,D2,D3,D4,FF;
73 flag=0;
74 while(1)
75 {
76 while(RI!=1);RI=0;//等待PC机的联络信号
77 addr=SBUF;
78 if(flag==0)
79 { switch(addr)//向PC机回送节点号
80 {
81 case 0xD1:Back(D1),flag=1;break;
82 case 0xD2:Back(D2),flag=1;break;
83 case 0xD3:Back(D3),flag=1;break;
84 case 0xD4:Back(D4),flag=1;break;
85 default:Back(FF),flag=0;break;
86 } //完成对PC机的地址回送,以确认单片机收到的是正确信息
87
88 }
89 else { while(RI!=1);
90 RI=0;
91 while(1)
92 {
93 for(i=0;i<=2;i++)//单片机接收数据
94 { while(RI!=0);RI=0;
95 Readata[i]=SBUF;
96 }
97 }
98 }
99
100 }
101 return (0);
102 }*/
103
104
105
106 /*void delay(uchar count)//延时count*2ms
107 {
108 uchar i,j;
109 for(i=0;i<count;i++)
110 for(j=0;j<250;j++)
111 {;}
112 }//一个for语句延时8us
113 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 98 ----
C51 COMPILER V7.07 SERIAL 08/16/2007 10:00:05 PAGE 3
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 1
IDATA SIZE = 4 ----
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 + -