?? lpclib.lst
字號:
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 1
ARM COMPILER V2.54a, COMPILATION OF MODULE lpclib
OBJECT MODULE PLACED IN lpclib.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe lpclib.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1
2
3 #include "config.h"
4 #include "lpclib.h"
5
6
7 extern void IRQ_Eint0 (void)__irq;
8 extern void IRQ_Eint1 (void)__irq;
9 extern void IRQ_Eint2 (void)__irq;
10 extern void IRQ_Eint3 (void)__irq;
11 extern void IRQ_TIME1 (void)__irq;
12 extern void IRQ_UART1 (void)__irq;
13
14 //------------------------------------------------------------------------------------
15 //計算奇偶校驗
16 //unsigned char b_lrc (unsigned char dat)
17 //------------------------------------------------------------------------------------
18 unsigned char b_lrc (unsigned char dat)
19 {
20 1 unsigned char tmp;
21 1 unsigned char tmpdat;
22 1 tmp=(dat>>4)&0x0f;
23 1 tmpdat=(dat&0x0f)^tmp; //低四位或高4位
24 1 tmp=(tmpdat>>2)&0x03; //取低二位
25 1 tmpdat=(tmpdat&0x03)^tmp;
26 1 tmp=(tmpdat>>1)&0x01;
27 1 tmpdat=(tmpdat&0x01)^tmp;
28 1 return(tmpdat);
29 1
30 1 }
31 //----------------------------------------------------------------------------------------------------
32 //延時函數參數大延時長
33 //void DelayNS (uint32 dly)
34 //----------------------------------------------------------------------------------------------------
35 void DelayNS (uint32 dly)
36 {
37 1 uint32 i;
38 1 for ( ; dly>0; dly--)
39 1 for (i=0; i<50000; i++);
40 1 }
41
42 //----------------------------------------------------------------------------------------------------
43 //初始化串口0
44 //void UART0_Init (void)
45 //----------------------------------------------------------------------------------------------------
46 void UART0_Init (uint32 baud)
47 {
48 1 uint16 Fdiv;
49 1 PINSEL0 =(PINSEL0&(~0x0f))|0x05; //設置UART0連接,其他為普通IO 口
50 1 U0LCR = 0x80; // DLAB=1,允許設置波特率
51 1 Fdiv = (Fpclk / 16) / baud; // 設置波特率
52 1 U0DLM = Fdiv / 256;
53 1 U0DLL = Fdiv % 256;
54 1 U0LCR = 0x03;
55 1 }
56
57 //----------------------------------------------------------------------------------------------------
58 //初始化串口1
59 // void UART1_Init (void)
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 2
60 //----------------------------------------------------------------------------------------------------
61 void UART1_Init (uint32 baud)
62 {
63 1 uint16 Fdiv;
64 1 PINSEL0 =(PINSEL0&(~(0x0f<<16)))|(0x05<<16); //設置UART0連接,其他為普通IO 口
65 1 U1LCR = 0x80; // DLAB=1,允許設置波特率
66 1 Fdiv = (Fpclk / 16) / baud; // 設置波特率
67 1 U1DLM = Fdiv / 256;
68 1 U1DLL = Fdiv % 256;
69 1 U1LCR = 0x03; //鎖定設設置
70 1 U1FCR = 0X01; //使能FIFO并設置觸發點為1字節
71 1 U1IER = 0X01; //使能接收中斷
72 1 }
73 //----------------------------------------------------------------------------------------------------
74 //串口0發送一字節`
75 //void UART0_SendByte (uint8 dat)
76 //----------------------------------------------------------------------------------------------------
77
78 char Uart_Getch(void)
79 {
80 1 uint8 rcv_dat;
81 1
82 1 while ((U1LSR & 0x01) == 0);
83 1 rcv_dat = U1RBR;
84 1
85 1 return (rcv_dat);
86 1 }
87 //----------------------------------------------------------------------------------------------------
88 //串口0發送一字節`
89 //void UART0_SendByte (uint8 dat)
90 //----------------------------------------------------------------------------------------------------
91 void Uart_SendByte (uint8 dat)
92 {
93 1 U1THR = dat;
94 1 while ((U1LSR & 0x20) == 0); // 等待數據發送完畢
95 1 }
96
97 //----------------------------------------------------------------------------------------------------
98 //串口0發送字符串`
99 //void Uart0_SendString(char *pt)
100 //----------------------------------------------------------------------------------------------------
101
102 void Uart_SendString(char *pt)
103 {
104 1 while(*pt)
105 1 Uart_SendByte(*pt++);
106 1 }
107
108 //----------------------------------------------------------------------------------------------------
109 //串口打印
110 //void Uart_Printf(char *fmt,...)
111 //----------------------------------------------------------------------------------------------------
112 void Uart_Printf(char *fmt,...)
113 {
114 1 va_list ap;
115 1 char string[256];
116 1
117 1 va_start(ap,fmt);
118 1 vsprintf(string,fmt,ap);
119 1 Uart_SendString(string);
120 1 va_end(ap);
121 1 }
122
123 //----------------------------------------------------------------------------------------------------
124 //串口0接接收一字符串`
125 //void Uart_GetString(char *string)
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 3
126 //----------------------------------------------------------------------------------------------------
127 void Uart_GetString(char *string)
128 {
129 1 char *string2=string;
130 1 char c;
131 1 while((c=Uart_Getch())!='\r')
132 1 {
133 2 if(c=='\b')
134 2 {
135 3 if( (int)string2 < (int)string )
136 3 {
137 4 Uart_Printf("\b \b");
138 4 string--;
139 4 }
140 3 }
141 2 else
142 2 {
143 3 *string++=c;
144 3 Uart_SendByte(c);
145 3 }
146 2 }
147 1 *string='\0';
148 1 Uart_SendByte('\n');
149 1 }
150 //-----------------------------------------------------------------------------------------------------
151 //端口初始化
152 //void Port_Init(void);
153 //------------------------------------------------------------------------------------------------------
154 void Port_Init(void)
155 {
156 1
157 1 // P00 RXD P01TXD P03 EINT1 P04 OUT P05 OUT P06 OUT P07 OUT P08 RXD P09TXD P010 IN P011 SCL P014 SD
-A P015 EINT2
158 1 //
159 1 // P0. 15 12 8 4 0
160 1 //|PINSEL0 | 10 11 00 00 | 11 00 01 01 | 00 00 00 00 | 11 00 01 01 | //控制功能=0xb0c500c5
161 1 //|IO0DIR | 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 | //低16位=0x78f0
162 1
163 1
164 1
165 1
166 1 // P016 EINT0 P018 CAP1.3 P019 CAP1.2 P020 EINT3 P021 OUT P022 OUT P028 OUT P029 IN
167 1 //
168 1 // P0. 31 28 24 20 16
169 1 //|PINSEL1 | 00 00 00 00 | 00 00 00 00 | 00 00 00 11 | 11 00 00 01 | //控制功能=0x000003c1
170 1 //|IO0DIR | 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 | //高16位=0xefe0
171 1 PINSEL1=0x000003c1; //IO狀態控制1
172 1 PINSEL0=0xb0c500c5; //IO狀態控制0
173 1 IO0DIR =0xefe078f0; //IO方向控制器
174 1 IO0SET =0x00000000; //IO置位寄存器
175 1 IO0CLR =0x00000000; //IO清除寄存器
176 1
177 1
178 1 //P117 OUT P119 OUT P121 IN P122 OUT P124OUT P125 OUT P127 OUT P129 IN P130 IN
179 1 // P. 31 24 16 8 0 //X位為0 P1.31- P1.26用作GPIO口
180 1 //|PINSEL2 | 0000 0000 | 0000 0000 | 0000 0000 | 0000 0YX0 | //X位為1 P1.31- P1.26用作JTAG調試口
181 1 // P. 31 24 16 8 0 //Y位為0 P1.25- P1.16用作GPIO口
182 1 //|PINSEL2 | 0000 0000 | 0000 0000 | 0000 0000 | 0000 0YX0 | //Y位為1 P1.25- P1.16用作跟蹤調試口
183 1 // IO1DIR 1001 1111 1101 1111 1111 1111 1111 1111 //IO1DIR=0x09fdfffff;
184 1
185 1
186 1
187 1 PINSEL2=PINSEL2&0xfffffff9;//除X,Y位外其它位不允許寫1 //用作GPIO口
188 1 IO1DIR =0x09fdfffff; //IO方向控制器
189 1 IO1SET =0x00000000; //IO置位寄存器
190 1 IO1CLR =0x00000000; //IO清除寄存器
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 4
191 1 }
192
193
194 /*
195 //----------------------------------------------------------------------------------------------------
196 //使能HD1 寫NS
197 //void Hd1_H(void)
198 //----------------------------------------------------------------------------------------------------
199 void Hd1_H(void)
200 {
201 if(FLAG_TRACK1==0)return;
202 //IO0SET 0000 0000 0000 0000 0000 0000 000x 0000
203 IO0SET=0x00000010; //寫入1
204 //IO1SET 0000 00X0 0000 0000 0000 0000 0000 0000
205 IO1CLR=0x02000000; //寫入0
206 }
207 //----------------------------------------------------------------------------------------------------
208 //使能HD1 寫SN
209 //void Hd1_L(void)
210 //----------------------------------------------------------------------------------------------------
211 void Hd1_L(void)
212 {
213 if(FLAG_TRACK1==0)return;
214 //IO0SET 0000 0000 0000 0000 0000 0000 000x 0000
215 IO0CLR=0x00000010; //寫入0
216 //IO1SET 0000 00X0 0000 0000 0000 0000 0000 0000
217 IO1SET=0x02000000;//寫入1
218 }
219 //----------------------------------------------------------------------------------------------------
220 //關閉寫磁頭
221 //void Hd1_L(void)
222 //----------------------------------------------------------------------------------------------------
223 void Hd1_off(void)
224 {
225 //IO0SET 0000 0000 0000 0000 0000 0000 000x 0000
226 IO0SET=0x00000010; //寫入1
227 //IO1SET 0000 00X0 0000 0000 0000 0000 0000 0000
228 IO1SET=0x02000000; //寫入1
229 }
230 //----------------------------------------------------------------------------------------------------
231 //使能HD2 寫NS
232 //void Hd1_H(void)
233 //----------------------------------------------------------------------------------------------------
234 void Hd2_H(void)
235 {
236 if(FLAG_TRACK2==0)return;
237 //IO0SET 0000 0000 0000 0000 0000 0000 00X0 0000
238 IO0SET=0x00000020; //寫入1
239 //IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000
240 IO0CLR=0x00000040; //寫入0
241 }
242 //------------------------------------------------------------------------------------------------------
243 //使能HD1 寫SN
244 //void Hd1_L(void)
245 //----------------------------------------------------------------------------------------------------
246 void Hd2_L(void)
247 {
248 if(FLAG_TRACK2==0)return;
249 //IO0SET 0000 0000 0000 0000 0000 0000 00X0 0000
250 IO0CLR=0x00000020; //寫入0
251 //IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000
252 IO0SET=0x00000040; //寫入1
253 }
254 //----------------------------------------------------------------------------------------------------
255 //關閉寫磁頭
256 //void Hd2_L(void)
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 5
257 //----------------------------------------------------------------------------------------------------
258 void Hd2_off(void)
259 {
260 //IO0SET 0000 0000 0000 0000 0000 0000 00X0 0000
261 IO0SET=0x00000060; //寫入1
262 //IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000
263 // IO0SET=IO0SET|0x00000040; //寫入1
264 }
265 //----------------------------------------------------------------------------------------------------
266 //使能HD3 寫NS
267 //void Hd3_H(void)
268 //----------------------------------------------------------------------------------------------------
269 void Hd3_H(void)
270 {
271 if(FLAG_TRACK3==0)return;
272 //IO0SET 0000 0000 0000 0000 0000 0000 X000 0000
273 IO0SET=0x00000080; //寫入1
274 //IO1SET 0000 000X 0000 0000 0000 0000 0000 0000
275 IO1CLR=0x01000000; //寫入0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -