📄 m_add.asm
字号:
.include "c:\appnotes\2333def.inc"
.org $000
rjmp main
.org $00d
MAIN:;********************************************************
;
; initialize MCU system
;
ser r16
out DDRC,r16 ;portc is output mode and turn off all LEDS
ldi r17,$df
out SPL,r17
ldi r25,$00
out SREG,r25 ;Disnable globle interrupt
ldi r25,0b00001100
out MCUCR,r25; set INT! low level trigger
ldi r20,$00
out ADCSR,r20 ;Disnable ADC
ldi r17,$08
out WDTCR,r17;enable wacthdog
wdr ;reset wachdog
sbi DDRB,3 ;set MOSI(PB.5) output mode whwn SPI is master.
sbi DDRB,5 ;set SCK (PB.7) output mode when SPI is master
sbi DDRB,2 ;set SS output mode so that this byte cann't
;influence SPI master work mode .
ldi r17,0b11111100
out SPCR,r17 ;set SPIE,SPE,MSTR,CPOL,CPHA ,reset the others
; ldi r25,$80
; out GIMSK,r25 ;enable INT!
;***********************************************************
clr r27 ;r27 is used to record k1 press down number
compare: cpi r27,4
brne disp ; k1 press down 4 times display "90" and cann't increase again
rjmp escape
disp : rcall turn_off
disp_60: rcall display_6
rcall dispbyte_0
; rcall trans_wait
rcall delay
rcall turn_off
rcall display_0
rcall dispbyte_1
; rcall trans_wait
rcall delay
rcall turn_off
ldi r27,1
sbis PIND,7
rjmp escape
m_wait_k6: sbic PIND,4
rjmp disp_60
rcall delay
sbic PIND,4
rjmp m_wait_k6
disp_70: rcall display_7
rcall dispbyte_0
;rcall trans_wait
rcall delay
rcall turn_off
rcall display_0
rcall dispbyte_1
; rcall trans_wait
rcall delay
rcall turn_off
ldi r27,2
sbis PIND,7
rjmp escape
m_wait_k7: sbic PIND,4
rjmp disp_70
rcall delay
sbic PIND,4
rjmp m_wait_k7
disp_80:rcall display_8
rcall dispbyte_0
;rcall trans_wait
rcall delay
rcall turn_off
rcall display_0
rcall dispbyte_1
;rcall trans_wait
rcall delay
rcall turn_off
ldi r27,3
sbis PIND,7
rjmp escape
m_wait_k8: sbic PIND,4
rjmp disp_80
rcall delay
sbic PIND,4
rjmp m_wait_k8
disp_90: rcall display_9
rcall dispbyte_0
;rcall trans_wait
rcall delay
rcall turn_off
rcall display_0
rcall dispbyte_1
;rcall trans_wait
rcall delay
rcall turn_off
ldi r27,4
sbis PIND,7
rjmp escape
m_wait_k9: sbic PIND,4
rjmp disp_90
rcall delay
sbic PIND,4
rjmp m_wait_k9
rjmp escape
delay:ldi r21,$01
d2:ldi r22,$01
d1:ldi r23,$0ff
d0:dec r23
wdr
brne d0
dec r22
brne d1
dec r21
brne d2
ret
seg_code:.db $3f,$06,$5b,$4f,$66,$6d,$7d,$07
.db $7f,$6f,$77,$7c,$39,$5e,$79,$71
display_0:ldi r21,$3f
out SPDR , r21
ret
display_1:ldi r21,$06
out SPDR , r21
ret
display_2:ldi r21,$5b
out SPDR , r21
ret
display_3:ldi r21,$4f
out SPDR , r21
ret
display_4:ldi r21,$66
out SPDR , r21
ret
display_5:ldi r21,$6d
out SPDR , r21
ret
display_6:ldi r21,$7d
out SPDR , r21
ret
display_7:ldi r21,$07
out SPDR , r21
ret
display_8:ldi r21,$7f
out SPDR , r21
ret
display_9:ldi r21,$6f
out SPDR , r21
ret
turn_off: ser r16
out DDRC,r16
ldi r17,0b0000000
out PORTC,r17
ret
dispbyte_0:ldi r17,0b00000001
out PORTC,r17
ret
dispbyte_1:ldi r17,0b00000010
out PORTC,r17
ret
dispbyte_2:ldi r17,0b00000100
out PORTC,r17
ret
dispbyte_3:ldi r17,0b00001000
out PORTC,r17
ret
dispbyte_4:ldi r17,0b00010000
out PORTC,r17
ret
trans_wait:sbis SPSR,7
rjmp trans_wait
ret
escape: .exit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -