main.lst
来自「51系列单片之间的串口多机通信程序。已经成功通过调试」· LST 代码 · 共 127 行
LST
127 行
C51 COMPILER V7.50 MAIN 08/27/2007 10:50:55 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #include <absacc.h>
4 #include "define.h"
5 #include "delay.h"
6 #include "lcd1602.h"
7 #define SNUM 8
8 #define RNUM 8
9 #define MYADDR 0xfe
10 uchar sdbuf[SNUM]="recived";
11 uchar rvbuf[RNUM];
12 uchar ri,si;
13 bit rcved,rcv,acked;
14 bit Send(uchar addr);//主机,从机
15 void main()
16 {
17 1 Lcd_Initial();
18 1 Lcd_Puts(2,0,"connecting...");
19 1 SCON=0x90;//串口工作方式2
20 1 PCON|=0x80;
21 1 EA=1;//开串口中断
22 1 ES=1;
23 1
24 1 rcved=0;
25 1 ri=0;si=0;
26 1
27 1 TI=1;
28 1 while(!Send(0x35));
29 1 while(1)
30 1 {
31 2 if(rcved)
32 2 {
33 3 rcved=0;
34 3 Lcd_Puts(3,1,rvbuf);
35 3 while(!Send(0x35));
36 3 }
37 2 }
38 1 }
39 bit Send(uchar addr)//主机,从机
40 {
41 1 uchar temp=100;
42 1 SBUF=addr;//发送地址
43 1
44 1 while(1)//等待应答
45 1 {
46 2 if(acked)//检查应答标志
47 2 {
48 3 acked=0;
49 3 si=0;
50 3 break;//继续发送
51 3 }
52 2 temp--;
53 2 if(temp==0)return 0;//检测应答失败
54 2 }
55 1 //继续发送
C51 COMPILER V7.50 MAIN 08/27/2007 10:50:55 PAGE 2
56 1 while(1)
57 1 {
58 2 if(TI)
59 2 {
60 3 TI=0;
61 3 SBUF=sdbuf[si++];
62 3 if(si==SNUM)
63 3 {
64 4 return 1;
65 4 }
66 3 }
67 2 }
68 1 }
69 void rvchar() interrupt 4 using 1 //利用中断接受数据,从机
70 {
71 1 uchar temp;
72 1 EA=0;//关中断
73 1 if(RI)
74 1 {
75 2 temp=SBUF;
76 2 RI=0;
77 2 if(temp==0xff)//应答信号
78 2 {
79 3 acked=1;
80 3 }
81 2 else//接受到信息
82 2 {
83 3 if(temp==MYADDR)//是我的地址
84 3 {
85 4 rcv=1;
86 4 ri=0;
87 4 SBUF=0xff;//发送应答标志
88 4 }
89 3 else if(rcv)
90 3 {
91 4 rvbuf[ri++]=temp;
92 4 if(ri==RNUM)
93 4 {
94 5 rcv=0;
95 5 rcved=1;
96 5 }
97 4 }
98 3 }
99 2 }
100 1 EA=1;//开中断
101 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 642 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 32
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?