📄 distm.lst
字号:
C51 COMPILER V7.06 DISTM 06/20/2005 15:36:06 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DISTM
OBJECT MODULE PLACED IN .\out\distm.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE distm.c OPTIMIZE(6,SIZE) DEBUG OBJECTEXTEND PRINT(.\out\distm.lst) OBJECT(.
-\out\distm.obj)
stmt level source
1 /**--------------文件信息--------------------------------------------------------------------------------
2 **文 件 名: distm.c
3 **创 建 人: 曾银玲
4 **最后修改日期: 2004年4月3日
5 **描 述: distm源代码。
6 **
7 **--------------历史版本信息----------------------------------------------------------------------------
8 ** 创建人: 曾银玲
9 ** 版 本: V1。0
10 ** 日 期: 2004年2月22日
11 ** 描 述: 原始版本
12
13 **------------------------------------------------------------------------------------------------------
14 ** 修改人: 曾银玲
15 ** 版 本: V1.0
16 ** 日 期: 2004年7月2日
17 ** 描 述: 根据新版本要求修改
18 **
19 **--------------当前版本修订------------------------------------------------------------------------------
20 ** 修改人:
21 ** 日 期:
22 ** 描 述:
23 **
24 **------------------------------------------------------------------------------------------------------
25 ********************************************************************************************************/
26
27
28
29 //#include <absacc.h>
30
31 //#include <reg51.h>
32 //#include <intrins.h>
33 //#include <string.h>
34 //#include <stdio.h>
35 #define IN_DISTM
36
37 #include "config.h"
38 main()
39 {
40 1 init();
41 1
42 1 TR0=1;
43 1 TR1=1;
44 1 OSStart();
45 1 }
46 void init(void)
47 {uint8 k;
48 1 init52();
49 1 init_12887();
50 1 //init_16550();
51 1 selct_page_addr();
52 1 sp=&ram0;
53 1 sp0=&ram1;
54 1 for(k=0;k<0x108;k++){
C51 COMPILER V7.06 DISTM 06/20/2005 15:36:06 PAGE 2
55 2 *(sp+k)=0x00;}
56 1 for(k=0;k<0x108;k++){
57 2 *(sp0+k)=0x00;}
58 1
59 1 head00_over=0;head01_over=0;head02_over=0;
60 1
61 1 }
62 /*********************************************************************************************************
63 ** 函数名称: TaskPICK
64 ** 功能描述: PICK
65 ** 输 入: 无
66 ** 输 出: 无
67 ** 全局变量: AdBuf Cell
68 ** 调用模块: midst OSWait
69 **
70 ** 作 者: 曾银玲
71 ** 日 期: 2004年4月28日
72 **-------------------------------------------------------------------------------------------------------
73 ** 修改人:
74 ** 日 期:
75 **-------------------------------------------------------------------------------------------------------
76 *********************************************************************************************************/
77 void TaskPick(void)
78 {
79 1 uint8 i,j,k;
80 1 cj_50hz();
81 1 cj_6k();
82 1 anly_50hz(0);
83 1 andata00=mdtra;
84 1 anly_50hz(8);
85 1 andata01=mdtra;
86 1 anly_6k(16);
87 1 out_xdata=mdtra;
88 1
89 1 i=andata00^andata10;
90 1 j=andata01^andata11;
91 1 k=out_xdata^old_out;
92 1 if(i!=0){
93 2 memdata[cjtemp]=andata00;
94 2 memdata[cjtemp+1]=0x66;
95 2 cjtemp+=2;
96 2 storage();
97 2 andata10=andata00;}
98 1 if(j!=0){
99 2 memdata[cjtemp]=andata01;
100 2 memdata[cjtemp+1]=0x77;
101 2 cjtemp+=2;
102 2 storage();
103 2 andata11=andata01;}
104 1 if(k!=0){
105 2 memdata[cjtemp]=out_xdata;
106 2 memdata[cjtemp+1]=0x88;
107 2 cjtemp+=2;
108 2 storage();}
109 1 //old_out=out_xdata;}
110 1 }
111 void TaskTrans_x1x2(void)
112 {
113 1 uint8 temp0,temp1,i,j,highbyte,lowbyte;
114 1 uint16 condat0;
115 1 temp0=out_xdata&0x03;
116 1 temp1=old_out&0x03;
C51 COMPILER V7.06 DISTM 06/20/2005 15:36:06 PAGE 3
117 1 //temp2=out_xdata&0x30;//2004/10/9
118 1 //temp3=out_xdata&0xc0;//2004/10/9
119 1 i=temp0^temp1;
120 1 if((i!=0)||(time_2s==1)){time_2s=0;
121 2 while(!trans_over){}
122 2 SBUF=0xfc;trans_over=0;
123 2 while(!trans_over){}
124 2 SBUF=0x33;trans_over=0;
125 2
126 2 if(((out_xdata&0x03)==0x01)&&((out_xdata&0xf0)==0x00)){//2004/10/09
127 3 //if((out_xdata&0x03)==0x01){
128 3 tx[0]=0x44;
129 3 tx[1]=0x55;
130 3 tx[2]=0x66;
131 3 pbuf=&tx[0];
132 3 condat0=getcrccode(pbuf,3);
133 3 lowbyte=condat0&0x00ff;
134 3 highbyte=condat0>>8;
135 3 tx[3]=lowbyte;
136 3 tx[4]=highbyte;
137 3 for(j=0;j<5;j++){
138 4 while(!trans_over){}
139 4 SBUF=tx[j];trans_over=0;}}
140 2 if(((out_xdata&0x03)==0x02)&&((out_xdata&0xf0)==0x00)){//2004/10/09
141 3 //if((out_xdata&0x03)==0x02){
142 3 tx[0]=0x77;
143 3 tx[1]=0x88;
144 3 tx[2]=0x99;
145 3 pbuf=&tx[0];
146 3 condat0=getcrccode(pbuf,3);
147 3 lowbyte=condat0&0x00ff;
148 3 highbyte=condat0>>8;
149 3 tx[3]=lowbyte;
150 3 tx[4]=highbyte;
151 3 for(j=0;j<5;j++){
152 4 while(!trans_over){}
153 4 SBUF=tx[j];trans_over=0;}}
154 2 if((out_xdata&0x03)==0x00){
155 3 tx[0]=0xaa;
156 3 tx[1]=0xbb;
157 3 tx[2]=0xcc;
158 3 pbuf=&tx[0];
159 3 condat0=getcrccode(pbuf,3);
160 3 lowbyte=condat0&0x00ff;
161 3 highbyte=condat0>>8;
162 3 tx[3]=lowbyte;
163 3 tx[4]=highbyte;
164 3 for(j=0;j<5;j++){
165 4 while(!trans_over){}
166 4 SBUF=tx[j];trans_over=0;}}
167 2 old_out=out_xdata;
168 2 while(!trans_over){}
169 2 SBUF=out_xdata;trans_over=0;
170 2 }
171 1
172 1
173 1 }
174
175 void TaskD(void)
176 {uint8 j;
177 1 while (1)
178 1 {
C51 COMPILER V7.06 DISTM 06/20/2005 15:36:06 PAGE 4
179 2 if((out_xdata&0x30)==0x30){ //有问题040809,已修改041122
180 3 if((wave00==1)&&((out_xdata&0x01)==0x01)){alarm=1;}
181 3 else{alarm=0;}}
182 2 else if((out_xdata&0xc0)==0xc0){
183 3 if((wave01==1)&&((out_xdata&0x02)==0x02)){alarm=1;}
184 3 else{alarm=0;}}
185 2 j=clear;
186 2 }
187 1 }
188 void TaskE(void)
189 {
190 1 while (1)
191 1 {
192 2 OSWait(K_TMO,(50*OS_TICKS_PER_SEC)/1000);
193 2 }
194 1 }
195 void TaskF(void)
196 {
197 1 while (1)
198 1 {
199 2 OSWait(K_TMO,(50*OS_TICKS_PER_SEC)/1000);
200 2 }
201 1 }
202 /*void storage(void)
203 { uchar i,j;
204 //sp=&ram0;
205 j=cjtemp+6;
206 read_date();
207 read_time();
208 memdata[cjtemp]=date[0];
209 memdata[cjtemp+1]=date[1];
210 memdata[cjtemp+2]=date[2];
211 memdata[cjtemp+3]=date[3];
212 memdata[cjtemp+4]=date[4];
213 memdata[cjtemp+5]=date[5];
214 for(i=0;i<j;i++){
215 *(sp+num_in)=memdata[i];num_in++;
216 if(num_in>0xff){
217 bytes_write(0xff);
218 num_in=0;
219 sp=&ram0;}
220 }
221 cjtemp=0;//variable=0;//04/10/18
222 }
223 uint code crcCcittTable[16] =
224 {
225 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
226 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
227 };*/
228 int16 getcrccode(uint8 *point0,uint8 lenth);
229 int16 getcrccode(uint8 *p0,uint8 ilen)
230 { uint16 i,j,crc=0;
231 1
232 1 for(i=0;i<ilen;i++)
233 1 { j=(crc>>8)^(*(p0+i));
234 2 crc=(crc<<8)^crcCcittTable[j];
235 2 }
236 1 return (crc);
237 1 }
238
239 void init_16550(void)
240 {
C51 COMPILER V7.06 DISTM 06/20/2005 15:36:06 PAGE 5
241 1 //MR=1;
242 1 MR=0;
243 1 UARTLCR=0x80; //bound 80
244 1 UARTRBR=tab[1];
245 1
246 1 UARTIER=0; //0
247 1 UARTLCR=0x0b; //8,n,1 0x0b:odd,0x1b:even
248 1 UARTIER=0x05;
249 1
250 1 ACC=UARTLSR;
251 1 ACC=UARTRBR;
252 1 ACC=UARTRBR;
253 1
254 1 re_start=0;
255 1 }
256 void init_12887(void)
257 {
258 1 uint8 i;
259 1 //i=RTIMED;
260 1 RTIMEA=0x20;//分频复位70h
261 1 RTIMEB=0x8a;//停止更新,选BCD码,24小时制
262 1 // RTIME0=30;
263 1 RTIME1=0xff;//XBYTE[0XFF00]=0x24;
264 1 //RTIME2=0x33;
265 1 RTIME3=0xff;
266 1 //RTIME4=0x10;
267 1 RTIME5=0xff;
268 1 //RTIME7=0x03;RTIME8=0x05;RTIME9=0x04;
269 1 RTIMEA=0x29;//打开晶振并允许RTC计时
270 1 RTIMEB=0x0a;//每秒计时走一次,24小时制
271 1 i=RTIMEC;
272 1 i=RTIMED;
273 1 }
274 void write_12887(void)
275 {uint8 i;
276 1 //P13=0;
277 1 i=RTIMED;//0x80 formal 0x00 lithium battery use up
278 1 RTIMEA=0x20;
279 1 RTIMEB=0x8a;
280 1 RTIME0=date[5];
281 1 RTIME2=date[4];
282 1 RTIME4=date[3];
283 1 RTIME7=date[2];
284 1 RTIME8=date[1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -