📄 cmdr6c.lst
字号:
C51 COMPILER V7.09 CMDR6C 09/11/2007 09:30:23 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE CMDR6C
OBJECT MODULE PLACED IN cmdr6c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cmdr6c.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "crc16.h"
2 #include "comr6c.h"
3 #include "typedef.h"
4 #include "time.h"
5 #include "main.h"
6 #include "intrins.h"
7 #include "baseclk.h"
8 #include "ll.h"
9 void send_ISO_cmd(uchar flags,uchar cmd,uchar dataPstion,uchar paraLength)
10 {
11 1 /*
12 1 uchar i;
13 1 uint crc_val;
14 1 if( dataPstion > 6 ) // 6 是R6C命令发送的核心数据起始位置
15 1 {
16 1 for(i=0;i<paraLength;i++)
17 1 {
18 1 pcdata[6+i] = pcdata[dataPstion+i];
19 1 }
20 1 }
21 1 else if(dataPstion<6)
22 1 {
23 1 dataPstion --;
24 1 for(i=paraLength;i>0;i--)
25 1 {
26 1 pcdata[5+i] = pcdata[dataPstion+i];
27 1 }
28 1 }
29 1
30 1 pcdata[4] = flags;
31 1 pcdata[5] = cmd;
32 1 crc_val = crc16Calculate(pcdata+4,2+paraLength);
33 1 pcdata[6+paraLength] = LOBYTE(crc_val);
34 1 pcdata[7+paraLength] = HIBYTE(crc_val);
35 1 pcdata[0] = 8+paraLength;
36 1 ES = 0;
37 1 _commandrd();
38 1 ES = 1;
39 1 */
40 1 uchar i;
41 1 uint crc_val;
42 1 if( dataPstion > 6 ) /* 6 是R6C命令发送的核心数据起始位置*/
43 1 {
44 2 for(i=0;i<paraLength;i++)
45 2 {
46 3 pcdata[6+i] = pcdata[dataPstion+i];
47 3 }
48 2 }
49 1 else if(dataPstion<6)
50 1 {
51 2 dataPstion --;
52 2 for(i=paraLength;i>0;i--)
53 2 {
54 3 pcdata[5+i] = pcdata[dataPstion+i];
55 3 }
C51 COMPILER V7.09 CMDR6C 09/11/2007 09:30:23 PAGE 2
56 2 }
57 1
58 1 pcdata[4] = flags;
59 1 pcdata[5] = cmd;
60 1
61 1 crc_val = crc16Calculate(pcdata+4,2+paraLength);
62 1 pcdata[6+paraLength] = LOBYTE(crc_val);
63 1 pcdata[7+paraLength] = HIBYTE(crc_val);
64 1 pcdata[0] = 8+paraLength;
65 1 _commandrd();
66 1 }
67 /*
68 uchar idata nb_l= 0,nb_col=0,mask_len=0;
69 uchar idata num_card=0;
70 uchar idata lev_col[4] = {0,0,0,0}; //最多三级,每级3张,最多10张
71 uchar idata mask[6]={0,0,0,0,0,0}; //最多3级
72 uchar idata pushData[8]={0,0,0,0,0,0,0,0}; //缓冲数据
73
74 void init_inventory(void)
75 {
76
77 nb_l= 0 ; nb_col=0; mask_len=0;
78 num_card=0;
79 lev_col[0] = 0; lev_col[1] = 0; //最多二级,每级2张,最多4张
80 lev_col[2] = 0; lev_col[3] = 0; //最多二级,每级2张,最多4张
81 // lev_col[4] = 0; //最多二级,每级2张,最多4张
82 mask[0]=0;
83 mask[1]=0;
84 mask[2]=0;
85 mask[3]=0; //最多2级
86 mask[4]=0;
87 mask[5]=0;
88 pushData[0]=0;pushData[1]=0;pushData[2]=0;pushData[3]=0; //缓冲数据
89 pushData[4]=0;pushData[5]=0;pushData[6]=0;pushData[7]=0; //缓冲数据
90 // pushData[8]=0;pushData[9]=0;
91 }
92
93
94 void push(uchar inData)
95 {
96 if(nb_col%2) { pushData[nb_col/2] |= (inData<<4);}
97 else { pushData[nb_col/2] = inData;}
98 nb_col ++;
99 }
100
101 uchar pop(void)
102 {
103 uchar i;
104 nb_col --;
105 if(nb_col%2) { i = pushData[nb_col/2] >> 4; }
106 else { i = pushData[nb_col/2] & 0x0f; }
107 return(i);
108 }
109
110 void poll_loop(void)
111 {
112 uchar i=0,k=0,n=0,m=0,l=0;
113 uint crc_val=0;
114
115 uchar bitcnt=0,Bytecnt=0,bitval=0,temp=0;
116 bit TAGRDY=0,TAGDONE=0,ASICRDY=0,b_col=0;
117
C51 COMPILER V7.09 CMDR6C 09/11/2007 09:30:23 PAGE 3
118 if(nb_col!=0)
119 {
120 i = pop();
121 temp = mask_len/4;
122 if(temp%2) { mask[temp/2] |= (i<<4); }
123 else { mask[temp/2] = i; }
124 mask_len+= 4;
125 }
126
127 pcdata[4] = 0x05; //iso15693 request flag
128 pcdata[5] = 0x01; //iso15693 command
129
130 i = 0;temp = 0;
131 // pcdata[6] = mask_len;
132 // pcdata[7] = mask[0];
133 // temp = 1;
134 if(mask_len==0) { pcdata[6] = 0; }
135 else
136 {
137 pcdata[6] = mask_len;
138 temp = mask_len/4;
139 temp = (temp+1)/2;
140 for(i=0;i<temp;i++)
141 {
142 pcdata[7+i] = mask[i];
143 }
144 }
145
146 crc_val = crc16Calculate(pcdata+4,3+temp);
147 pcdata[7+temp] = LOBYTE(crc_val); //crc MSByte
148 pcdata[8+temp] = HIBYTE(crc_val); //crc LMSByte
149
150 pcdata[0] = 9+temp;
151 pcdata[1] = 0;
152 pcdata[2] = 0x00;
153 pcdata[3] = 0x30;
154 for(i= 4;i<9+temp;i++) { pcdata[i] = ReflectBYTE(pcdata[i]); }
155
156 // pcdata[0] = 3;
157 // pcdata[1] = 0;
158 // pcdata[2] = 0xFF; //convention to define first slot
159
160 _sendfifocmd();
161
162 for(i=0;i<16;i++)
163 {
164 pcdata[0] = 3;
165 pcdata[1] = 0;
166 pcdata[2] = 0xFF; //convention to define first slot
167 bitcnt=0;
168 Bytecnt=0;
169 bitval=0;
170 temp=0;
171 TAGRDY=0;
172 TAGDONE=0;
173 ASICRDY=0;
174 b_col=0;
175 // DOUT = 1;
176 _setTimer(2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -