📄 k3_three.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 ;r26 is used to record TIME value
clr r27 ;r27 is used to record MAGN value
clr r17 ; r17 is used to record k1 status , r1=1 ,k1 press down
clr r16 ; r16 is used to record k3 status , r3=1 k3 press down
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 da20_90 ; k1 press down 4 times display "90" and cann't increase again
rjmp m_k2_press
ldi r17,1
da20_90: rjmp display10_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
clr r17
disp10_80: rjmp display10_90
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 display10_90 ; make a adjument if k1 or k2 is pressed down
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
d11:ldi r23,$0ff
d01:dec r23
wdr
brne d01
dec r22
brne d11
dec r21
brne d21
ret
;******************************************************************************
;
; These subroutines are used to increase magnetic filed tength "20--90"
;----------------------------------------------
display10_90: cpi r27,-4
brne display20_90
rcall disp_10
rcall delay1
sbic PIND,7
rjmp c10_90
rjmp d10_90
c10_90: cpi r17,0
breq k2_10_90
rjmp m_wait_k1
k2_10_90: rjmp m_k2_press
d10_90: rcall delay
sbic PIND,7
rjmp display10_90
rcall change_disp
display20_90: cpi r27,-3
brne display30_90
rcall disp_20
rcall delay1
sbic PIND,7
rjmp c20_90
rjmp d20_90
c20_90: cpi r17,0
breq k2_20_90
rjmp m_wait_k1
k2_20_90: rjmp m_k2_press
d20_90: rcall delay
sbic PIND,7
rjmp display20_90
rcall change_disp
display30_90: cpi r27,-2
brne display40_90
rcall disp_30
rcall delay1
sbic PIND,7
rjmp c30_90
rjmp d30_90
c30_90: cpi r17,0
breq k2_30_90
rjmp m_wait_k1
k2_30_90: rjmp m_k2_press
d30_90: rcall delay
sbic PIND,7
rjmp display30_90
rcall change_disp
display40_90: cpi r27,-1
brne display50_90
rcall disp_40
rcall delay1
sbic PIND,7
rjmp c40_90
rjmp d40_90
c40_90: cpi r17,0
breq k2_40_90
rjmp m_wait_k1
k2_40_90: rjmp m_k2_press
d40_90: rcall delay
sbic PIND,7
rjmp display40_90
rcall change_disp
display50_90: cpi r27,0
brne display60_90
rcall disp_50
rcall delay1
sbic PIND,7
rjmp c50_90
rjmp d50_90
c50_90: cpi r17,0
breq k2_50_90
rjmp m_wait_k1
k2_50_90: rjmp m_k2_press
d50_90: rcall delay
sbic PIND,7
rjmp display50_90
rcall change_disp
display60_90: cpi r27,1
brne display70_90
rcall disp_60
rcall delay1
sbic PIND,7
rjmp c60_90
rjmp d60_90
c60_90: cpi r17,0
breq k2_60_90
rjmp m_wait_k1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -