📄 target.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -otarget.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips APP\target.c]
ARM
AREA ||.text.7||, CODE, READONLY, ALIGN=2
init_port PROC
;;;42 //PINSEL0=0x00000000;
;;;43 IO0DIR |=SCLK;
000000 e59f03fc LDR r0,|L1.1028|
000004 e5900008 LDR r0,[r0,#8]
000008 e3800b02 ORR r0,r0,#0x800
00000c e59f13f0 LDR r1,|L1.1028|
000010 e5810008 STR r0,[r1,#8]
;;;44 IO0DIR |=SDIN;
000014 e1a00001 MOV r0,r1
000018 e5900008 LDR r0,[r0,#8]
00001c e3800a01 ORR r0,r0,#0x1000
000020 e5810008 STR r0,[r1,#8]
;;;45 IO0DIR |=LCD_DC;
000024 e1a00001 MOV r0,r1
000028 e5900008 LDR r0,[r0,#8]
00002c e3800a02 ORR r0,r0,#0x2000
000030 e5810008 STR r0,[r1,#8]
;;;46 IO1DIR |=LCD_CE;
000034 e1a00001 MOV r0,r1
000038 e5900018 LDR r0,[r0,#0x18]
00003c e3800501 ORR r0,r0,#0x400000
000040 e5810018 STR r0,[r1,#0x18]
;;;47 IO0DIR |=LCD_RST;
000044 e1a00001 MOV r0,r1
000048 e5900008 LDR r0,[r0,#8]
00004c e3800901 ORR r0,r0,#0x4000
000050 e5810008 STR r0,[r1,#8]
;;;48 IO1DIR |=(1<<25); //设置LED控制口为输出
000054 e1a00001 MOV r0,r1
000058 e5900018 LDR r0,[r0,#0x18]
00005c e3800402 ORR r0,r0,#0x2000000
000060 e5810018 STR r0,[r1,#0x18]
;;;49 IO1DIR |=(1<<23); //设置LCD_LED控制口为输出
000064 e1a00001 MOV r0,r1
000068 e5900018 LDR r0,[r0,#0x18]
00006c e3800502 ORR r0,r0,#0x800000
000070 e5810018 STR r0,[r1,#0x18]
;;;50
;;;51 }
000074 e12fff1e BX lr
ENDP
HC165_HC595_init PROC
;;;53 void HC165_HC595_init(void)
;;;54 {
000078 e92d4010 PUSH {r4,lr}
;;;55 PINSEL1|=(2<<2);//设置 LED的SPI时钟功能 口
00007c e59f0384 LDR r0,|L1.1032|
000080 e5900004 LDR r0,[r0,#4]
000084 e3800008 ORR r0,r0,#8
000088 e59f1378 LDR r1,|L1.1032|
00008c e5810004 STR r0,[r1,#4]
;;;56 PINSEL1|=(2<<6);//设置 LED的MOSI数据 发送功能 口
000090 e1a00001 MOV r0,r1
000094 e5900004 LDR r0,[r0,#4]
000098 e3800080 ORR r0,r0,#0x80
00009c e5810004 STR r0,[r1,#4]
;;;57 PINSEL1|=(2<<4);//set 74HC165 MISO
0000a0 e1a00001 MOV r0,r1
0000a4 e5900004 LDR r0,[r0,#4]
0000a8 e3800020 ORR r0,r0,#0x20
0000ac e5810004 STR r0,[r1,#4]
;;;58 IO1DIR |=HC595_CS;//
0000b0 e2410901 SUB r0,r1,#0x4000
0000b4 e5900018 LDR r0,[r0,#0x18]
0000b8 e3800601 ORR r0,r0,#0x100000
0000bc e2411901 SUB r1,r1,#0x4000
0000c0 e5810018 STR r0,[r1,#0x18]
;;;59 IO0DIR |=HC165_SH_LD;
0000c4 e1a00001 MOV r0,r1
0000c8 e5900008 LDR r0,[r0,#8]
0000cc e3800601 ORR r0,r0,#0x100000
0000d0 e5810008 STR r0,[r1,#8]
;;;60 SSP_Init();
0000d4 ebfffffe BL SSP_Init
;;;61 }
0000d8 e8bd4010 POP {r4,lr}
0000dc e12fff1e BX lr
ENDP
IRQ_Exception PROC
;;;83 {
;;;84 while(1); // change it to your code 这一句替换为自己的代码
0000e0 e1a00000 MOV r0,r0
|L1.228|
0000e4 eafffffe B |L1.228|
;;;85 }
ENDP
FIQ_Exception PROC
;;;106 {
;;;107 while(1); // change it to your code 这一句替换为自己的代码
0000e8 e1a00000 MOV r0,r0
|L1.236|
0000ec eafffffe B |L1.236|
;;;108 }
ENDP
Timer0_Exception PROC
;;;127 void Timer0_Exception(void)
;;;128 {
0000f0 e92d4010 PUSH {r4,lr}
;;;129 T0IR = 0x01;
0000f4 e3a00001 MOV r0,#1
0000f8 e59f130c LDR r1,|L1.1036|
0000fc e5810000 STR r0,[r1,#0]
;;;130 VICVectAddr = 0; //interrupt close 通知中断控制器中断结束
000100 e3a00000 MOV r0,#0
000104 e5000fd0 STR r0,[r0,#-0xfd0]
;;;131 OSTimeTick();
000108 ebfffffe BL OSTimeTick
;;;132 }
00010c e8bd4010 POP {r4,lr}
000110 e12fff1e BX lr
ENDP
Timer0Init PROC
;;;153 {
;;;154 T0IR = 0xffffffff;
000114 e3e00000 MVN r0,#0
000118 e59f12ec LDR r1,|L1.1036|
00011c e5810000 STR r0,[r1,#0]
;;;155 T0TC = 0;
000120 e3a00000 MOV r0,#0
000124 e5810008 STR r0,[r1,#8]
;;;156 T0TCR = 0x01;
000128 e3a00001 MOV r0,#1
00012c e5810004 STR r0,[r1,#4]
;;;157 T0MCR = 0x03;
000130 e3a00003 MOV r0,#3
000134 e5810014 STR r0,[r1,#0x14]
;;;158 T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
000138 e59f02d0 LDR r0,|L1.1040|
00013c e5810018 STR r0,[r1,#0x18]
;;;159 }
000140 e12fff1e BX lr
ENDP
VICInit PROC
;;;182
;;;183 VICIntEnClr = 0xffffffff;
000144 e3e00000 MVN r0,#0
000148 e3a01000 MOV r1,#0
00014c e5010fec STR r0,[r1,#-0xfec]
;;;184 VICDefVectAddr = (uint32)IRQ_Handler;
000150 e59f02bc LDR r0,|L1.1044|
000154 e5010fcc STR r0,[r1,#-0xfcc]
;;;185
;;;186 VICVectAddr0 = (uint32)Timer0_Handler;
000158 e59f02b8 LDR r0,|L1.1048|
00015c e5010f00 STR r0,[r1,#-0xf00]
;;;187 VICVectCntl0 = (0x20 | 0x04);
000160 e3a00024 MOV r0,#0x24
000164 e5010e00 STR r0,[r1,#-0xe00]
;;;188 VICIntEnable = 1 << 4;
000168 e3a00010 MOV r0,#0x10
00016c e5010ff0 STR r0,[r1,#-0xff0]
;;;189 }
000170 e12fff1e BX lr
ENDP
TargetInit PROC
;;;210 void TargetInit(void)
;;;211 {
|L1.372|
000174 e92d4010 PUSH {r4,lr}
;;;212 OS_ENTER_CRITICAL();
000178 ef000002 SVC 0x2 ; formerly SWI
;;;213 srand((uint32) TargetInit);
00017c e24f0010 ADR r0,|L1.372|
000180 ebfffffe BL srand
;;;214 VICInit();
000184 ebfffffe BL VICInit
;;;215 Timer0Init();
000188 ebfffffe BL Timer0Init
;;;216 init_port();
00018c ebfffffe BL init_port
;;;217 HC165_HC595_init();
000190 ebfffffe BL HC165_HC595_init
;;;218 AD_INIT();
000194 ebfffffe BL AD_INIT
;;;219
;;;220 OS_EXIT_CRITICAL();
000198 ef000003 SVC 0x3 ; formerly SWI
;;;221 }
00019c e8bd4010 POP {r4,lr}
0001a0 e12fff1e BX lr
ENDP
InitialiseUART0 PROC
;;;240 void InitialiseUART0(uint32 bps)
;;;241 {
0001a4 e92d4070 PUSH {r4-r6,lr}
0001a8 e1a05000 MOV r5,r0
;;;242 uint16 Fdiv;
;;;243 IO0DIR |=1<<31;
0001ac e59f0250 LDR r0,|L1.1028|
0001b0 e5900008 LDR r0,[r0,#8]
0001b4 e3800102 ORR r0,r0,#0x80000000
0001b8 e59f1244 LDR r1,|L1.1028|
0001bc e5810008 STR r0,[r1,#8]
;;;244 IO0CLR |=1<<31;
0001c0 e1a00001 MOV r0,r1
0001c4 e590000c LDR r0,[r0,#0xc]
0001c8 e3800102 ORR r0,r0,#0x80000000
0001cc e581000c STR r0,[r1,#0xc]
;;;245 PINSEL0 |=0x05; /* Select the pins for Uart 选择管脚为UART0 */
0001d0 e2810901 ADD r0,r1,#0x4000
0001d4 e5900000 LDR r0,[r0,#0]
0001d8 e3800005 ORR r0,r0,#5
0001dc e2811901 ADD r1,r1,#0x4000
0001e0 e5810000 STR r0,[r1,#0]
;;;246
;;;247 U0LCR = 0x83; /* Enable to access the frequenc regecter 允许访问分频因子寄存器 */
0001e4 e3a00083 MOV r0,#0x83
0001e8 e1c11500 BIC r1,r1,r0,LSL #10
0001ec e5c1000c STRB r0,[r1,#0xc]
;;;248 Fdiv = (Fpclk / 16) / bps; /* Set the baudrate设置波特率 */
0001f0 e1a01005 MOV r1,r5
0001f4 e59f0220 LDR r0,|L1.1052|
0001f8 ebfffffe BL __aeabi_uidivmod
0001fc e1a04800 LSL r4,r0,#16
000200 e1a04824 LSR r4,r4,#16
;;;249 U0DLM = Fdiv / 256;
000204 e1a00004 MOV r0,r4
000208 e1a01fc4 ASR r1,r4,#31
00020c e0841c21 ADD r1,r4,r1,LSR #24
000210 e1a01801 LSL r1,r1,#16
000214 e1a01c21 LSR r1,r1,#24
000218 e59f2200 LDR r2,|L1.1056|
00021c e5c21004 STRB r1,[r2,#4]
;;;250 U0DLL = Fdiv % 256;
000220 e1a00004 MOV r0,r4
000224 e1a01fc4 ASR r1,r4,#31
000228 e0841c21 ADD r1,r4,r1,LSR #24
00022c e1a01441 ASR r1,r1,#8
000230 e0441401 SUB r1,r4,r1,LSL #8
000234 e5c21000 STRB r1,[r2,#0]
;;;251 U0LCR = 0x03; /* Disable to access the frequenc regecter 禁止访问分频因子寄存器 */
000238 e3a00003 MOV r0,#3
00023c e1c21000 BIC r1,r2,r0
000240 e5c1000c STRB r0,[r1,#0xc]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -