📄 com.lst
字号:
C51 COMPILER V7.08 COM 03/05/2007 16:38:07 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE COM
OBJECT MODULE PLACED IN com.OBJ
COMPILER INVOKED BY: D:\程序\keil c\C51\BIN\C51.EXE com.c LARGE INCDIR(c:|keil) DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 标题: 蓝海微芯LJD-SY-5100单片机开发系统演示程序 *
3 * 文件: com.c *
4 * 日期: 2006-7-22 *
5 * 版本: 1.0 *
6 * 作者: Pillar *
7 ********************************************************************************
8 * 描述: *
9 * 通信程序 *
10 * *
11 ********************************************************************************
12 * 【版权】 Copyright(C) belongs to 天宇蓝翔科技有限公司 All Rights Reserved *
13 * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 *******************************************************************************/
15 /********************************EEPROM存储分配********************************/
16 //第一个扇区
17
18 //要存储的内容:
19 //1.发射机工作频率:3位。1-8频率
20 //2.零点:2个字节 int
21 //3.分度值:1个字节 char
22 //4.量程:两个字节;一个字节数字,1个字节10幂次 int*10
23 //5.单位:1位,k,0=kg,1=t;
24 //6.斜率:两个字节 int
25 //7.传感器量程:两个字节;一个字节数字,1个字节10幂次 int*10
26
27 //第二个扇区
28
29 //1.出厂编号:两个字节
30 //2.出厂时间:两个字节。年,月,日。
31 //3.接收机编号:两个字节
32
33 //第三扇区
34
35 //1.用户名:20个字节
36 /**************保存参数寄存器***********************************************/
37 #include<com.h>
38
39
40 //常数区
41 //内部数据Flash第一扇区地址
42 #define FLASH_ADDRH 0x20
43 #define FLASH_ADDRL 0x00 //52
44
45 //内部数据Flash第2扇区地址
46 #define FLASH_ADDRH1 0x22
47 #define FLASH_ADDRL1 0x00 //52
48
49 //内部数据Flash第3扇区地址
50 #define FLASH_ADDRH2 0x24
51 #define FLASH_ADDRL2 0x00 //52
52
53
54
55
C51 COMPILER V7.08 COM 03/05/2007 16:38:07 PAGE 2
56
57 void LoadInt(int cs);
58 unsigned char Data_XRL(char *buf,int begin,int end);
59 void Hex_To_Ascii(buf); //把校验数据转换成ASCII
60 void Ascii_To_Hex(buf); //设备地址
61 void Make_Error(unsigned char ch); // 发射** 接收数据不正确要求重发
62 void Make_Two_Byte(int sj,char *jg);
63
64 /**********发射数据********/
65 void r_chengshang_data(unsigned char ch)
66
67 // IsBeginCom=1; //要求发射数据的标志
68 {
69 1 unsigned char buf[4];
70 1 ComHand=4;
71 1
72 1 ComBuf[0]=(unsigned char)(Para1.chuchang_bianhao&0x00ff); //出厂编号低位,设备地址
73 1 ComBuf[1]=(unsigned char)(Para1.chuchang_bianhao>>8);//出厂编号高位,设备地址
74 1
75 1 ComBuf[2]=0x30; //标志读
76 1 ComBuf[3]=0x30;
77 1
78 1 if(ch==1)//读重量数据 4
79 1 {
80 2 LoadInt(ch);
81 2 ComBuf[8]=0x30; //数据直接数
82 2 ComBuf[9]=0x38;
83 2 }
84 1
85 1 else if(ch==2)//发射机工作频率 1
86 1 {
87 2 LoadInt(ch); //数据地址 4
88 2 ComBuf[8]=0x30; //数据直接数
89 2 ComBuf[9]=0x38;
90 2 }
91 1
92 1 else if(ch==3)//零点 2
93 1 {
94 2 LoadInt(ch); //数据地址
95 2 ComBuf[8]=0x30; //数据直接数
96 2 ComBuf[9]=0x34;
97 2 }
98 1
99 1 else if(ch==4)//分度值 1
100 1 {
101 2 LoadInt(ch); //数据地址
102 2 ComBuf[8]=0x30; //数据直接数
103 2 ComBuf[9]=0x32;
104 2 }
105 1
106 1 else if(ch==5)//量程 2
107 1 {
108 2 LoadInt(ch); //数据地址
109 2 ComBuf[8]=0x30; //数据直接数
110 2 ComBuf[9]=0x34;
111 2 }
112 1
113 1 else if(ch==6)//单位 1
114 1 {
115 2 LoadInt(ch); //数据地址
116 2 ComBuf[8]=0x30; //数据直接数
117 2 ComBuf[9]=0x32;
C51 COMPILER V7.08 COM 03/05/2007 16:38:07 PAGE 3
118 2 }
119 1
120 1 else if(ch==7)//斜率 2
121 1 {
122 2 LoadInt(ch); //数据地址
123 2 ComBuf[8]=0x30; //数据直接数
124 2 ComBuf[9]=0x34;
125 2 }
126 1
127 1 else if(ch==8)//传感器量程 2
128 1 {
129 2 LoadInt(ch); //数据地址
130 2 ComBuf[8]=0x30; //数据直接数
131 2 ComBuf[9]=0x34;
132 2 }
133 1
134 1 else if(ch==9)//出厂编号 2
135 1 {
136 2 LoadInt(ch); //数据地址
137 2 ComBuf[8]=0x30; //数据直接数
138 2 ComBuf[9]=0x34;
139 2 }
140 1
141 1 else if(ch==10)//出厂时间 2
142 1 {
143 2 LoadInt(ch); //数据地址
144 2 ComBuf[8]=0x30; //数据直接数
145 2 ComBuf[9]=0x34;
146 2 }
147 1
148 1 else if(ch==11)//接收机编号 2
149 1 {
150 2 LoadInt(ch); //数据地址
151 2 ComBuf[8]=0x30; //数据直接数
152 2 ComBuf[9]=0x34;
153 2 }
154 1
155 1 else if(ch==12)//用户名 20
156 1 {
157 2 LoadInt(ch); //数据地址
158 2 ComBuf[8]=0x30; //数据直接数
159 2 ComBuf[9]=0x44;
160 2 }
161 1
162 1 else if(ch==13)//电池数据 4
163 1 {
164 2 LoadInt(ch); //数据地址
165 2 ComBuf[8]=0x30; //数据直接数
166 2 ComBuf[9]=0x38;
167 2 }
168 1
169 1 buf[0]=Data_XRL(ComBuf,0,ComHand);
170 1 Hex_To_Ascii(buf); //把校验数据转换成ASCII
*** WARNING C214 IN LINE 170 OF COM.C: 'Argument': conversion: pointer to non-pointer
171 1 ComBuf[ComHand]=buf[0];
172 1 ComHand++;
173 1 ComBuf[ComHand]=buf[1];
174 1 ComHand++;
175 1 ComBuf[ComHand]=0x0D;//发射数据尾
176 1
177 1 SBUF=0x40; //启动发射数据
178 1 }
C51 COMPILER V7.08 COM 03/05/2007 16:38:07 PAGE 4
179
180 /***********写数据到称上*****/
181
182 void w_data_to_chengshang(unsigned char ch)//ch为数据地址
183 {
184 1 unsigned char j;
185 1 unsigned char buf[4];
186 1
187 1 IsBeginCom=1; //要求发射数据的标志
188 1
189 1 ComHand=4;
190 1
191 1 //ComBuf[1]=ComBuf[0]; //设备地址
192 1 //ComBuf[2]=ComBuf[1];
193 1 ComBuf[0]=Para1.chuchang_bianhao&0x000f; //出厂编号低位,设备地址
194 1 ComBuf[1]=(Para1.chuchang_bianhao>>8);//出厂编号高位,设备地址
195 1
196 1 ComBuf[2]=0x30; //标志写
197 1 ComBuf[3]=0x31;
198 1
199 1
200 1 if(buf[0]==2) //发射机工作频率
201 1 {
202 2 ComBuf[ComHand]=0x32; //字节数为2
203 2 ComHand++;
204 2 LoadInt(Para.fasheji_pinlv);
205 2
206 2 }
207 1 else if(buf[0]==3) //零点
208 1 {
209 2 ComBuf[ComHand]=0x34; //字节数4
210 2 ComHand++;
211 2 LoadInt(Para.lingdian);
212 2
213 2 }
214 1 else if(buf[0]==4) //分度值
215 1 {
216 2 ComBuf[ComHand]=0x32; //字节数2
217 2 ComHand++;
218 2 LoadInt(Para.fenduzhi);
219 2 }
220 1 else if(buf[0]==5) //量程
221 1 {
222 2 ComBuf[ComHand]=0x34; //字节数4
223 2 ComHand++;
224 2 LoadInt(Para.liangcheng);
225 2 }
226 1
227 1 else if(buf[0]==6) //单位
228 1 {
229 2 ComBuf[ComHand]=0x32; //字节数2
230 2 ComHand++;
231 2 LoadInt(Para.dianwei);
232 2 }
233 1
234 1
235 1 else if(buf[0]==7) //斜率
236 1 {
237 2 ComBuf[ComHand]=0x34; //字节数4
238 2 ComHand++;
239 2 LoadInt(Para.xielv_data);
240 2 }
C51 COMPILER V7.08 COM 03/05/2007 16:38:07 PAGE 5
241 1
242 1 else if(buf[0]==8) //传感器量程
243 1 {
244 2 ComBuf[ComHand]=0x34; //字节数4
245 2 ComHand++;
246 2 LoadInt(Para.chuanganqi_liangcheng);
247 2 }
248 1
249 1 else if(buf[0]==9) //出厂编号
250 1 {
251 2 ComBuf[ComHand]=0x34; //字节数4
252 2 ComHand++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -