?? 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 + -