复制代码- GPBCON EQU 0X56000010
- GPBDAT EQU 0X56000014
- GPBUP EQU 0X56000018
- GPGCON EQU 0X56000060
- GPGDAT EQU 0X56000064
- GPGUP EQU 0X56000068
- LED1 EQU ~(1<<5) ;led1亮
- LED2 EQU ~(1<<6) ;led2亮
- LED3 EQU ~(1<<7) ;led3亮
- LED4 EQU ~(1<<8) ;led4亮
- LED5 EQU ~((1<<8) | (1<<5)) ;led5亮
- LED6 EQU ~((1<<8) | (1<<6)) ;led6亮
- K1MSK EQU (1<<0) ;判断按键1按下的掩码
- K2MSK EQU (1<<3) ;判断按键2按下的掩码
- K3MSK EQU (1<<5) ;判断按键3按下的掩码
- K4MSK EQU (1<<6) ;判断按键4按下的掩码
- K5MSK EQU (1<<7) ;判断按键5按下的掩码
- K6MSK EQU (1<<11) ;判断按键6按下的掩码
- AREA LED,CODE,READONLY
- ENTRY
- CODE32
- START
- LDR R0,=GPBCON ;led控制初始化
- LDR R1,=0X15400
- STR R1,[R0] ;led数据初始化
- LDR R0,=GPBDAT
- LDR R1,=0X3FF
- STR R1,[R0]
-
- LDR R0,=GPGCON ;按键控制初始化
- LDR R1,=0XFF3F033C
- STR R1,[R0]
- LDR R0,=GPGDAT ;按键数据初始化
- LDR R1,=0X8E9
- STR R1,[R0]
-
- LOOP
- LDR R1,=GPGDAT ;查询按键1是否按下
- LDR R0,[R1]
- AND R0,R0,#K1MSK ;GPGDAT的数据和K1的掩码相与,若为0表示按键1按下
- CMP R0,#0
- BEQ L1ON
-
- LDR R1,=GPGDAT ;查询按键2是否按下
- LDR R0,[R1]
- AND R0,R0,#K2MSK ;
- CMP R0,#0
- BEQ L2ON
-
- LDR R1,=GPGDAT ;查询按键3是否按下
- LDR R0,[R1]
- AND R0,R0,#K3MSK
- CMP R0,#0
- BEQ L3ON
-
- LDR R1,=GPGDAT ;查询按键4是否按下
- LDR R0,[R1]
- AND R0,R0,#K4MSK
- CMP R0,#0
- BEQ L4ON
-
- LDR R1,=GPGDAT ;查询按键5是否按下
- LDR R0,[R1]
- AND R0,R0,#K5MSK
- CMP R0,#0
- BEQ L5ON
-
- LDR R1,=GPGDAT ;查询按键6是否按下
- LDR R0,[R1]
- AND R0,R0,#K6MSK
- CMP R0,#0
- BEQ L6ON
-
- B LOOP
-
- DELAY
- LDR R3,=0X400000 ;
- TAG
- SUB R3,R3,#1
- CMP R3,#0
- BNE TAG
- MOV PC,LR
-
- L1ON ;LED1亮(下同)
- LDR R0,=GPBDAT
- LDR R1,=LED1
- STR R1,[R0]
- B LOOP
- L2ON
- LDR R0,=GPBDAT
- LDR R1,=LED2
- STR R1,[R0]
- B LOOP
- L3ON
- LDR R0,=GPBDAT
- LDR R1,=LED3
- STR R1,[R0]
- B LOOP
- L4ON
- LDR R0,=GPBDAT
- LDR R1,=LED4
- STR R1,[R0]
- B LOOP
- L5ON
- LDR R0,=GPBDAT
- LDR R1,=LED5
- STR R1,[R0]
- B LOOP
- L6ON
- LDR R0,=GPBDAT
- LDR R1,=LED6
- STR R1,[R0]
- B LOOP
-
- END
|