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