⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demokey.s

📁 at91arm7处理器的启动源码
💻 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 + -