📄 demokey.s
字号:
;初始化后COL1…COL4锁成0
;PIO中断时处理键的扫描、去抖、处理
;100X XXXX,读写键盘,防止对LCD操作
;LCD的操作中
;XXXX 1111,还可以禁止键盘
AREA BOOTROM, CODE, READONLY
ARM_MODE_SYS EQU 0x1F
ARM_MODE_IRQ EQU 0x12
I_BIT EQU 0x80
Mode_USR EQU 0x10
Mode_FIQ EQU 0x11
Mode_IRQ EQU 0x12
Mode_SVC EQU 0x13
Mode_ABT EQU 0x17
Mode_UND EQU 0x1B
I_Bit EQU 0x80
F_Bit EQU 0x40
AIC_BASE EQU 0xFFFFF000
AIC_EOICR EQU 0x0130
;PIO IRQ
AIC_SMR0 EQU 0xFFFFF000
AIC_SVR0 EQU 0xFFFFF080
AIC_SMR1 EQU 0xFFFFF004
AIC_SVR1 EQU 0xFFFFF084
AIC_SMR8 EQU 0xFFFFF020
AIC_SVR8 EQU 0xFFFFF0A0
AIC_IECR EQU 0xFFFFF120
AIC_IDCR EQU 0xFFFFF124
PIO_ISR EQU 0xFFFF004C
PIO_PDSR EQU 0xFFFF003C
PIO_BASE EQU 0xFFFF0000
P0_P7MASK EQU 0xFFFFFF00
USART0 EQU 0xFFFD0000
USART1 EQU 0xFFFCC000
CS4_addr EQU 0x40000000
;LCD and keyboard
FLASHROM_addr EQU 0x01000000
;ON Chip RAM
send_bufffer EQU 0x00000E00;
receive_bufffer EQU 0x00000D00;
cur_addr_download_end EQU 0x00000F84;end address of cur sector
addr_download EQU 0x00000F88;start address of download
secsize_download EQU 0x00000F8C;sector size of download
debug_SP_Start EQU 0x00000F90;sector size of download
debug_SP_End EQU 0x00000F94;sector size of download
s_addr_display EQU 0x00000F98;start address of download
LCDparam EQU 0x00000F00;????????????????????
RAM_Limit EQU 0x02080000 ;SRAM end
IRQ_Stack EQU RAM_Limit ; 1K IRQ stack at top of memory
SVC_Stack EQU RAM_Limit-2048 ; followed by SVC stack 0x1F7FF
USR_Stack EQU SVC_Stack-2048 ; followed by USR stack 0x1EFFF
FIQ_Stack EQU USR_Stack-2048 ; followed by USR stack 0x1EFFF
;XXXX 0000
;E(1),R/~W,RS(1 data,0 commmand)
LCD_CW_E EQU 0x80
;100 X
LCD_CR_E EQU 0xC0
;110 X
LCD_DW_E EQU 0xA0
;101 X
LCD_DR_E EQU 0xE0
;111 X
;write to cs4
LCD_CW EQU 0x00
;000 X
LCD_CR EQU 0x40
;010 X
LCD_DW EQU 0x20
;001 X
LCD_DR EQU 0x60
;011 X
;write to cs4
Zero EQU 0
ReadC EQU 256
WriteI EQU 512
ENTRY
stmfd sp!, {r14}
;LDR R0,=0xFFFFFEFF;AIC_IDCR:ALL DISABLE ,EXCEPT 8 ENABLE
;LDR R1,=AIC_IDCR
;STR R0,[R1]
;LDR R0,=0x00000100;AIC_IECR: 8 ENABLE
;LDR R1,=AIC_IECR
;STR R0,[R1]
;??????????????????????????????????????????????????????????????????????????
;no keyboard
LDR R0,=0xFFFFFeFC;AIC_IDCR:ALL DISABLE ,EXCEPT 0,1 ENABLE
LDR R1,=AIC_IDCR
STR R0,[R1]
LDR R0,=0x00000103;AIC_IECR: 1,0 ENABLE
LDR R1,=AIC_IECR
STR R0,[R1]
LDR R1,=0xFFFFFFFF;SET OR CLEAR VALUE OUTPUT:ALL=0
LDR R0,=PIO_BASE
STR R1,[R0,#0x34];CLEAR OUTPUT DATA REGISTER
LDR R2,=CS4_addr
ldrb r1,=0x00
strb r1,[r2]
MOV R0,#Mode_SVC; No interrupts
MSR CPSR_c, R0
ldmfd sp!, {pc}
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -