📄 sleep2.asm
字号:
.include "c:\appnotes\2333def.inc"
.org $000
rjmp main
.org $002
rjmp INT1_RUN
.org $007
rjmp SPI_TXC
.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,$80
out SREG,r25 ;enable 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!
;
;**********************************************************
;
;LED display "50120"
;
display:ldi r21,$6d
out SPDR , r21
ldi r17,0b0000001
out PORTC,r17 ;PC.0 display "5"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
ldi r21,$3f
out SPDR,r21
ldi r17,0b0000010
out PORTC,r17 ;PC.1 dispaly "0
; wait1: sbis SPSR,7
; rjmp wait1
rcall delay
ldi r17,0b0000000
out PORTC,r17
ldi r21,$06
out SPDR , r21
ldi r17,0b0000100
out PORTC,r17 ;PC.2 display "1"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
ldi r21,$5b
out SPDR , r21
ldi r17,0b0001000
out PORTC,r17
out PORTC,r17 ;PC.3 display "2"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
ldi r21,$3f
out SPDR , r21
ldi r17,0b0010000
out PORTC,r17 ;PC.4 display "0"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
wdr
ser r16
out DDRD,r16
out PORTD,r16
rcall delay
clr r16
out DDRD,r16
in r16,PIND
andi r16,0b01000000
breq key
rjmp display
key:sbic PIND,6 ; k3 press down ?
rjmp k4_press
rcall key_k3
k4_press: sbic PIND,7 ;k4 press down ?
rjmp display
rcall pwm_output
delay: ldi r21,$01
d2:ldi r22,$01
d1:ldi r23,$01
d0:dec r23
wdr
brne d0
dec r22
brne d1
dec r21
brne d2
ret
delay1:ldi r21,$01
d21:ldi r22,$0ff
d11:ldi r23,$0ff
d01:dec r23
wdr
brne d01
dec r22
brne d11
dec r21
brne d21
ret
SPI_TXC:sbi SPCR,4
reti
INT1_RUN:reti
seg_code:.db $3f,$06,$5b,$4f,$66,$6d,$7d,$07
.db $7f,$6f,$77,$7c,$39,$5e,$79,$71
key_k1:ret
key_k2:ret
key_k3: brtc disp_50
rjmp disp_120
disp_50: ldi r21,$6d
out SPDR , r21
ldi r17,0b0000001
out PORTC,r17 ;PC.0 display "5"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
ldi r21,$3f
out SPDR,r21
ldi r17,0b0000010
out PORTC,r17 ;PC.1 dispaly "0
; wait1: sbis SPSR,7
; rjmp wait1
rcall delay
ldi r17,0b0000000
out PORTC,r17
set
ret
disp_120: ldi r21,$06
out SPDR , r21
ldi r17,0b0000100
out PORTC,r17 ;PC.2 display "1"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
ldi r21,$5b
out SPDR , r21
ldi r17,0b0001000
out PORTC,r17
out PORTC,r17 ;PC.3 display "2"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
ldi r21,$3f
out SPDR , r21
ldi r17,0b0010000
out PORTC,r17 ;PC.4 display "0"
; wait0:sbis SPSR,7
; rjmp wait0
rcall delay
ldi r17,0b0000000
out PORTC,r17
clt
ret
pwm_output: ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -