📄 keyboard3.s43.bak
字号:
;************************************************************************
fun_stop
clr.b &fun_flag
clr.b fun_buffer
jmp fun_ret
;*********************************************************************
; led显示子程序
;*********************************************************************
led_chang
br led_take(R8)
EVEN
led_take
dw second_table_h
dw second_table_l
dw min_table_h
dw min_table_l
dw hour_table_h
dw hour_table_l
second_table_h
mov.b &second,R14
mov.b #2fh,&led_disp_bit
jmp take_h
second_table_l
mov.b &second,R14
mov.b #1fh,&led_disp_bit
mov.b #00h,&dip
jmp take_l
min_table_h mov.b &min,R14
mov.b #3bh,&led_disp_bit
jmp take_h
min_table_l mov.b &min,R14
mov.b #37h,&led_disp_bit
mov.b #20h,&dip
jmp take_l
hour_table_h mov.b &hour,R14
mov.b #3eh,&led_disp_bit
jmp take_h
hour_table_l mov.b &hour,R14
mov.b #3dh,&led_disp_bit
mov.b #20h,&dip
jmp take_l
take_h mov.b R14,R13
rra.b R13
rra.b R13
rra.b R13
rra.b R13
and.b #0fh,R13
mov.b led_table(R13),&led_disp_data
ret
take_l
mov.b R14,R13
and.b #0fh,R13
mov.b led_table(R13),&led_disp_data
add.b &dip,&led_disp_data
ret
;*********************************************************************
; led显示子程序
;*********************************************************************
led_display
mov.b &led_disp_data,&P3OUT ;send data
bis.b #02h,&P4OUT ;open data choose
bic.b #02h,&P4OUT ;close data choose
mov.b &led_disp_bit,P3OUT
bis.b #01h,&P4OUT ;open bit choose
bic.b #01h,&P4OUT ;close data choose
ret
;******************************************************************-
; TimerA_int
;******************************************************************-
Timera_int
inc.b R8
inc.b R8
cmp.b #0ch,R8
jnz Timer_int_end
clr.b R8
Timer_int_end push.b &second
push.b &min
push.b &hour
call #led_blink ;if keypressed then led blink
call #led_chang ;led disp buffer chang
call #led_display ;led display
pop.b &hour
pop.b &min
pop.b &second
reti
;******************************************************************
; led_blink
;******************************************************************
led_blink cmp.b #3,&fun_buffer ;按下功能键三次,秒钟对应的LED闪烁
jeq second_blink
cmp.b #2,&fun_buffer ;按下功能键两次,分钟对应的LED闪烁
jeq min_blink
cmp.b #1,&fun_buffer ;按下功能键一次,小时对应的LED闪烁
jeq hour_blink
jmp blink_ret
second_blink
bit.b #1,&second_flag
jnz s_ret
mov.b #0aah,&second
s_ret jmp blink_ret
min_blink
bit.b #1,&second_flag
jnz m_ret
mov.b #0aah,&min
m_ret jmp blink_ret
hour_blink
bit.b #1,&second_flag
jnz blink_ret
mov.b #0aah,&hour
blink_ret ret
;******************************************************************-
; BASIC TIMER int
;******************************************************************-
BASIC_INT
xor.b #01h,&second_flag
bit.b #1,&second_flag
jz clock_ret
xor.b #01h,&flag
setc
BASIC_END
dadc.b &second
cmp.b #60h,&second
jlo clock_end
clr.b &second
dadc.b &min
cmp.b #60h,&min
jlo clock_end
dadc.b &hour
clr.b &min
cmp.b #24h,&hour
jlo clock_end
clr.b &hour
clock_end
clock_ret reti
delay mov.b #0ffh,R9
ttt nop
nop
dec.b R9
jnz ttt
ret
;***************************************************************************
; led显示代码
;***************************************************************************
led_table
db 0d7h ;0
db 14h ;1
db 0cdh ;2
db 5dh ;3
db 1Eh ;4
db 5bh ;5
db 0dbh ;6
db 15h ;7
db 0dfh ;8
db 05fh ;9
db 00h ;no,用于在熄灭LED
db 00h ;no
;***************************************************************************
; Interrupt Vector Table
;***************************************************************************
RSEG INTVEC ; MSP430 RESET Vector
;***************************************************************************
DW BASIC_INT ;0FFE0h
DW Reset ;0FFE2h
DW Reset ;0FFE4h
DW Reset ;0FFE6h
DW PORT1_INT ;0FFE8h
DW Reset ;0FFEAh
DW Timera_int ;0FFECh
DW Reset ;0FFEEh
DW Reset ;0FFF0h
DW Reset ;0FFF2h
DW Reset ;0FFF4h
DW Reset ;0FFF6h
DW Reset ;0FFF8h
DW Reset ;0FFFAh
DW Reset ;0FFFCh
DW Reset ;0FFFEh
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -