📄 slave.lst
字号:
C51 COMPILER V7.01 SLAVE 04/17/2008 18:24:24 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE SLAVE
OBJECT MODULE PLACED IN slave.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE slave.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<c8051f020.h>
2 #define uchar unsigned char
3 #define SLAVE0 0x02 //从机地址
4 #define BN0 16
5 uchar trbuf[16];
6 uchar rebuf[16];
7 bit tready;
8 bit rready;
9 /*void main()
10 {
11 TMOD=0x20;
12 TH1=0xfd;
13 TL1=0xfd;
14 PCON=0x00;
15 TR1=1;
16 SADDR0=SLAVE0; //从机地址
17 SADEN0=0xff;
18 SCON0=0xf0; //UART0方式3,SM20=1,REN0=1,TB80=0
19 ES0=1;
20 EA=1; //开中断
21 while(1){tready=1;rready=1;} //等待中断
22 }*/
23
24 void ssio(void) interrupt 4 using 1 //中断函数
25 {
26 1 void str(void); //函数声明
27 1 void sre(void);
28 1 uchar a;
29 1 RI0=0;
30 1 ES0=0;
31 1 if(SBUF0!=SLAVE0){ES0=1;goto reti;} //非本机地址,继续监听,因c8051f内部
32 1 //可自动判断,因此这句可省
33 1 SM20=0;
34 1 SBUF0=SLAVE0; //回送从机地址
35 1 while(!TI0);TI0=0;
36 1 while(!RI0);RI0=0; //接收命令
37 1 if(RB80==1){SM20=1;ES0=1;goto reti;} //是复位命令,继续监听
38 1 a=SBUF0;
39 1 if(a==0x01) //接收主机数据命令
40 1 {
41 2 if(rready==1) SBUF0=0x01; //发准备好接收状态字
42 2 else SBUF0=0x00; //发未准备好接收状态字
43 2 while(!TI0);TI0=0;
44 2 sre();
45 2 }
46 1 else
47 1 {
48 2 if(a==0x02) //向主机发送数据的命令
49 2 {
50 3 if(tready==1) SBUF0=0x02; //发准备好接收状态字
51 3 else SBUF0=0x00; //发未准备好接收状态字
52 3 while(!TI0);TI0=0;
53 3 str();
54 3 }
55 2 else
C51 COMPILER V7.01 SLAVE 04/17/2008 18:24:24 PAGE 2
56 2 {
57 3 SBUF0=0x08; //发送非法命令状态字
58 3 while(!TI0);TI0=0;
59 3 SM20=1;ES0=1; //恢复监听
60 3 }
61 2 }
62 1 reti: ;
63 1
64 1 }
65
66
67 void str(void) //发送数据块
68 {
69 1 uchar p0,i0;
70 1 tready=0;
71 1 do
72 1 {
73 2 p0=0;
74 2 for(i0=0;i0<BN0;i0++) //发送BN字节数据
75 2 {
76 3 SBUF0=trbuf[i0];
77 3 p0+=trbuf[i0];
78 3 while(!TI0);TI0=0;
79 3 }
80 2 SBUF0=p0; //发送校验和
81 2 while(!TI0);TI0=0;
82 2 while(!RI0);RI0=0; //接收主机应答
83 2 }while(SBUF0!=0);
84 1 SM20=1;
85 1 ES0=1;
86 1 }
87
88 void sre(void) //接收数据块
89 {
90 1 uchar p0,i0;
91 1 rready=0;
92 1 while(1)
93 1 {
94 2 p0=0;
95 2 for(i0=0;i0<BN0;i0++)
96 2 {
97 3 while(!RI0);RI0=0;
98 3 rebuf[i0]=SBUF0;
99 3 p0+=SBUF0;
100 3 }
101 2 while(!RI0);RI0=0;
102 2 if(SBUF0==p0)
103 2 { SBUF0=0x00;
104 3 while(!TI0);TI0=0;
105 3 break;
106 3 }
107 2 else
108 2 {
109 3 SBUF0=0xff;
110 3 while(!TI0);TI0=0;
111 3 }
112 2 }
113 1 SM20=1;
114 1 ES0=1;
115 1 }
C51 COMPILER V7.01 SLAVE 04/17/2008 18:24:24 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 232 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 32 1
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -