📄 main.lst
字号:
ARM COMPILER V2.50a, main 04/02/06 11:55:52 PAGE 1
ARM COMPILER V2.50a, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe main.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1 #include <LPC213x.H> // Philips Peripheral Registers
2 #include <LPC213xDEF.H> //ARM菜鸟HotPower创建定义文件
3 #include "main.h"
4 /*----------------------------------------------------
5 文 件 名: LPC213XDEF.H
6 创 建 人: ARM菜鸟 HotPower@126.com
7 创 建 日 期: 2005.7.23 0:38
8 最近修改日期: 2006.1.11 2:38
9 创 建 地 点 : 西安大雁塔村队部
10 说 明 : 已经过LPC2131开发板硬件调试
11 实 验 项 目 : 串口实验
12 ------------------------------------------------------*/
13
14
15 //函数声明
16 void UART0_Init(void);
17 void UART0_SendByte(uint8 dat);
18 void DelayNS (uint32 dly);
19
20
21
22
23
24 void DelayNS (uint32 dly)
25 {
26 1 uint32 i;
27 1
28 1 for ( ; dly>0; dly--)
29 1 for (i=0; i<50000; i++);
30 1 }
31
32
33 /*
34 *********************************************************************************************************
35 ** 函数名称 :UART0_Init()
36 ** 函数功能 :串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率115200。
37 ** 入口参数 :无
38 ** 出口参数 :无
39 *********************************************************************************************************
40 */
41 void UART0_Init(void)
42 {
43 1 uint16 Fdiv;
44 1 PINSEL0 |= (P0_0_TXD0 << P0_0_PINSEL) | (P0_1_RXD0 << P0_1_PINSEL); //设置I/O连接到UART0
45 1 U0LCR = 0x83; // DLAB=1,允许设置波特率
46 1 Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率
47 1 // U0DLM = Fdiv / 256;
48 1 // U0DLL = Fdiv % 256;
49 1 U0DLM = 0;
50 1 U0DLL = 94;//95;//96;//98;//97;
51 1 U0LCR = 0x03;
52 1 }
53
54 /*
55 *********************************************************************************************************
56 ** 函数名称 :UART0_SendByte()
57 ** 函数功能 :向串口发送字节数据,并等待发送完毕,查询方式。
58 ** 入口参数 :dat 要发送的数据
59 ** 出口参数 :无
ARM COMPILER V2.50a, main 04/02/06 11:55:52 PAGE 2
60 *********************************************************************************************************
61 */
62 void UART0_SendByte (uint8 dat)
63 {
64 1 U0THR = dat;
65 1 while ((U0LSR & 0x40) == 0); // 等待数据发送完毕
66 1 }
67
68
69 void KeyInit(void)
70 {
71 1 IO0DIR &=~((1 << KEY1) // 设置KEY1为输入
72 1 | (1 << KEY2) // 设置KEY2为输入
73 1 | (1 << KEY3) // 设置KEY3为输入
74 1 | (1 << KEY4) // 设置KEY4为输入
75 1 | (1 << KEY5) // 设置KEY5为输入
76 1 | (1 << KEY6)); // 设置KEY6为输入
77 1 }
78
79
80 /*
81 *********************************************************************************************************
82 ** 函数名称 :main()
83 ** 函数功能 :用P0.7控制BEEP,让BEEP鸣叫。
84 ** 调试说明 :需将跳线JP5和LED短接。
85 *********************************************************************************************************
86 */
87 int main (void)
88 {
89 1 unsigned int i;
90 1 PINSEL0 = 0x00000000; // 设置管脚连接GPIO
91 1 PINSEL1 = 0x00000000; // 设置管脚连接GPIO
92 1 IO0DIR = 0x00000000; // 设置P0口为输入
93 1 IO1DIR = 0x00000000; // 设置P1口为输入
94 1 UART0_Init();
95 1 KeyInit();
96 1 while (1)
97 1 {
98 2 if (!(IO0PIN & (1 << KEY1))) {//有KEY1键压下(P0.16=0 低电平)
99 3 for(i = 0; i < 256; i ++) {
100 4 UART0_SendByte(0x55);//发送256个0x55
101 4 DelayNS(1);
102 4 }
103 3 }
104 2 else if (!(IO0PIN & (1 << KEY2))) {//有KEY2键压下(P0.17=0 低电平)
105 3 for(i = 0; i < 256; i ++) {
106 4 UART0_SendByte(0xaa);//发送256个0xaa
107 4 DelayNS(1);
108 4 }
109 3 }
110 2 else if (!(IO0PIN & (1 << KEY3))) {//有KEY3键压下(P0.18=0 低电平)
111 3 for(i = 0; i < 256; i ++) {
112 4 UART0_SendByte(0x00);//发送256个0x00
113 4 DelayNS(1);
114 4 }
115 3 }
116 2 else if (!(IO0PIN & (1 << KEY4))) {//有KEY4键压下(P0.19=0 低电平)
117 3 for(i = 0; i < 256; i ++) {
118 4 UART0_SendByte(0x11);//发送256个0x11
119 4 DelayNS(1);
120 4 }
121 3 }
122 2 else if (!(IO0PIN & (1 << KEY5))) {//有KEY5键压下(P0.20=0 低电平)
123 3 for(i = 0; i < 256; i ++) {
124 4 UART0_SendByte(0x13);//发送256个0x13
125 4 DelayNS(1);
ARM COMPILER V2.50a, main 04/02/06 11:55:52 PAGE 3
126 4 }
127 3 }
128 2 else if (!(IO0PIN & (1 << KEY6))) {//有KEY6键压下(P0.21=0 低电平)
129 3 for(i = 0; i < 256; i ++) {
130 4 UART0_SendByte(i);//发送256个数据0x00~0xff
131 4 DelayNS(1);
132 4 }
133 3 }
134 2 }
135 1 return 0;
136 1 }
ARM COMPILER V2.50a, main 04/02/06 11:55:52 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC UART0_Init?T
PUBLIC UART0_SendByte?T
PUBLIC DelayNS?T
PUBLIC KeyInit?T
PUBLIC main
*** CODE SEGMENT '?PR?DelayNS?T?main':
24: void DelayNS (uint32 dly)
00000000 ---- Variable 'dly' assigned to Register 'R0' ----
25: {
00000000 ; SCOPE-START
28: for ( ; dly>0; dly--)
00000000 E006 B L_3 ; T=0x00000010
29: for (i=0; i<50000; i++);
00000002 L_10:
00000002 2100 MOV R1,#0x0
00000004 ---- Variable 'i' assigned to Register 'R1' ----
00000004 L_6:
00000004 3101 ADD R1,#0x1
00000006 1C0A MOV R2,R1 ; i
00000008 4800 LDR R3,=0xC350
0000000A 429A CMP R2,R3 ; i
0000000C D3FA BCC L_6 ; T=0x00000004
0000000E 3801 SUB R0,#0x1
00000010 L_3:
00000010 1C01 MOV R1,R0 ; dly
00000012 2900 CMP R1,#0x0 ; dly
00000014 D8F5 BHI L_10 ; T=0x00000002
00000016 ; SCOPE-END
30: }
00000016 4770 BX R14
00000018 ENDP ; 'DelayNS?T'
*** CODE SEGMENT '?PR?UART0_Init?T?main':
42: {
00000000 ; SCOPE-START
44: PINSEL0 |= (P0_0_TXD0 << P0_0_PINSEL) | (P0_1_RXD0 << P0_1_PINSEL); //设置I/O连接到UART0
00000000 2205 MOV R2,#0x5
00000002 4800 LDR R0,=0xE002C000
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
45: U0LCR = 0x83; // DLAB=1,允许设置波特率
0000000A 2183 MOV R1,#0x83
0000000C 4800 LDR R0,=0xE000C00C
0000000E 7001 STRB R1,[R0,#0x0]
49: U0DLM = 0;
00000010 2100 MOV R1,#0x0
00000012 4800 LDR R0,=0xE000C004
00000014 7001 STRB R1,[R0,#0x0]
50: U0DLL = 94;//95;//96;//98;//97;
00000016 215E MOV R1,#0x5E
00000018 4800 LDR R0,=0xE000C000
0000001A 7001 STRB R1,[R0,#0x0]
51: U0LCR = 0x03;
0000001C 2103 MOV R1,#0x3
0000001E 4800 LDR R0,=0xE000C00C
00000020 7001 STRB R1,[R0,#0x0]
00000022 ; SCOPE-END
52: }
ARM COMPILER V2.50a, main 04/02/06 11:55:52 PAGE 5
00000022 4770 BX R14
00000024 ENDP ; 'UART0_Init?T'
*** CODE SEGMENT '?PR?UART0_SendByte?T?main':
62: void UART0_SendByte (uint8 dat)
00000000 1C02 MOV R2,R0 ; dat
00000002 ---- Variable 'dat' assigned to Register 'R2' ----
64: U0THR = dat;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -