📄 main.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 942] for uVision
; commandline ArmCC [--debug -c --asm --interleave -omain.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips main.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
IRQ_UART0 PROC
;;;19 void __irq IRQ_UART0(void)
;;;20 {
000000 e92d500f PUSH {r0-r3,r12,lr}
000004 e59f02dc LDR r0,|L1.744|
000008 e5d00008 LDRB r0,[r0,#8]
00000c e200000f AND r0,r0,#0xf
000010 e3500004 CMP r0,#4
000014 1a000002 BNE |L1.36|
000018 e3a00001 MOV r0,#1
00001c e59f12c8 LDR r1,|L1.748|
000020 e5c10000 STRB r0,[r1,#0] ; rcv_new
|L1.36|
000024 e59f02bc LDR r0,|L1.744|
000028 e5d00000 LDRB r0,[r0,#0]
00002c e59f12bc LDR r1,|L1.752|
000030 e5c10000 STRB r0,[r1,#0] ; UART0_Receive
000034 e5d10000 LDRB r0,[r1,#0] ; UART0_Receive
000038 ebfffffe BL UART0_SendByte
00003c e59f12ac LDR r1,|L1.752|
000040 e5d10000 LDRB r0,[r1,#0] ; UART0_Receive
000044 ebfffffe BL SendoutputData
000048 e3a00000 MOV r0,#0
00004c e5000fd0 STR r0,[r0,#-0xfd0]
000050 e8bd500f POP {r0-r3,r12,lr}
000054 e25ef004 SUBS pc,lr,#4
;;;21 if( 0x04==(U0IIR&0x0F) )rcv_new = 1;// 设置接收到新的数据标志,必须读取U0IIR来清除中断
;;;22
;;;23 UART0_Receive[0] = U0RBR; // 读取FIFO的数据
;;;24
;;;25 UART0_SendByte(UART0_Receive[0]);
;;;26
;;;27 SendoutputData(UART0_Receive[0]);
;;;28
;;;29 VICVectAddr = 0x00; // 中断处理结束
;;;30 }
ENDP
I2C_Init PROC
;;;37 void I2C_Init(uint32 fi2c)
;;;38 { if(fi2c>400000) fi2c = 400000;
000058 e92d4010 PUSH {r4,lr}
00005c e1a04000 MOV r4,r0
000060 e59f028c LDR r0,|L1.756|
000064 e1540000 CMP r4,r0
000068 9a000000 BLS |L1.112|
00006c e1a04000 MOV r4,r0
|L1.112|
000070 e59f0280 LDR r0,|L1.760|
000074 e5900000 LDR r0,[r0,#0]
000078 e3c000f0 BIC r0,r0,#0xf0
00007c e3800050 ORR r0,r0,#0x50
000080 e59f1270 LDR r1,|L1.760|
000084 e5810000 STR r0,[r1,#0]
000088 e1a01004 MOV r1,r4
00008c e59f0268 LDR r0,|L1.764|
000090 ebfffffe BL __aeabi_uidivmod
000094 e2800001 ADD r0,r0,#1
000098 e59f1260 LDR r1,|L1.768|
00009c e00100a0 AND r0,r1,r0,LSR #1
0000a0 e59f125c LDR r1,|L1.772|
0000a4 e1c101b0 STRH r0,[r1,#0x10]
0000a8 e1a01004 MOV r1,r4
0000ac e59f0248 LDR r0,|L1.764|
0000b0 ebfffffe BL __aeabi_uidivmod
0000b4 e59f1244 LDR r1,|L1.768|
0000b8 e00100a0 AND r0,r1,r0,LSR #1
0000bc e59f1240 LDR r1,|L1.772|
0000c0 e1c101b4 STRH r0,[r1,#0x14]
0000c4 e3a0002c MOV r0,#0x2c
0000c8 e5c10018 STRB r0,[r1,#0x18]
0000cc e3a00040 MOV r0,#0x40
0000d0 e5c10000 STRB r0,[r1,#0]
0000d4 e3a00000 MOV r0,#0
0000d8 e5000ff4 STR r0,[r0,#-0xff4]
0000dc e3a00029 MOV r0,#0x29
0000e0 e3a01000 MOV r1,#0
0000e4 e5010e00 STR r0,[r1,#-0xe00]
0000e8 e3a00000 MOV r0,#0
0000ec e5100ff0 LDR r0,[r0,#-0xff0]
0000f0 e3800c02 ORR r0,r0,#0x200
0000f4 e5010ff0 STR r0,[r1,#-0xff0]
0000f8 e8bd4010 POP {r4,lr}
0000fc e12fff1e BX lr
;;;39
;;;40 PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50; // 设置I2C控制口有效
;;;41
;;;42 I2SCLH = (Fpclk/fi2c + 1) / 2; // 设置I2C时钟为fi2c
;;;43 I2SCLL = (Fpclk/fi2c) / 2;
;;;44 I2CONCLR = 0x2C;
;;;45 I2CONSET = 0x40; // 使能主I2C
;;;46
;;;47 /* 设置I2C中断允许 */
;;;48 VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
;;;49 VICVectCntl0 = 0x29; // I2C通道分配到IRQ slot 0
;;;50 //VICVectAddr0 = (int)IRQ_I2C; // 设置I2C中断向量地址
;;;51 VICIntEnable |= 0x0200; // 使能I2C中断
;;;52 }
ENDP
open PROC
;;;60 void open(void)
;;;61 {
000100 e92d4010 PUSH {r4,lr}
000104 e3a020f6 MOV r2,#0xf6
000108 e3a010a1 MOV r1,#0xa1
00010c e3a00080 MOV r0,#0x80
000110 ebfffffe BL Display
000114 e3a020e7 MOV r2,#0xe7
000118 e3a010b5 MOV r1,#0xb5
00011c e3a00081 MOV r0,#0x81
000120 ebfffffe BL Display
000124 e3a020dd MOV r2,#0xdd
000128 e3a010cc MOV r1,#0xcc
00012c e3a00082 MOV r0,#0x82
000130 ebfffffe BL Display
000134 e3a020d8 MOV r2,#0xd8
000138 e3a010bf MOV r1,#0xbf
00013c e3a00083 MOV r0,#0x83
000140 ebfffffe BL Display
000144 e3a020c6 MOV r2,#0xc6
000148 e3a010d6 MOV r1,#0xd6
00014c e3a00084 MOV r0,#0x84
000150 ebfffffe BL Display
000154 e3a020b5 MOV r2,#0xb5
000158 e3a010cf MOV r1,#0xcf
00015c e3a00085 MOV r0,#0x85
000160 ebfffffe BL Display
000164 e3a020b3 MOV r2,#0xb3
000168 e3a010cd MOV r1,#0xcd
00016c e3a00086 MOV r0,#0x86
000170 ebfffffe BL Display
000174 e3a020f6 MOV r2,#0xf6
000178 e3a010a1 MOV r1,#0xa1
00017c e3a00087 MOV r0,#0x87
000180 ebfffffe BL Display
000184 e3a020f6 MOV r2,#0xf6
000188 e3a010a1 MOV r1,#0xa1
00018c e3a00090 MOV r0,#0x90
000190 ebfffffe BL Display
000194 e3a020bc MOV r2,#0xbc
000198 e3a010b5 MOV r1,#0xb5
00019c e3a00091 MOV r0,#0x91
0001a0 ebfffffe BL Display
0001a4 e3a020a6 MOV r2,#0xa6
0001a8 e3a010ca MOV r1,#0xca
0001ac e3a00092 MOV r0,#0x92
0001b0 ebfffffe BL Display
0001b4 e3a020ba MOV r2,#0xba
0001b8 e3a010a3 MOV r1,#0xa3
0001bc e3a00093 MOV r0,#0x93
0001c0 ebfffffe BL Display
0001c4 e3a020d4 MOV r2,#0xd4
0001c8 e3a010d5 MOV r1,#0xd5
0001cc e3a00094 MOV r0,#0x94
0001d0 ebfffffe BL Display
0001d4 e3a020fa MOV r2,#0xfa
0001d8 e3a010b9 MOV r1,#0xb9
0001dc e3a00095 MOV r0,#0x95
0001e0 ebfffffe BL Display
0001e4 e3a020fc MOV r2,#0xfc
0001e8 e3a010be MOV r1,#0xbe
0001ec e3a00096 MOV r0,#0x96
0001f0 ebfffffe BL Display
0001f4 e3a020f6 MOV r2,#0xf6
0001f8 e3a010a1 MOV r1,#0xa1
0001fc e3a00097 MOV r0,#0x97
000200 ebfffffe BL Display
000204 e3a020f6 MOV r2,#0xf6
000208 e3a010a1 MOV r1,#0xa1
00020c e3a00088 MOV r0,#0x88
000210 ebfffffe BL Display
000214 e3a020e8 MOV r2,#0xe8
000218 e3a010c9 MOV r1,#0xc9
00021c e3a00089 MOV r0,#0x89
000220 ebfffffe BL Display
000224 e3a020c6 MOV r2,#0xc6
000228 e3a010bc MOV r1,#0xbc
00022c e3a0008a MOV r0,#0x8a
000230 ebfffffe BL Display
000234 e3a020ba MOV r2,#0xba
000238 e3a010a3 MOV r1,#0xa3
00023c e3a0008b MOV r0,#0x8b
000240 ebfffffe BL Display
000244 e3a020d6 MOV r2,#0xd6
000248 e3a010c1 MOV r1,#0xc1
00024c e3a0008c MOV r0,#0x8c
000250 ebfffffe BL Display
000254 e3a020ea MOV r2,#0xea
000258 e3a010ba MOV r1,#0xba
00025c e3a0008d MOV r0,#0x8d
000260 ebfffffe BL Display
000264 e3a020c9 MOV r2,#0xc9
000268 e3a010b7 MOV r1,#0xb7
00026c e3a0008e MOV r0,#0x8e
000270 ebfffffe BL Display
000274 e3a020f6 MOV r2,#0xf6
000278 e3a010a1 MOV r1,#0xa1
00027c e3a0008f MOV r0,#0x8f
000280 ebfffffe BL Display
000284 e3a02010 MOV r2,#0x10
000288 e28f1078 ADR r1,|L1.776|
00028c e3a00098 MOV r0,#0x98
000290 ebfffffe BL DispChars
000294 e8bd4010 POP {r4,lr}
000298 e12fff1e BX lr
;;;62 Display(0x80,0xA1,0xF6);//口
;;;63 Display(0x81,0xB5,0xE7);//电
;;;64 Display(0x82,0xCC,0xDD);//梯
;;;65 Display(0x83,0xBF,0xD8);//控
;;;66 Display(0x84,0xD6,0xC6);//制
;;;67 Display(0x85,0xCF,0xB5);//系
;;;68 Display(0x86,0xCD,0xB3);//统
;;;69 Display(0x87,0xA1,0xF6);//口
;;;70
;;;71 Display(0x90,0xA1,0xF6);//口
;;;72 Display(0x91,0xB5,0xBC);//导
;;;73 Display(0x92,0xCA,0xA6);//师
;;;74 Display(0x93,0xA3,0xBA);//:
;;;75 Display(0x94,0xD5,0xD4);//赵
;;;76 Display(0x95,0xB9,0xFA);//国
;;;77 Display(0x96,0xBE,0xFC);//军
;;;78 Display(0x97,0xA1,0xF6);//口
;;;79
;;;80 Display(0x88,0xA1,0xF6);//口
;;;81 Display(0x89,0xC9,0xE8);//设
;;;82 Display(0x8a,0xBC,0xC6);//计
;;;83 Display(0x8b,0xA3,0xBA);//:
;;;84 Display(0x8c,0xc1,0xd6);//林
;;;85 Display(0x8d,0xBA,0xEA);//宏
;;;86 Display(0x8e,0xB7,0xC9);//飞
;;;87 Display(0x8f,0xA1,0xF6);//口
;;;88
;;;89 DispChars(0x98,(uint8 *)"ThankYouForUsing",0x10);
;;;90 }
ENDP
main PROC
;;;96 int main(void)
;;;97 {
00029c e92d4010 PUSH {r4,lr}
0002a0 ebfffffe BL IOInit
0002a4 e3a00000 MOV r0,#0
0002a8 ebfffffe BL RcvinputData
0002ac e59f1068 LDR r1,|L1.796|
0002b0 e1c100b0 STRH r0,[r1,#0] ; IO_input
0002b4 ebfffffe BL InitLcm
0002b8 ebfffffe BL UART0_Ini
0002bc ebfffffe BL open
0002c0 e3a00055 MOV r0,#0x55
0002c4 ebfffffe BL UART0_SendByte
0002c8 e59f0050 LDR r0,|L1.800|
0002cc ebfffffe BL I2C_Init
0002d0 e59f1044 LDR r1,|L1.796|
0002d4 e1d110b0 LDRH r1,[r1,#0] ; IO_input
0002d8 e20100ff AND r0,r1,#0xff
0002dc ebfffffe BL UART0_SendByte
0002e0 e1a00000 MOV r0,r0
|L1.740|
0002e4 eafffffe B |L1.740|
|L1.744|
0002e8 e000c000 DCD 0xe000c000
|L1.748|
0002ec 00000000 DCD rcv_new
|L1.752|
0002f0 00000000 DCD UART0_Receive
|L1.756|
0002f4 00061a80 DCD 0x00061a80
|L1.760|
0002f8 e002c000 DCD 0xe002c000
|L1.764|
0002fc 00a8c000 DCD 0x00a8c000
|L1.768|
000300 0000ffff DCD 0x0000ffff
|L1.772|
000304 e001c000 DCD 0xe001c000
|L1.776|
000308 6e616854 DCB "Than"
00030c 756f596b DCB "kYou"
000310 55726f46 DCB "ForU"
000314 676e6973 DCB "sing"
000318 00000000 DCB "\0\0\0\0"
|L1.796|
00031c 00000000 DCD IO_input
|L1.800|
000320 00004e20 DCD 0x00004e20
;;;98 IOInit();
;;;99 IO_input=RcvinputData(0);//IO口输出全为0,获取输入IO值。
;;;100 InitLcm();
;;;101 UART0_Ini();
;;;102 open();//开机信息显示
;;;103 UART0_SendByte(0x55);
;;;104 I2C_Init(20000);
;;;105
;;;106 UART0_SendByte(IO_input);
;;;107 while(1)
;;;108 {;
;;;109 }
;;;110
;;;111 }
ENDP
AREA ||.data||, DATA, ALIGN=1
||.data$0||
UART0_Receive
DCB 0x00,0x00,0x00,0x00
DCDU 0x00000000
rcv_new
DCB 0x00
DCB 0x00
IO_input
DCB 0x00,0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -