?? main.lst
字號(hào):
ARM COMPILER V2.50a, main 12/04/06 12:37:09 PAGE 1
ARM COMPILER V2.50a, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe main.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1 /**********************************************************************************************
2 main.c file
3
4 ADuC7027的第五個(gè)實(shí)驗(yàn)——按鍵處理
5
6 作者:Computer-lov
7 建立日期:2006-4-11
8 修改日期:2006-4-12
9 版本:V1.0
10 版權(quán)所有,盜版必究。
11 任何技術(shù)問(wèn)題可到我的博客上留言: http://computer00.21ic.org
12 Copyright(C) Computer-lov 2006-2016
13 All rights reserved
14 **********************************************************************************************/
15
16
17
18
19 #include <../My_type.h>
20 #include <ADuC7027.H>
21 #include <../LED.H>
22 #include "KEYS.h"
23
24
25 /*********************************************************************************************/
26 void SysClkInit(void)
27 {
28 1 PLLKEY1=0xAA;
29 1 PLLCON=0x01; //PLL配置
30 1 PLLKEY2=0x55;
31 1 POWKEY1=0x01;
32 1 POWCON=0x00; //CPU時(shí)鐘配置為41.78MHz
33 1 POWKEY2=0xF4;
34 1 // while(!(PLLSTA & 0x01));
35 1 }
36 ///////////////////////////////////////////////////////////////////////////////////////////////
37
38 /*********************************************************************************************/
39 void DelayXms(uint32 x)
40 {
41 1 uint32 i;
42 1 while(x--)
43 1 {
44 2 i=5300;
45 2 while(i--);
46 2 }
47 1 }
48 ///////////////////////////////////////////////////////////////////////////////////////////////
49
50
51
52 /*********************************************************************************************/
53 void main(void)
54 {
55 1
56 1 SysClkInit();
57 1 KEYBoardInit();
58 1
59 1 EN_LED4();
ARM COMPILER V2.50a, main 12/04/06 12:37:09 PAGE 2
60 1 EN_LED5();
61 1 EN_LED6();
62 1 EN_LED7();
63 1
64 1 OFF_LED4();
65 1 OFF_LED5();
66 1 OFF_LED6();
67 1 OFF_LED7();
68 1
69 1
70 1
71 1 while(1)
72 1 {
73 2 DelayXms(10); //延遲10mS,即每隔10mS掃描一次鍵盤(pán)。
74 2 ScanKey(); //也可以將將鍵盤(pán)掃描程序放到10mS的定時(shí)中斷中,這樣主程序就可以安心干活了
75 2
76 2 if(Key.Value) //如果有按鍵按下
77 2 {
78 3 switch(Key.Value)
79 3 {
80 4
81 4 case KEY1: //短按鍵或者按住鍵2秒不放的自動(dòng)按鍵,則開(kāi)、關(guān)LED
82 4 if(GP3DAT & (1<<(16+LED4)))ON_LED4();
83 4 else OFF_LED4();
84 4 break;
85 4 case KEY2:
86 4 if(GP3DAT & (1<<(16+LED5)))ON_LED5();
87 4 else OFF_LED5();
88 4 break;
89 4 case KEY3:
90 4 if(GP3DAT & (1<<(16+LED6)))ON_LED6();
91 4 else OFF_LED6();
92 4 break;
93 4 case KEY4:
94 4 if(GP3DAT & (1<<(16+LED7)))ON_LED7();
95 4 else OFF_LED7();
96 4 break;
97 4
98 4 case KEY1L: ON_LED4();break; //長(zhǎng)按鍵,打開(kāi)LED
99 4 case KEY2L: ON_LED5();break;
100 4 case KEY3L: ON_LED6();break;
101 4 case KEY4L: ON_LED7();break;
102 4 }
103 3 Key.Value=0;
104 3 }
105 2 }
106 1 }
107 ///////////////////////////////////////////////////////////////////////////////////////////////
108
ARM COMPILER V2.50a, main 12/04/06 12:37:09 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN DATA (Key)
EXTERN CODE16 (ScanKey?T)
EXTERN CODE16 (KEYBoardInit?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC SysClkInit?T
PUBLIC DelayXms?T
PUBLIC main
*** CODE SEGMENT '?PR?SysClkInit?T?main':
28: PLLKEY1=0xAA;
00000000 21AA MOV R1,#0xAA
00000004 6001 STR R1,[R0,#0x0]
29: PLLCON=0x01; //PLL配置
00000006 2101 MOV R1,#0x1
00000008 4800 LDR R0,=0xFFFF0414
0000000A 6001 STR R1,[R0,#0x0]
30: PLLKEY2=0x55;
0000000C 2255 MOV R2,#0x55
0000000E 4800 LDR R0,=0xFFFF0418
00000010 6002 STR R2,[R0,#0x0]
31: POWKEY1=0x01;
00000012 4800 LDR R0,=0xFFFF0404
00000014 6001 STR R1,[R0,#0x0]
32: POWCON=0x00; //CPU時(shí)鐘配置為41.78MHz
00000016 2100 MOV R1,#0x0
00000018 4800 LDR R0,=0xFFFF0408
0000001A 6001 STR R1,[R0,#0x0]
33: POWKEY2=0xF4;
0000001C 21F4 MOV R1,#0xF4
0000001E 4800 LDR R0,=0xFFFF040C
00000020 6001 STR R1,[R0,#0x0]
35: }
00000022 4770 BX R14
00000024 ENDP ; 'SysClkInit?T'
*** CODE SEGMENT '?PR?DelayXms?T?main':
39: void DelayXms(uint32 x)
00000000 ---- Variable 'x' assigned to Register 'R0' ----
40: {
00000000 ; SCOPE-START
42: while(x--)
00000000 E004 B L_1 ; T=0x0000000C
00000002 L_3:
44: i=5300;
00000002 4800 LDR R1,=0x14B4
00000004 ---- Variable 'i' assigned to Register 'R1' ----
45: while(i--);
00000004 L_5:
00000004 1C0A MOV R2,R1 ; i
00000006 3901 SUB R1,#0x1
00000008 2A00 CMP R2,#0x0 ; i
0000000A D1FB BNE L_5 ; T=0x00000004
46: }
0000000C L_1:
0000000C 1C01 MOV R1,R0 ; x
0000000E 3801 SUB R0,#0x1
00000010 2900 CMP R1,#0x0 ; x
00000012 D1F6 BNE L_3 ; T=0x00000002
00000014 ; SCOPE-END
47: }
ARM COMPILER V2.50a, main 12/04/06 12:37:09 PAGE 4
00000014 4770 BX R14
00000016 ENDP ; 'DelayXms?T'
*** CODE SEGMENT '?PR?main?main':
53: void main(void)
00000000 B500 PUSH {LR}
56: SysClkInit();
00000002 F7FF BL SysClkInit?T ; T=0x0001 (1)
00000004 FFFD BL SysClkInit?T ; T=0x0001 (2)
57: KEYBoardInit();
00000006 F7FF BL KEYBoardInit?T ; T=0x0001 (1)
00000008 FFFB BL KEYBoardInit?T ; T=0x0001 (2)
59: EN_LED4();
0000000A 220F MOV R2,#0xF
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -