📄 yt_key.lst
字号:
###############################################################################
# #
# 06/Dec/2008 17:12:54 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = E:\ELE\yten\pro\app\yt_key.c #
# Command line = E:\ELE\yten\pro\app\yt_key.c -D EMB_FLASH -lCN #
# E:\ELE\yten\pro\Debug\List\ -lb #
# E:\ELE\yten\pro\Debug\List\ -o #
# E:\ELE\yten\pro\Debug\Obj\ --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian little --cpu Cortex-M3 #
# -e --fpu None --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\DLib_Config_Normal.h" -I #
# E:\ELE\yten\pro\ -I E:\ELE\yten\pro\..\LIBRARY\INC\ -I #
# "C:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\" --section .text=.XML -On #
# List file = E:\ELE\yten\pro\Debug\List\yt_key.lst #
# Object file = E:\ELE\yten\pro\Debug\Obj\yt_key.o #
# #
# #
###############################################################################
E:\ELE\yten\pro\app\yt_key.c
1 #include"includes.h"
2 #include"ytep.h"
3 #include"ytepfunction.h"
4 #define yt_Key_file
5 #define C_keyID1 4
6 #define C_keyID2 2
7 #define C_keyID3 1
8 #define C_keyID4 8
9 #define C_keyID5 0x10
10 #define C_keyID6 0x11
\ In section .rodata, align 4
11 const Int16U Year_TAB[]={0,0x31,0x28,0x31,0x30,0x31,0x30,0x31,0x31,0x30,0x31,0x30,0x31};
\ Year_TAB:
\ 00000000 000031002800 DC16 0, 49, 40, 49, 48, 49, 48, 49, 49, 48, 49, 48, 49
\ 310030003100
\ 300031003100
\ 300031003000
\ 3100
\ 0000001A 0000 DC8 0, 0
\ In section .rodata, align 4
12 const Int16U BAUD_TAB1[]={19500-50,9600,4800-50};
\ BAUD_TAB1:
\ 00000000 FA4B80258E12 DC16 19450, 9600, 4750
\ 00000006 0000 DC8 0, 0
13 //--------------------------------------
14 //keyword scan
15 //--------------------------------------
\ In section .XML, align 4, keep-with-next
16 void Set_UART()
17 {
\ Set_UART:
\ 00000000 00B5 PUSH {LR}
\ 00000002 87B0 SUB SP,SP,#+28
18
19 USART_InitTypeDef UART_InitStructure;
20 UART_InitStructure.USART_BaudRate = BAUD_TAB1[_YT._Rate&7];//[_YT._Rate];
\ 00000004 1548 LDR.N R0,??Set_UART_0 ;; _YT + 2
\ 00000006 0088 LDRH R0,[R0, #+0]
\ 00000008 4007 LSLS R0,R0,#+29 ;; ZeroExtS R0,R0,#+29,#+29
\ 0000000A 400F LSRS R0,R0,#+29
\ 0000000C 0221 MOVS R1,#+2
\ 0000000E 4843 MULS R0,R1,R0
\ 00000010 1349 LDR.N R1,??Set_UART_0+0x4 ;; BAUD_TAB1
\ 00000012 085A LDRH R0,[R1, R0]
\ 00000014 0090 STR R0,[SP, #+0]
21 UART_InitStructure.USART_WordLength = USART_WordLength_8b;
\ 00000016 0020 MOVS R0,#+0
\ 00000018 ADF80400 STRH R0,[SP, #+4]
22 UART_InitStructure.USART_StopBits = USART_StopBits_1;
\ 0000001C 0020 MOVS R0,#+0
\ 0000001E ADF80600 STRH R0,[SP, #+6]
23 UART_InitStructure.USART_Parity = USART_Parity_No ;
\ 00000022 0020 MOVS R0,#+0
\ 00000024 ADF80800 STRH R0,[SP, #+8]
24 UART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
\ 00000028 0020 MOVS R0,#+0
\ 0000002A ADF80A00 STRH R0,[SP, #+10]
25 UART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
\ 0000002E 0C20 MOVS R0,#+12
\ 00000030 ADF80C00 STRH R0,[SP, #+12]
26 UART_InitStructure.USART_Clock = USART_Clock_Disable;
\ 00000034 0020 MOVS R0,#+0
\ 00000036 ADF80E00 STRH R0,[SP, #+14]
27 UART_InitStructure.USART_CPOL = USART_CPOL_Low;
\ 0000003A 0020 MOVS R0,#+0
\ 0000003C ADF81000 STRH R0,[SP, #+16]
28 UART_InitStructure.USART_CPHA = USART_CPHA_1Edge;
\ 00000040 0020 MOVS R0,#+0
\ 00000042 ADF81200 STRH R0,[SP, #+18]
29 UART_InitStructure.USART_LastBit = USART_LastBit_Disable;
\ 00000046 0020 MOVS R0,#+0
\ 00000048 ADF81400 STRH R0,[SP, #+20]
30
31 UART_InitStructure.USART_Parity = USART_Parity_No;
\ 0000004C 0020 MOVS R0,#+0
\ 0000004E ADF80800 STRH R0,[SP, #+8]
32 USART_DeInit(USART1);
\ 00000052 0448 LDR.N R0,??Set_UART_0+0x8 ;; 0x40013800
\ 00000054 ........ BL USART_DeInit
33 }
\ 00000058 07B0 ADD SP,SP,#+28
\ 0000005A 00BD POP {PC} ;; return
\ ??Set_UART_0:
\ 0000005C ........ DC32 _YT + 2
\ 00000060 ........ DC32 BAUD_TAB1
\ 00000064 00380140 DC32 0x40013800
\ In section .XML, align 4, keep-with-next
34 Int8U scankey(KEY *KEYA)
35 {
\ scankey:
\ 00000000 70B5 PUSH {R4-R6,LR}
\ 00000002 0400 MOVS R4,R0
36 Int8U i,k;
37 k=0;
\ 00000004 0020 MOVS R0,#+0
\ 00000006 0600 MOVS R6,R0
38 i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4);
\ 00000008 1021 MOVS R1,#+16
\ 0000000A 3148 LDR.N R0,??scankey_0 ;; 0x40010800
\ 0000000C ........ BL GPIO_ReadInputDataBit
\ 00000010 0500 MOVS R5,R0
39 if(i!=0)k|=1;
\ 00000012 EDB2 UXTB R5,R5 ;; ZeroExtS R5,R5,#+24,#+24
\ 00000014 002D CMP R5,#+0
\ 00000016 01D0 BEQ.N ??scankey_1
\ 00000018 56F00106 ORRS R6,R6,#0x1
40 i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);
\ ??scankey_1:
\ 0000001C 2021 MOVS R1,#+32
\ 0000001E 2C48 LDR.N R0,??scankey_0 ;; 0x40010800
\ 00000020 ........ BL GPIO_ReadInputDataBit
\ 00000024 0500 MOVS R5,R0
41 if(i!=0)k|=2;
\ 00000026 EDB2 UXTB R5,R5 ;; ZeroExtS R5,R5,#+24,#+24
\ 00000028 002D CMP R5,#+0
\ 0000002A 01D0 BEQ.N ??scankey_2
\ 0000002C 56F00206 ORRS R6,R6,#0x2
42 i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);
\ ??scankey_2:
\ 00000030 4021 MOVS R1,#+64
\ 00000032 2748 LDR.N R0,??scankey_0 ;; 0x40010800
\ 00000034 ........ BL GPIO_ReadInputDataBit
\ 00000038 0500 MOVS R5,R0
43 if(i!=0)k|=4;
\ 0000003A EDB2 UXTB R5,R5 ;; ZeroExtS R5,R5,#+24,#+24
\ 0000003C 002D CMP R5,#+0
\ 0000003E 01D0 BEQ.N ??scankey_3
\ 00000040 56F00406 ORRS R6,R6,#0x4
44 i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);
\ ??scankey_3:
\ 00000044 8021 MOVS R1,#+128
\ 00000046 2248 LDR.N R0,??scankey_0 ;; 0x40010800
\ 00000048 ........ BL GPIO_ReadInputDataBit
\ 0000004C 0500 MOVS R5,R0
45 if(i!=0)k|=8;
\ 0000004E EDB2 UXTB R5,R5 ;; ZeroExtS R5,R5,#+24,#+24
\ 00000050 002D CMP R5,#+0
\ 00000052 01D0 BEQ.N ??scankey_4
\ 00000054 56F00806 ORRS R6,R6,#0x8
46 i=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4);
\ ??scankey_4:
\ 00000058 1021 MOVS R1,#+16
\ 0000005A 1E48 LDR.N R0,??scankey_0+0x4 ;; 0x40011000
\ 0000005C ........ BL GPIO_ReadInputDataBit
\ 00000060 0500 MOVS R5,R0
47 if(i!=0)k|=0x10;
\ 00000062 EDB2 UXTB R5,R5 ;; ZeroExtS R5,R5,#+24,#+24
\ 00000064 002D CMP R5,#+0
\ 00000066 01D0 BEQ.N ??scankey_5
\ 00000068 56F01006 ORRS R6,R6,#0x10
48
49 if(k==0x1F)
\ ??scankey_5:
\ 0000006C F6B2 UXTB R6,R6 ;; ZeroExtS R6,R6,#+24,#+24
\ 0000006E 1F2E CMP R6,#+31
\ 00000070 05D1 BNE.N ??scankey_6
50 {
51 KEYA->counter=0;
\ 00000072 0020 MOVS R0,#+0
\ 00000074 2080 STRH R0,[R4, #+0]
52 KEYA->execute=0;
\ 00000076 0020 MOVS R0,#+0
\ 00000078 E070 STRB R0,[R4, #+3]
53 return 0;
\ 0000007A 0020 MOVS R0,#+0
\ 0000007C 27E0 B.N ??scankey_7
54 }
55 if(k!=0x1F)
\ ??scankey_6:
\ 0000007E F6B2 UXTB R6,R6 ;; ZeroExtS R6,R6,#+24,#+24
\ 00000080 1F2E CMP R6,#+31
\ 00000082 23D0 BEQ.N ??scankey_8
56 {
57 if(((++KEYA->counter)>=10)&&(KEYA->execute==0))
\ 00000084 2088 LDRH R0,[R4, #+0]
\ 00000086 401C ADDS R0,R0,#+1
\ 00000088 2080 STRH R0,[R4, #+0]
\ 0000008A 80B2 UXTH R0,R0 ;; ZeroExtS R0,R0,#+16,#+16
\ 0000008C 0A28 CMP R0,#+10
\ 0000008E 08D3 BCC.N ??scankey_9
\ 00000090 E078 LDRB R0,[R4, #+3]
\ 00000092 0028 CMP R0,#+0
\ 00000094 05D1 BNE.N ??scankey_9
58 {
59 KEYA->execute=1;
\ 00000096 0120 MOVS R0,#+1
\ 00000098 E070 STRB R0,[R4, #+3]
60 KEYA->ID=k^0x1F;
\ 0000009A 96F01F00 EORS R0,R6,#0x1F
\ 0000009E A070 STRB R0,[R4, #+2]
\ 000000A0 14E0 B.N ??scankey_8
61 }else
62 if((KEYA->counter>=10)&&(KEYA->execute!=0)&&(k==0xe))
\ ??scankey_9:
\ 000000A2 2088 LDRH R0,[R4, #+0]
\ 000000A4 0A28 CMP R0,#+10
\ 000000A6 11D3 BCC.N ??scankey_8
\ 000000A8 E078 LDRB R0,[R4, #+3]
\ 000000AA 0028 CMP R0,#+0
\ 000000AC 0ED0 BEQ.N ??scankey_8
\ 000000AE F6B2 UXTB R6,R6 ;; ZeroExtS R6,R6,#+24,#+24
\ 000000B0 0E2E CMP R6,#+14
\ 000000B2 0BD1 BNE.N ??scankey_8
63 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -