;引腳連線 ;GPF0~GPF3 K1~K4 ;GPF4~GPF7 LED1~LED4 ;GPG3 K5 ;GPG11 K6 ;GPxCON的配置寄存器每個引腳都占兩位,00表示表示輸入,01表示輸出 ;GPxDAT寄存器表示引腳的高低電平狀態(tài),讀寫數據在這個寄存器里進行 ;程序結果:按Kx,則LED就根據x的二進制表示出來
GPFCONEQU0x56000050 GPFDATEQU0x56000054 GPGCONEQU0x56000060 GPGDATEQU0x56000064
AREA KEY_LED,CODE,READONLY;這里表示此區(qū)域是只讀代碼"KEY_LED" EXPORT _ENTRY;引入程序入口,這里跟連接器有關系
;程序入口 _ENTRY
;初始化GPIO的配置 ;這里包括K1~K4輸入配置和LED1~LED4的配置 ldr r0,=GPFCON movr1,#0x5500 strr1,[r0]
;K5和K6的配置 ldr r0,=GPGCON ldr r1,=0xff3fff3f strr1,[r0]
;初始化將led都熄滅 ldr r0,=GPFDAT movr1,#0xf0 strr1,[r0]
;循環(huán)測試各按鍵狀態(tài),并修改led狀態(tài) LOOP
;測試按鍵1 GPF0 ldr r0,=GPFDAT;將GPF的數據寄存器地址放入r0 ldr r1,[r0];讀取GPF數據寄存器 tst r1,#0x01;測試GPF0是否變0(K1按下),若是按下,EQ置1,否則NE置1 andeq r1,r1,#0xef;若是EQ為1,將GPF4置0(點亮),其他不變 orrne r1,r1,#0x10;若是NE為1,將GPF4置1(熄滅),其他不變 strr1,[r0];將LED狀態(tài)寫入GPF數據寄存器
;測試按鍵2 GPF2 ldr r0,=GPFDAT ldr r1,[r0] tst r1,#0x02 andeq r1,r1,#0xdf orrne r1,r1,#0x20 strr1,[r0]
;測試按鍵3 GPF3 ldr r0,=GPFDAT ldr r1,[r0] tst r1,#0x04 andeq r1,r1,#0xcf orrne r1,r1,#0x30 strr1,[r0]
;測試按鍵4 GPF04 ldr r0,=GPFDAT ldr r1,[r0] tst r1,#0x08 andeq r1,r1,#0xbf orrne r1,r1,#0x40 strr1,[r0]
;測試按鍵5 GPG3 ldr r0,=GPGDAT ldr r1,[r0] ldr r0,=GPFDAT ldr r2,[r0] tst r1,#0x0008 andeq r2,r2,#0xaf orrne r2,r2,#0x50 strr2,[r0]
;測試按鍵5 GPG11 ldr r0,=GPGDAT ldr r1,[r0] ldr r0,=GPFDAT ldr r2,[r0] tst r1,#0x0800 andeq r2,r2,#0x9f orrne r2,r2,#0x60 strr2,[r0]
bLOOP
END |
評論