?? pmpdatat.lst
字號:
C51 COMPILER V7.02b PMPDATAT 12/10/2005 20:50:53 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE PMPDATAT
OBJECT MODULE PLACED IN PMPDataT.OBJ
COMPILER INVOKED BY: E:\EDATOOLS\KEILC7.0\C51\BIN\C51.EXE PMPDataT.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*****************************************/
2 /* Copyright (c) 2005, 通信工程學院 */
3 /* All rights reserved. */
4 /* 作 者:戴 佳 */
5 /*****************************************/
6
7 #include "PMPDataT.h"
8
9 /* 延時t毫秒 */
10 void delay(uint t)
11 {
12 1 uint i;
13 1 while(t--)
14 1 {
15 2 /* 對于11.0592M時鐘,約延時1ms */
16 2 for (i=0;i<125;i++)
17 2 {}
18 2 }
19 1 }
20
21 /* 發送數據函數 */
22 void senddata(uchar *buf)
23 {
24 1 uchar i;
25 1 uchar len; // 保存數據長度
26 1 uchar ecc; // 保存校驗字節
27 1
28 1 len = strlen(buf); // 計算要發送數據的長度
29 1 ecc = len; // 開始進行校驗字節計算
30 1
31 1 /* 發送數據長度 */
32 1 TI = 0;
33 1 TB8 = 0; // 發送數據幀
34 1 SBUF = len; // 發送長度
35 1 while(!TI);
36 1 TI = 0;
37 1
38 1 /* 發送數據 */
39 1 for (i=0;i<len;i++)
40 1 {
41 2 ecc = ecc^(*buf);
42 2 TB8 = 0; // 發送數據幀
43 2 SBUF = *buf;
44 2 buf++;
45 2 while(!TI);
46 2 TI = 0;
47 2 }
48 1
49 1 /* 發送校驗字節 */
50 1 TB8 = 0; // 發送數據幀
51 1 SBUF = ecc;
52 1 while(!TI);
53 1 TI = 0;
54 1 }
55
C51 COMPILER V7.02b PMPDATAT 12/10/2005 20:50:53 PAGE 2
56 /* 串口初始化函數 */
57 void init_serial()
58 {
59 1 TMOD = 0x20; // 定時器T1使用工作方式2
60 1 TH1 = 250;
61 1 TL1 = 250;
62 1 TR1 = 1; // 開始計時
63 1 PCON = 0x80; // SMOD = 1
64 1 SCON = 0xd0; // 工作方式,9位數據位,波特率9600kbit/s,允許接收
65 1 }
66
67 /* 主程序 */
68 void main()
69 {
70 1 uchar i = 0;
71 1 uchar tmp;
72 1
73 1 /* 為緩沖區賦初值 */
74 1 P0 = 0xff;
75 1 while(P1!=0) // 每隔100ms從P0口讀取,讀取到0表示數據采集結束
76 1 {
77 2 *(buf+i) = P0;
78 2 delay(100); // 延時100ms
79 2 P0 = 0xff;
80 2 i++;
81 2 }
82 1 *(buf+i) = 0; // 緩沖區最后一個字節為0表示數據結束
83 1
84 1 /* 通過P0口讀要訪問的從機地址 */
85 1 P0 = 0xff;
86 1 addr = P0;
87 1
88 1 init_serial(); // 串口初始化
89 1
90 1 EA = 0; // 關閉所有中斷
91 1
92 1 /* 發送地址幀并接收應答信息,如果接收的信號與發送的地址信息不同,則重新發送地址幀 */
93 1 tmp = addr-1;
94 1 while(tmp!=addr)
95 1 {
96 2 /* 發送從機地址 */
97 2 TI = 0;
98 2 TB8 = 1; // 發送地址幀
99 2 SBUF = addr;
100 2 while(!TI);
101 2 TI = 0;
102 2
103 2 /* 接收從機應答 */
104 2 RI = 0;
105 2 while(!RI);
106 2 tmp = SBUF;
107 2 RI = 0;
108 2 }
109 1
110 1 /* 發送數據并接收校驗信息,如果接收到SUCC,表示從機接收成功,否則將重新發送該組數據 */
111 1 tmp = ERR;
112 1 while(tmp!=SUCC)
113 1 {
114 2 senddata(buf); // 發送數據
115 2 RI = 0;
116 2 while(!RI);
117 2 tmp = SBUF;
C51 COMPILER V7.02b PMPDATAT 12/10/2005 20:50:53 PAGE 3
118 2 RI = 0;
119 2 }
120 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 232 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 65 4
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 + -