📄 dacheng.asm
字号:
.include"c:\mydocu~1\tmin.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 "50120"
;
display:rcall disp_50
rcall display120
k3:sbic PIND,6
rjmp k4
rcall delay
sbic PIND,6
rjmp k3
rcall delay1
rjmp disp_350
k4:sbic PIND,7
rjmp display
rcall delay
sbic PIND,7
rjmp k4
rcall delay1
cd: rcall change_disp
rcall pwm_output
rcall timer_over
rjmp cd
;
;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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
disp_80_90: rcall disp_90
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_wait_k1
rcall change_disp
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
min10_10: rcall disp_10
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp m_k2_press
rcall change_disp
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
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
rjmp cd
tad240_480:cpi r26,4
brne tad270_480
rcall tad_240
rcall delay1
sbic PIND,7 ;ask k4 press down ?
rjmp t_wait_k1
rcall change_disp
rjmp cd
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
rjmp cd
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -