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