📄 uart.lst
字号:
ARM COMPILER V2.54a, uart 04/09/07 10:03:17 PAGE 1
ARM COMPILER V2.54a, COMPILATION OF MODULE uart
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe uart.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1 #include<UART.H>
2 #include "config.h"
3 #include "lpclib.h"
4 /*********************************************************************
5 函数
6 void delay (unsigned char time)
7 功能:延时函数
8 **********************************************************************/
9 void delay (unsigned char time)
10 {
11 1 unsigned int j;
12 1 while(time--)
13 1 {
14 2 for(j=0;j<6000;j++);
15 2 }
16 1 }
17 /***********************************************************
18 函数:刷卡错误时执行此函数表示读卡错误
19 void card_err(void)
20 功能:如果刷卡错误执行此函数
21 ************************************************************/
22 void card_err (void)
23 {
24 1 GLED1;
25 1 RLED0;
26 1 BEEP0;
27 1 delay (50);
28 1 BEEP1;
29 1 RLED1;
30 1 delay (100);
31 1 RLED0;
32 1 BEEP0;
33 1 delay (50);
34 1 BEEP1;
35 1 RLED1;
36 1
37 1 }
38 /***********************************************************
39 函数:读卡正确函数
40 void card_ok(void)
41 功能:如果刷卡正确执行此函数
42 ************************************************************/
43 void card_ok (void)
44 {
45 1 GLED0;
46 1 BEEP0;
47 1 delay (50);
48 1 BEEP1;
49 1 GLED1;
50 1 GLED1;
51 1 }
52
53 /************************************************************************
54 函数原型:void send_byte (byte tx_buf)
55 功能:发送一个字节并计算BCC
56 *************************************************************************/
57 void send_byte(unsigned char tx_buf)
58 {
59 1 U1THR = tx_buf;
ARM COMPILER V2.54a, uart 04/09/07 10:03:17 PAGE 2
60 1 BCC^=tx_buf;
61 1 while ((U1LSR & 0x20) == 0); // 等待数据发送完毕
62 1 }
63 /***********************************************************************
64 函数原型:void send_command_err(unsigned char CM,unsigned char PM,bit P)
65 功能:非正常返回返回设置状态
66 ************************************************************************/
67 void send_command_yes(void)
68 {
69 1 ES0;
70 1 BCC=0x00;
71 1 send_byte(STX);
72 1 send_byte(0x00);
73 1 send_byte(0x03);
74 1 send_byte(CM);
75 1 send_byte(PM);
76 1 send_byte('Y');
77 1 send_byte(ETX);
78 1 send_byte(BCC);
79 1 ES1;
80 1 }
81 /***********************************************************************
82 函数原型:void send_command_err(unsigned char CM,unsigned char PM,bit P)
83 功能:非正常返回返回设置状态
84 ************************************************************************/
85 void send_command_no(void)
86 {
87 1 ES0;
88 1 BCC=0x00;
89 1 send_byte(STX);
90 1 send_byte(0x00);
91 1 send_byte(0x03);
92 1 send_byte(CM);
93 1 send_byte(PM);
94 1 send_byte('N');
95 1 send_byte(ETX);
96 1 send_byte(BCC);
97 1 ES1;
98 1 }
99
100 /***********************************************************************
101 函数原型:void send_ver(void)
102 功能: 复位成功向上位机发送版板信息
103 ************************************************************************/
104 void send_ver(void)
105 {
106 1 unsigned char i;
107 1 ES0;
108 1 BCC=0x00;
109 1 send_byte(STX);
110 1 send_byte(0x00);
111 1 send_byte(0x0e);//12byte
112 1 send_byte(0x30);
113 1 send_byte(0x30);
114 1 for(i=0;i<0x0c;i++)
115 1 {
116 2 send_byte(ver[i]);
117 2 }
118 1 send_byte(ETX);
119 1 send_byte(BCC);
120 1 ES1;
121 1 }
122
123 /************************************************************************
124 函数原型:void reset_cmd(void)
125 功能:执行RESET命令
ARM COMPILER V2.54a, uart 04/09/07 10:03:17 PAGE 3
126 *************************************************************************/
127 void reset_cmd(void)
128 {
129 1 ES0;
130 1 BPS=9600;
131 1 FLAG_TRACK1=0; //1轨无效
132 1 FLAG_TRACK2=1; //2轨有效
133 1 FLAG_TRACK3=1; //3轨有效
134 1 FLAG_INCODE='a';//解码方式为ASCLL方式
135 1 RLED1; //关红灯
136 1 GLED1; //关绿灯
137 1 BEEP1; //蜂鸣关
138 1 FLAG_RSEND=0; //禁止重传数据//
139 1 Disable(); //模式为Disable();
140 1 send_ver(); //发送版本号
141 1 ES1;
142 1 UART1_Init (BPS);
143 1 }
144 /************************************************************************
145 函数原型:void chenk_kaji (void)
146 功能:查状态命令
147 *************************************************************************/
148 void chenk_kaji (void)
149 {
150 1 ES0;
151 1 BCC=0x00;
152 1 send_byte(STX);
153 1 send_byte(0x00);
154 1 send_byte(0x05); //5byte
155 1 send_byte(CM);
156 1 send_byte(PM);
157 1 if(FLAG_INCODE=='a') //发送编译方式解码方式为ASCLL方式
158 1 {
159 2 send_byte(0x30);
160 2 }
161 1 else if(FLAG_INCODE=='b')//发送编译方式b为二进制方式
162 1 {
163 2 send_byte(0x31);
164 2 }
165 1 if((FLAG_TRACK1==0)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==0))//发送要读的轨道号要读三轨
166 1 {
167 2 send_byte(0x30);
168 2 }
169 1 else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==0))//发送要读的轨道号要读一轨
170 1 {
171 2 send_byte(0x31);
172 2 }
173 1 else if((FLAG_TRACK1==0)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==0))//发送要读的轨道号要读二轨
174 1 {
175 2 send_byte(0x32);
176 2 }
177 1 else if((FLAG_TRACK1==0)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==1))//发送要读的轨道号要读三轨
178 1 {
179 2 send_byte(0x33);
180 2 }
181 1
182 1 else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==0))//发送要读的轨道号要读一二轨
183 1 {
184 2 send_byte(0x34);
185 2 }
186 1
187 1
188 1 else if((FLAG_TRACK1==0)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==1))//发送要读的轨道号要读二三轨
189 1 {
190 2 send_byte(0x35);
191 2 }
ARM COMPILER V2.54a, uart 04/09/07 10:03:17 PAGE 4
192 1
193 1 else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==1))//发送要读的轨道号要读一三轨
194 1 {
195 2 send_byte(0x36);
196 2 }
197 1
198 1 else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==1))//发送要读的轨道号要读一二三轨
199 1 {
200 2 send_byte(0x37);
201 2 }
202 1
203 1 if(FLAG_MCARD==1) //ENABLE 指令有效
204 1 {
205 2 if(SAVPM==0X30)send_byte(0x31);//有效状态0X30
206 2 if(SAVPM==0X31)send_byte(0x32);//有效状态0X31//
207 2 }
208 1 else
209 1 {
210 2 send_byte(0x30);
211 2 }
212 1 send_byte(ETX);
213 1 send_byte(BCC);
214 1 ES1;
215 1 }
216
217 /**************************************************************************
218 函数原型void Enable(void)
219 功能:查状态命令 如果P=0;执行刷卡有效一次错误关闭等于时错误则永远开启
220 *****************************************************************************/
221 void Enable(void)
222 {
223 1
224 1 unsigned char shuaka_ok;
225 1 shuaka_ok=0;
226 1 FLAG_EXIT_R=0;
227 1 FLAG_MCARD=1;//读卡有效为1//
228 1 loop:
229 1 ES1;
230 1 read_card_star(); //开读卡所需的中断
231 1 clruartbuf(); //首先清除数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -