📄 pmpdatar.lst
字号:
C51 COMPILER V8.05a PMPDATAR 05/08/2009 01:23:34 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE PMPDATAR
OBJECT MODULE PLACED IN PMPDataR.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PMPDataR.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "PMPDataR.h"
3
4
5 /* 延时t毫秒 */
6 void delay(uint t)
7 {
8 1 uint i;
9 1 while(t--)
10 1 {
11 2 /* 对于11.0592M时钟,约延时1ms */
12 2 for (i=0;i<125;i++)
13 2 {}
14 2 }
15 1 }
16
17 /* 接收数据函数 */
18 uchar recvdata()
19 {
20 1
21 1 /* 接收数据 */
22 1 while(!RI);
23 1 if (RB8==1)
24 1 return 0xee; // 若接收的为地址帧,则返回0xee
25 1 buf = SBUF;
26 1 RI = 0;
27 1 return 0; // 返回0
28 1 }
29
30 /* 串口初始化函数 */
31 void init_serial()
32 {
33 1 TMOD = 0x20; // 定时器T1使用工作方式2
34 1 TH1 = 0xfd;
35 1 TL1 = 0xfd;
36 1 TR1 = 1; // 开始计时
37 1 PCON = 0x00; // SMOD = 1
38 1 SCON = 0xf0; // 工作方式,9位数据位,波特率9600kbit/s,允许接收
39 1 }
40
41 /* 主程序 */
42 void main()
43 {
44 1 uchar i = 0;
45 1 uchar tmp = 0xff;
46 1 P1= 0xff;
47 1 addr = P1&0x0f; // 获取本机地址
48 1 P23 = 1; // 发光管不亮
49 1
50 1 init_serial(); // 串口初始化
51 1
52 1 EA = 1; // 关闭所有中断
53 1
54 1 /* 进入设备应答 */
55 1 while(1)
C51 COMPILER V8.05a PMPDATAR 05/08/2009 01:23:34 PAGE 2
56 1 {
57 2 SM2 = 1; // 只接收地址帧
58 2
59 2 /* 如果接收到的地址帧不是本机地址,则继续等待 */
60 2 while (tmp!=addr)
61 2 {
62 3 RI = 0;
63 3 while(!RI)
64 3 tmp = SBUF;
65 3 RI = 0;
66 3 }
67 2 SM2 = 0; // 允许接收数据
68 2
69 2 /* 数据接收 */
70 2 tmp = recvdata();
71 2 //if(buf!=0x00)
72 2
73 2 if (tmp==0x00)
74 2 {
75 3 P0=buf;
76 3 /* 绿灯亮,持续500ms,表示接收数据成功 */
77 3 P23 = 0;
78 3 delay(30);
79 3 P23 = 1;
80 3
81 3 }
82 2 // 如果接收数据时发现地址帧,则重新开始整个接收过程
83 2 }
84 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 131 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 1
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 + -