📄 crc.lst
字号:
C51 COMPILER V6.02 CRC 08/02/2006 14:44:15 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE CRC
OBJECT MODULE PLACED IN D:\GB_ASC\CRC.OBJ
COMPILER INVOKED BY: e:\comp51\COMP51V6\C51.EXE D:\GB_ASC\CRC.C DB SB OE LARGE
stmt level source
1 #include <reg51.h>
2 #include <absacc.h>
3
4 //#define Begin
5 unsigned char xdata RX_BUF[512];
6 unsigned int xdata head=0;
7 unsigned int xdata tail=0;
8 unsigned char transparence=0;
9 unsigned char testbit=0;
10 unsigned char REVSTATUS=0;
11 unsigned char xdata checkdata[512];
12 unsigned short checktemp=0;
13 unsigned int transparence_valid=0;
14 unsigned int data_num=4;
15 unsigned int check_write=0;
16 unsigned int check_temp=0;
17 unsigned char beginbit=0;
18 unsigned char valid_data=0;
19 unsigned char valid_data_num=0;
20 unsigned char receive_flag;
21
22 extern unsigned char xdata h_address;
23 extern unsigned char xdata l_address;
24
25 sbit watch_dog=P1^3;
26 void com_receive_deal();
27 void deal_fpgadram();
28 void check_transparence()
29 {
30 1 switch(transparence){
31 2 case 0:if(testbit==1){
32 3 transparence =1;
33 3 transparence_valid=0;
34 3 }else {
35 3 transparence =0;
36 3 transparence_valid=0;
37 3 }
38 2 break;
39 2 case 1:if(testbit==1){
40 3 transparence =2;
41 3 transparence_valid=0;
42 3 }else {
43 3 transparence =0;
44 3 transparence_valid=0;
45 3 }
46 2 break;
47 2 case 2:if(testbit==1){
48 3 transparence =3;
49 3 transparence_valid=0;
50 3 }else {
51 3 transparence =0;
52 3 transparence_valid=0;
53 3 }
54 2 break;
55 2 case 3:if(testbit==1){
C51 COMPILER V6.02 CRC 08/02/2006 14:44:15 PAGE 2
56 3 transparence =4;
57 3 transparence_valid=0;
58 3 }else {
59 3 transparence =0;
60 3 transparence_valid=0;
61 3 }
62 2 break;
63 2 case 4:if(testbit==1){
64 3 transparence =5;
65 3 transparence_valid=0;
66 3 }else {
67 3 transparence =0;
68 3 transparence_valid=0;
69 3 }
70 2 break;
71 2 case 5:if(testbit==0){
72 3 transparence =0;
73 3 transparence_valid=1;
74 3 }else {
75 3 transparence =6;
76 3 transparence_valid=1;
77 3 }
78 2 break;
79 2 case 6:if(testbit==0){
80 3 transparence =0;
81 3 transparence_valid=1;
82 3 REVSTATUS=0;
83 3 }else {
84 3 REVSTATUS=0X55;
85 3 transparence_valid=0;
86 3 }
87 2 break;
88 2 default:break;
89 2 }
90 1 }
91
92 check_frame()
93 {
94 1 switch(beginbit){
95 2 case 0:if(testbit==0){
96 3 beginbit=1;
97 3 REVSTATUS=0;
98 3 }else{
99 3 beginbit=0;
100 3 }
101 2 break;
102 2 case 1:if(testbit==1){
103 3 beginbit=2;
104 3 REVSTATUS=0;
105 3 }else{
106 3 beginbit=1;
107 3 REVSTATUS=0;
108 3 }
109 2 break;
110 2 case 2:if(testbit==1){
111 3 beginbit=3;
112 3 REVSTATUS=0;
113 3 }else{
114 3 beginbit=1;
115 3 REVSTATUS=0;
116 3 }
117 2 break;
C51 COMPILER V6.02 CRC 08/02/2006 14:44:15 PAGE 3
118 2 case 3:if(testbit==1){
119 3 beginbit=4;
120 3 REVSTATUS=0;
121 3 }else{
122 3 beginbit=1;
123 3 REVSTATUS=0;
124 3 }
125 2 break;
126 2 case 4:if(testbit==1){
127 3 beginbit=5;
128 3 REVSTATUS=0;
129 3 }else{
130 3 beginbit=1;
131 3 REVSTATUS=0;
132 3 }
133 2 break;
134 2 case 5:if(testbit==1){
135 3 beginbit=6;
136 3 REVSTATUS=0;
137 3 }else{
138 3 beginbit=1;
139 3 REVSTATUS=0;
140 3 }
141 2 break;
142 2 case 6:if(testbit==1){
143 3 beginbit=7;
144 3 REVSTATUS=0;
145 3 }else{
146 3 beginbit=1;
147 3 REVSTATUS=0;
148 3 }
149 2 break;
150 2 case 7:if(testbit==0){
151 3 beginbit=0;
152 3 REVSTATUS=1;
153 3 }else{
154 3 beginbit=0;
155 3 REVSTATUS=0;
156 3 }
157 2 break;
158 2 default:beginbit=0;
159 2 REVSTATUS=0;
160 2 break;
161 2 }
162 1 }
163 unsigned short cal_crc(unsigned char *ptr,unsigned int len)
164 {
165 1 unsigned char i;
166 1 unsigned short crc=0;
167 1
168 1 while(len--!=0){
169 2 for(i=0x80;i!=0;i/=2){
170 3 if((crc&0x8000)!=0){
171 4 crc*=2;
172 4 crc^=0x1021;
173 4 }
174 3 else
175 3 crc*=2;
176 3 if((*ptr&i)!=0)
177 3 crc^=0x1021;
178 3 }
179 2 ptr++;
C51 COMPILER V6.02 CRC 08/02/2006 14:44:15 PAGE 4
180 2 }
181 1 return(crc);
182 1 }
183 void crc_main()
184 {
185 1 unsigned char i;
186 1 unsigned char *p;
187 1 /////////////////////////////////////////////////////////////////
188 1 IP=0X10;
189 1 while(head!=tail){
190 2 for(i=0;i<8;i++){
191 3 testbit=(RX_BUF[tail]>>(7-i))%2;
192 3 switch (REVSTATUS){
193 4 case 0:check_frame();
194 4 break;
195 4 case 1:check_transparence();
196 4 if(transparence_valid==0){
197 5 valid_data=valid_data+(testbit<<(7-valid_data_num));
198 5 if(++valid_data_num==8){
199 6 if(valid_data==h_address/*aa*/){
200 7 // transparence=0;
201 7 REVSTATUS=2;
202 7 valid_data=0;
203 7 valid_data_num=0;
204 7 checkdata[0]=h_address/*aa*/;
205 7 }else{
206 7 transparence=0;
207 7 REVSTATUS=0;
208 7 valid_data=0;
209 7 valid_data_num=0;
210 7 }
211 6 }
212 5 }else{
213 5 if(transparence_valid==1&&REVSTATUS==0){
214 6 transparence_valid=0;
215 6 transparence=0;
216 6 valid_data=0;
217 6 valid_data_num=0;
- }
218 5 }
219 4
220 4 break;
221 4 case 2: if(transparence_valid==0){
222 5 valid_data=valid_data+(testbit<<(7-valid_data_num));
223 5 if(++valid_data_num==8){
224 6 if(valid_data==l_address/*dd*/){
225 7 // transparence=0;
226 7 REVSTATUS=3;
227 7 valid_data=0;
228 7 valid_data_num=0;
229 7 checkdata[1]=l_address/*dd*/;
230 7 }else{
231 7 transparence=0;
232 7 REVSTATUS=0;
233 7 valid_data=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -