📄 setbid.lst
字号:
C51 COMPILER V6.02 SETBID 08/02/2006 14:44:14 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE SETBID
OBJECT MODULE PLACED IN D:\GB_ASC\SETBID.OBJ
COMPILER INVOKED BY: e:\comp51\COMP51V6\C51.EXE D:\GB_ASC\SETBID.C DB SB OE LARGE
stmt level source
1 #include <absacc.h>
2 #include <reg51.h>
3 extern unsigned char receive_flag;
4 extern unsigned char xdata checkdata[512];
5 extern unsigned int check_temp;
6 extern unsigned int xdata tr_flagaddr;
7 unsigned char lin;
8 unsigned char add_transparence=0;
9
10 unsigned int add_transparence_valid=0;
11 unsigned int add_final_number;
12
13 unsigned char xdata data_final_number;
14 unsigned int xdata datanumber=0;
15 unsigned char xdata tempdata;
16 unsigned char xdata add_bit;
17 unsigned char xdata answer_data[310];
18 unsigned char xdata data_final[310];
19 unsigned char xdata h_address;
20 unsigned char xdata l_address;
21
22 extern unsigned char xdata RX_BUF[512];
23 extern unsigned int xdata head;
24 extern unsigned int xdata tail;
25 extern unsigned int re_flagaddr;
26 extern unsigned int xdata data_address;
27 extern unsigned char xdata checkdata[512];
28 extern unsigned int xdata address;
29
30 extern unsigned short cal_crc(unsigned char *ptr,unsigned int len) ;
31 //发送数据到fpga
32 unsigned char tran_fpag(unsigned char flag,unsigned int len)//标志和长度
33 {
34 1 unsigned int i;
35 1 unsigned char j;
36 1 for(i=0;i<6;i++){
37 2 tr_flagaddr=0XA030+5*i;
38 2 if(XBYTE[tr_flagaddr]==0x87)break;
39 2 }
40 1 ///////////////////////////////////////////////////////
41 1 data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1; //当前数据区的尾地址
42 1 address=data_address; //当前数据区的尾地址偏移量
43 1 data_address=data_address+len; //应答数据长度1字节
44 1 if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
45 1 while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){}; //等待FGPA修改头尾
46 1 XBYTE[0xa023]=0x01; //CPU修改头尾
47 1 XBYTE[0xa024]=0X00;
48 1 data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
49 1
50 1 address=data_address; //当前数据区的尾地址偏移量
51 1 data_address=data_address+len; //应答数据长度1字节
52 1 if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
53 1 data_address--;
54 1 XBYTE[0XA021]=data_address>>8; //
55 1 XBYTE[0XA022]=data_address;
C51 COMPILER V6.02 SETBID 08/02/2006 14:44:14 PAGE 2
56 1 XBYTE[0XA023]=0X00; //CPU修改头尾结束
57 1 XBYTE[0XA024]=0X00;
58 1 for(i=0;i<6;i++){
59 2 tr_flagaddr=0XA030+5*i;
60 2 if(XBYTE[tr_flagaddr]==0x87)break;
61 2 }
62 1 if(i==6)return 1;
63 1
64 1 XBYTE[tr_flagaddr+1]=address>>8; //发送数据的首地址
65 1 XBYTE[tr_flagaddr+2]=address;
66 1
67 1 XBYTE[tr_flagaddr+3]=data_address>>8; //发送数据的尾地址
68 1 XBYTE[tr_flagaddr+4]=data_address;
69 1 // XBYTE[tr_flagaddr]=0x01;
70 1 address=address+0xa000; //发送应答数据
71 1
72 1
73 1
74 1 ///////////////////////////////////////////////////
75 1
76 1 switch(flag){
77 2 case 0x94:if(checkdata[5]==0){
78 3 XBYTE[address]=0x94;
79 3 address++; // 标识
80 3 if(address>0xa7f0)address=0xa080;
81 3 for(i=0;i<289;i++){
82 4 XBYTE[address]=XBYTE[0X5000+i];
83 4 address++;
84 4 if(address>0xa7f0)address=0xa080;
85 4 }
86 3 }else{
87 3 XBYTE[address]=0x94;
88 3 address++;
89 3 if(address>0xa7f0)address=0xa080;
90 3 for(i=0;i<289;i++){
91 4 XBYTE[address]=XBYTE[0X5121+i];
92 4 address++;
93 4 if(address>0xa7f0)data_address=0xa080;
94 4 }
95 3 XBYTE[tr_flagaddr]=0x01;
96 3 break;
97 3 case 0x95: j=checkdata[5];
98 3 j=(j-1)*98;
99 3 XBYTE[address]=0x95; // 标识
100 3 address++;
101 3 if(address>0xa7f0)address=0xa080;
102 3 for(i=0;i<98;i++){
103 4 XBYTE[address]=XBYTE[0X5242+i+j];
104 4 address++;
105 4 if(address>0xa7f0)address=0xa080;
106 4 }
107 3 XBYTE[tr_flagaddr]=0x01;
108 3 break;
109 3 case 0x96: j=checkdata[5];
110 3 j=(j-1)*41;
111 3 XBYTE[address]=0x96; // 标识
112 3 address++;
113 3 if(address>0xa7f0)address=0xa080;
114 3 for(i=0;i<41;i++){
115 4 XBYTE[address]=XBYTE[0X5e82+i+j];
116 4 address++;
117 4 if(address>0xa7f0)address=0xa080;
C51 COMPILER V6.02 SETBID 08/02/2006 14:44:14 PAGE 3
118 4 }
119 3 XBYTE[tr_flagaddr]=0x01;
120 3 break;
121 3 case 0x97: break;
122 3 case 0x98:j=checkdata[5];
123 3 j=(j-1)*74;
124 3 XBYTE[address]=0x96; // 标识
125 3 address++;if(address>0xa7f0)address=0xa080;
126 3 for(i=0;i<41;i++){
127 4 XBYTE[address]=XBYTE[0X63a2+i+j];
128 4 address++;
129 4 if(address>0xa7f0)address=0xa080;
130 4 }
131 3 XBYTE[tr_flagaddr]=0x01;
132 3 break;
133 3 case 0x99: XBYTE[address]=0x99; // 标识
134 3 address++;
135 3 if(address>0xa7f0)address=0xa080;
136 3 for(i=0;i<60;i++){
137 4 XBYTE[address]=XBYTE[0X6ce2+i];
138 4 address++;
139 4 if(address>0xa7f0)address=0xa080;
140 4 }
141 3 XBYTE[tr_flagaddr]=0x01;
142 3 break;
143 3 case 0x9a: break;
144 3 case 0x9b: break;
145 3 case 0x9c:break;
146 3 default:break;
147 3 }
148 2 }
149 1 return 0;
150 1
151 1 }
152 //透明性检验
153 void add_transparences()
154 {
155 1 switch(add_transparence)
156 1 {
157 2 case 0 :
158 2 if(add_bit==1)
159 2 {
160 3 add_transparence=1;
161 3 add_transparence_valid=0;
162 3 }
163 2 else
164 2 {
165 3 add_transparence=0;
166 3 add_transparence_valid=0;
167 3 }
168 2 break;
169 2 case 1 :
170 2 if(add_bit==1)
171 2 {
172 3 add_transparence=2;
173 3 add_transparence_valid=0;
174 3 }
175 2 else
176 2 {
177 3 add_transparence=0;
178 3 add_transparence_valid=0;
179 3 }
C51 COMPILER V6.02 SETBID 08/02/2006 14:44:14 PAGE 4
180 2 break;
181 2 case 2:
182 2 if(add_bit==1)
183 2 {
184 3 add_transparence=3;
185 3 add_transparence_valid=0;
186 3 }
187 2 else
188 2 {
189 3 add_transparence=0;
190 3 add_transparence_valid=0;
191 3 }
192 2 break;
193 2 case 3:
194 2 if(add_bit==1)
195 2 {
196 3 add_transparence=4;
197 3 add_transparence_valid=0;
198 3 }
199 2 else
200 2 {
201 3 add_transparence=0;
202 3 add_transparence_valid=0;
203 3 }
204 2 break;
205 2 case 4:
206 2 if(add_bit==1)
207 2 {
208 3 add_transparence=0;
209 3 add_transparence_valid=1;
210 3 }
211 2 else
212 2 {
213 3 add_transparence=0;
214 3 add_transparence_valid=0;
215 3 }
216 2 break;
217 2 }
218 1
219 1
220 1
221 1 }
222
223 //设置时间
224 set_time()
225 {
226 1 unsigned char *p;
227 1 unsigned short check_temp;
228 1 unsigned char i,j;
229 1 unsigned char beginbit=0; ////////////////////////////////////////
230 1
231 1 //设置时间后用
232 1 datanumber=0;
233 1 data_final_number=0;
234 1 tempdata=0;
235 1 XBYTE[0XC009]=checkdata[5]; //year
236 1 XBYTE[0XC008]=checkdata[6]; //month
237 1 XBYTE[0XC007]=checkdata[7]; //date
238 1 XBYTE[0XC004]=checkdata[8]; //hour
239 1 XBYTE[0XC002]=checkdata[9]; //min
240 1 XBYTE[0XC000]=checkdata[10]; //sec
241 1 XBYTE[0XC006]=checkdata[11]; //day
C51 COMPILER V6.02 SETBID 08/02/2006 14:44:14 PAGE 5
242 1 //应答
243 1 answer_data[0]=h_address;
244 1 answer_data[1]=l_address;
245 1 answer_data[2]=0xcc;
246 1 answer_data[3]=0xc1;
247 1 answer_data[4]=0xd3;
248 1 // answer_data[5]=0x00;
249 1 p=&answer_data[0];
250 1 check_temp=cal_crc(p,5);
251 1 answer_data[5]=(check_temp>>8); //crc
252 1 answer_data[6]=check_temp; //crc
253 1 answer_data[7]=0x7e;
254 1 for(i=0;i<8;i++){
255 2 for(j=0;j<8;j++){
256 3 add_bit=(answer_data[i]>>(7-j))%2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -