📄 k3_two.asm
字号:
.include "c:\appnotes\2333def.inc"
.org $000
rjmp main
.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,$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!
;
;**********************************************************
;
;LED display "50"
;set T=0 k3 first press down . T=1 k3 press down twice.
; clr r27 ;r27 is used to record k1 press down number
;accord to r27 value, m_min subroutine dispaly magnetic field trength
; clr r28 ;r28 is used to record k2 press down number
; tihis is useless
clr r26
clr r27
disp_350: rcall disp_50
m_wait_k1: sbic PIND,4
rjmp m_k2_press
rcall delay
sbic PIND,4
rjmp m_wait_k1
compare: nop
inc r27
cpi r27,4
brne d20_90 ; k1 press down 4 times display "90" and cann't increase again
rjmp m_k2_press
d20_90: rjmp display20_90
m_k2_press:sbic PIND,5
rjmp m_k4_press
rcall delay
sbic PIND,5
rjmp m_k2_press
min_comp: nop
dec r27
cpi r27,-4
brne disp10_80 ; k2 press down 4 times display "10" and cann't decrease again
rjmp m_k4_press
disp10_80: rjmp min10_80
m_k4_press: sbic PIND,7
rjmp k3_again
rcall delay
sbic PIND,7
rjmp m_k4_press
rcall change_disp
k3_again: sbic PIND,6
rjmp k1_k2_press
rcall delay
sbic PIND,6
rjmp k3_again
rcall delay1
rjmp disp_120
k1_k2_press:rjmp kn10_90 ; make a adjument if k1 or k2 is pressed down
display20_90:cpi r27,-3
brne disp_30_90
rcall disp_20
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
disp_30_90: cpi r27,-2
brne disp_40_90
rcall disp_30
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
disp_40_90: cpi r27,-1
brne disp_50_50
rcall disp_40
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
disp_50_50: cpi r27,0
brne disp_50_90
rcall disp_50
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
disp_50_90: cpi r27,1
brne disp_60_90
rcall disp_60
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_wait_k1
rcall change_disp
disp_60_90: cpi r27,2
brne disp_70_90
rcall disp_70
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_wait_k1
rcall change_disp
disp_70_90: cpi r27,3
brne disp_80_90
rcall disp_80
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_wait_k1
rcall change_disp
disp_80_90: rcall disp_90
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_wait_k1
rjmp m_wait_k1
rcall change_disp
rjmp m_wait_k1
min10_80: cpi r27,3
brne min10_70
rcall disp_80
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
min10_70: cpi r27,2
brne min10_60
rcall disp_70
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
min10_60: cpi r27,1
brne min10_50
rcall disp_60
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
min10_50: cpi r27,0
brne min10_40
rcall disp_50
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
min10_40: cpi r27,-1
brne min10_30
rcall disp_40
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
min10_30: cpi r27,-2
brne min10_20
rcall disp_30
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
min10_20: cpi r27,-3
brne min10_10
rcall disp_20
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
min10_10: rcall disp_10
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
disp_120: rcall display120
t_wait_k1: sbic PIND,4
rjmp t_k2_press
rcall delay
sbic PIND,4
rjmp t_wait_k1
tadd_comp: nop
inc r26
cpi r26,12
brne tad20_90 ; k1 press down 12 times display "480" and cann't increase again
rjmp t_k2_press
tad20_90: rjmp tad060_480
rjmp t_wait_k1
t_k2_press:sbic PIND,5
rjmp k4_press
rcall delay
sbic PIND,5
rjmp t_k2_press
tmin_comp: nop
dec r26
cpi r26,-3
brne t030_480 ; k2 press down -3 times display "30" and cann't decrease again
rjmp k4_press
t030_480: rjmp tmin450_480
k4_press: sbic PIND,7
rjmp k3_two
rjmp change_disp
k3_two: sbic PIND,6
rjmp k1_k2_time
rcall delay
sbic PIND,6
rjmp k3_two
rcall delay1
rjmp m_wait_k1
k1_k2_time: rjmp time30_480
tad060_480:cpi r26,-2
brne tad090_480
rcall tad_060
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad090_480:cpi r26,-1
brne tad120_480
rcall tad_120
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad120_480:cpi r26,0
brne tad150_480
rcall tad_120
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad150_480:cpi r26,1
brne tad180_480
rcall tad_150
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad180_480:cpi r26,2
brne tad210_480
rcall tad_180
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad210_480:cpi r26,3
brne tad240_480
rcall tad_210
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad240_480:cpi r26,4
brne tad270_480
rcall tad_240
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
tad270_480:cpi r26,5
brne tad300_480
rcall tad_270
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad300_480:cpi r26,6
brne tad330_480
rcall tad_300
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad330_480:cpi r26,7
brne tad360_480
rcall tad_330
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad360_480:cpi r26,8
brne tad390_480
rcall tad_360
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad390_480:cpi r26,9
brne tad420_480
rcall tad_390
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad420_480:cpi r26,10
brne tad450_480
rcall tad_420
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad450_480:cpi r26,11
brne tad480_480
rcall tad_450
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
tad480_480: rcall tad_450
rcall delay
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
time30_480: cpi r26,-3
brne time60_480
rcall tad_030
rcall delay
rjmp t_wait_k1
time60_480: cpi r26,-2
brne time90_480
rcall tad_060
rcall delay
rjmp t_wait_k1
time90_480: cpi r26,-1
brne time120_480
rcall tad_090
rcall delay
rjmp t_wait_k1
time120_480: cpi r26,0
brne time150_480
rcall tad_120
rcall delay
rjmp t_wait_k1
time150_480: cpi r26,1
brne time180_480
rcall tad_150
rcall delay
rjmp t_wait_k1
time180_480: cpi r26,2
brne time210_480
rcall tad_180
rcall delay
rjmp t_wait_k1
time210_480: cpi r26,3
brne time240_480
rcall tad_210
rcall delay
rjmp t_wait_k1
time240_480: cpi r26,4
brne time270_480
rcall tad_240
rcall delay
rjmp t_wait_k1
time270_480: cpi r26,5
brne time300_480
rcall tad_270
rcall delay
rjmp t_wait_k1
time300_480: cpi r26,6
brne time330_480
rcall tad_300
rcall delay
rjmp t_wait_k1
time330_480: cpi r26,7
brne time360_480
rcall tad_330
rcall delay
rjmp t_wait_k1
time360_480: cpi r26,8
brne time390_480
rcall tad_360
rcall delay
rjmp t_wait_k1
time390_480: cpi r26,9
brne time420_480
rcall tad_390
rcall delay
rjmp t_wait_k1
time420_480: cpi r26,10
brne time450_480
rcall tad_420
rcall delay
rjmp t_wait_k1
time450_480: cpi r26,11
brne time480_480
rcall tad_450
rcall delay
rjmp t_wait_k1
time480_480:rcall tad_480
rcall delay
rjmp t_wait_k1
tmin450_480:cpi r26,11
brne tmin420_480
rcall tad_450
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_k2_press
rcall change_disp
tmin420_480:cpi r26,10
brne tmin390_480
rcall tad_420
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_k2_press
rcall change_disp
tmin390_480:cpi r26,9
brne tmin360_480
rcall tad_390
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_k2_press
rcall change_disp
tmin360_480:cpi r26,8
brne tmin330_480
rcall tad_360
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_k2_press
rcall change_disp
tmin330_480:cpi r26,7
brne tmin300_480
rcall tad_330
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_k2_press
rcall change_disp
tmin300_480:cpi r26,6
rjmp t_k2_press
;brne tmin270_480
rcall tad_300
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rcall change_disp
SPI_TXC:sbi SPCR,4
reti
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
delay1:ldi r21,$08
d21:ldi r22,$0ff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -