匯程式設計序是學習硬體非常好的切入點,雖然程式用c來寫回比較方便,但是要想真正了解一款硬體,還是得從體系結構和彙編指令上下點功夫。
一下是乙個最基礎的arm 匯程式設計序,程式的功能是按鍵,然後在led上顯示出來是哪個鍵按了下去。
;引腳連線
;gpf0~gpf3 k1~k4
;gpf4~gpf7 led1~led4
;gpg3 k5
;gpg11 k6
;gpxcon的配置暫存器每個引腳都佔兩位,00表示表示輸入,01表示輸出
;gpxdat暫存器表示引腳的高低電平狀態,讀寫資料在這個暫存器裡進行
;程式結果:按kx,則led就根據x的二進位制表示出來
gpfcon equ 0x56000050
gpfdat equ 0x56000054
gpgcon equ 0x56000060
gpgdat equ 0x56000064
area key_led, code, readonly
;這裡表示此區域是唯讀**"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]
;迴圈測試各按鍵狀態,並修改led狀態
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狀態寫入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]
b loop
end本程式在arm920t中執行成功
ARM彙編控制led點亮或熄滅
1.檢視開發板原理圖,由原理圖知led2由gpx2 7控制。2.檢視exynos 4412 scp晶元手冊,gpx2控制器位址及含義 由手冊知,gpx2con 位址為0x1100 0c40,gpx2con 7 0x1時,gpx2 7為輸出 示例彙編 led2 初始化ldr r0,0x11000c40...
8051彙編 8個按鍵分別控制8個LED
前段時間一直用的c語言編寫8051程式,但要更深入的了解微控制器的底層原理,還是得使用彙編 以下是我寫的練習,8個按鍵分別控制8個led led是高電平點亮,接在p1口 按鍵是低電平表示觸發,接在p0口 org 0000h jmp init org 0030h init mov p1,00h 初始化...
led按鍵迴圈查詢驅動問題解決
home moudle led first drv.c 65 error implicit declaration of function class create 改為device create home moudle led first drv.c 65 warning assignment m...