搜索
您的当前位置:首页单片机键盘中断实验

单片机键盘中断实验

来源:智榕旅游


* 连线: _ _ * | PA7 —— X4 | * | PA6 —— X3 | * | PA5 —— X2 |

* GP32| PA4 —— X1 |KEYPAD * | PA3 —— Y4 | * | PA2 —— Y3 | * | PA1 —— Y2 | * | PA0 —— Y1 _| * |

* |_ PB0--7 —— OUT0--7 (LED) *

*===========Registers==================== porta equ $00 portb equ $01 ddra equ $04 ddrb equ $05 intkbstr equ $001a keyf equ 3 ackk equ 2 imaskk equ 1 modek equ 0 intkubier equ $001b ptapue equ $000d

*========================================= org $00B0

key_buf rmb 1 *

org $8000

main:

lda #%11111111 sta portb lda #$ff sta ddrb

jsr keyboard_init ;跳转 bra keyboard_int

*========================================== keyboard_init

lda #%00000000 ;out \"0\" to create interrupt sta porta

lda #%00001111 ;low bits out, high bits in sta ddra

lda #%11110000

sta ptapue ;input pin pull up to vdd sta intkubier ;interrupt enable

cli ;开中断 rts

*============键盘中断====================== keyboard_int

bset imaskk,intkbstr ;disable keyboard interrupt

lda porta ;只有高四位输入 ora #%00001111 ;或,取高四位 sta porta ;低四位输出 bclr 0,porta nop nop

lda porta

and #%11110000 cmp #$f0

beq key_next1 ;等于转移 lda porta JSR change LSL portb LSL portb LSL portb LSL portb 这里加一个延迟函数

coma ;对A取反 and #$0f add portb

因篇幅问题不能全部显示,请点此查看更多更全内容

Top