📄 key3.s43
字号:
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
;----------------------------------------------------
;---------------- lcd显示子程序 ----------------
;----------------------------------------------------
lcd_display
mov.b #80h,&dip
mov.b #LCDM1,R15
dis_second
mov.b &second,R13
rra.b R13
rra.b R13
rra.b R13
rra.b R13
and.b #0fh,R13
mov.b lcd_table(R13),R14
mov.b R14,1(R15)
mov.b &second,R13
and.b #0fh,R13
mov.b lcd_table(R13),R14
mov.b R14,0(R15)
dis_min
mov.b &min,R13
rra.b R13
rra.b R13
rra.b R13
rra.b R13
and.b #0fh,R13
mov.b lcd_table(R13),R14
mov.b R14,3(R15)
mov.b &min,R13
and.b #0fh,R13
mov.b lcd_table(R13),R14
bis.b #80h,R14
mov.b R14,2(R15)
dis_hour
mov.b &hour,R13
rra.b R13
rra.b R13
rra.b R13
rra.b R13
and.b #0fh,R13
mov.b lcd_table(R13),R14
mov.b R14,5(R15)
mov.b &hour,R13
and.b #0fh,R13
mov.b lcd_table(R13),R14
bis.b #80h,R14
mov.b R14,4(R15)
ret
;--------------------------------------------------
lcd_display_ona
mov.b #0FCh,&P5SEL ;Enable R(LCD) + COM Lines
mov.b #LCDON+LCD4MUX+LCDP1,&LCDCTL ;STK LCD 4Mux, S0-S19
;Basic Timer : SSEL=0 DIV=0 Reset=1,ACLK,32768/256 = 128Hz (7.8ms debounce time)
;Basic Timer reset disabled
;enable basic timer intrpt
call #show_clr ;clear LCD
clr R9
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
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
jeq second_blink
cmp.b #2,&fun_buffer
jeq min_blink
cmp.b #1,&fun_buffer
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
call #lcd_display ;lcd display
clock_ret reti
;--------------------------------------------------
;;-------显示处理子程序
;--------------------------------------------------
lcd_display_deal
clr R5
next_word_display
mov.b #0FFH,LCDMEM(R5)
inc R5
cmp.b &counter,R5
jnz next_word_display
ret
;-------------------------------------------------------
;---------清显示存储区.
;-------------------------------------------------------
show_clr
mov.b #00h,R6 ; clear display memory
show_clr1
mov.b #00h,LCDMEM(R6)
inc.b R6
cmp.b #0ah,R6
jnz show_clr1
ret
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
db 00h ;no
;-----------------------------------------------------------
;---------------lcd显示代码--------------------------------
;-----------------------------------------------------------
lcd_table
db 7bh ;0
db 12h ;1
db 4fh ;2
db 1fh ;3
db 36h ;4
db 3dh ;5
db 7dh ;6
db 13h ;7
db 7fh ;8
db 3fh ;9
db 00h ;no
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 + -