📄 7705.asm
字号:
;**************************************************************************************
.include "8515def.inc"
.org $000
rjmp RESET
.def delay0 =r1
.def adc_a0h =r2
.def adc_a0l =r3
.def adc_a1h =r4
.def adc_a1l =r5
.def adc_b0h =r6
.def adc_b0l =r7
.def adc_b1h =r8
.def adc_b1l =r9
.def a2 =r10
.def a3 =r11
.def a4 =r12
.def b2 =r13
.def b3 =r14
.def b4 =r15
.def delay1 =r17
.def cmp_status=r18
.def status =r19
.def point_a_no=r20
.def point_b_no=r21
.def cmp0 =r22
.def cmp1 =r23
.def cmp2 =r24
.def cmp3 =r25
.equ cs1 =0
.equ cs0 =1
.equ rdy0 =2
.equ rdy1 =3
.equ do =5
.equ di =6
.equ sck =7
.equ atpoint=0
.equ num =41 ;共41个刻度
.equ bias =16
RESET:
ldi r16,high(ramend)
out sph,r16
ldi r16,low(ramend)
out spl,r16
ldi r16,$ff
out ddra,r16
out ddrc,r16
sbi ddrb,cs0
sbi ddrb,cs1
cbi ddrb,rdy0
cbi ddrb,rdy1
sbi ddrb,5
cbi ddrb,6
sbi ddrb,7
ldi r16,$00
out porta,r16
ldi r16,$ff
out portc,r16
sbi portb,cs0
cbi portb,cs1
AD_INI_A:
rcall delay7ms ;晶振稳定时间
;选择A组传感器
ldi r16,$20 ;时钟寄存器
rcall putchar
ldi r16,$0c
rcall putchar ;4.9152MHz,200Hz数据更新,
ldi r16,$10 ;设置寄存器,通道0
rcall putchar
ldi r16,$4a ;自较需9个输出周期,缓冲模式,增益为2,双极性
rcall putchar
rcall delay56ms
rcall delay56ms
rcall delay56ms
rcall delay56ms
AD_INI_A_1:
ldi r16,$11 ;设置寄存器
rcall putchar
ldi r16,$4a ;自较需9个输出周期,缓冲模式,增益为2,双极性
rcall putchar
rcall delay56ms
rcall delay56ms
rcall delay56ms
rcall delay56ms
rcall delay56ms
aa1:
sbi portb,cs0
cbi portb,cs1
ldi r16,$38
rcall putchar
rcall delay56ms
rcall delay7ms
rcall delay7ms
wait:
sbic portb,rdy1
rjmp wait
rcall getchar
mov r2,r16
rcall getchar
mov r3,r16
ait:
;sbic portb,rdy1
; rjmp ait
ldi r16,$28
rcall putchar
rcall getchar
ldi r16,$39
rcall putchar
rcall delay56ms
rcall delay7ms
rcall delay7ms
wait11:
sbic portb,rdy1
rjmp wait11
rcall getchar
mov r4,r16
rcall getchar
mov r5,r16
rjmp aa1
;***************
RST:
sbi portb,cs0
cbi portb,cs1
ldi r16,$ff
rcall putchar
ldi r16,$ff
rcall putchar
ldi r16,$ff
rcall putchar
ldi r16,$ff
rcall putchar
ldi r16,$ff
rcall putchar
rcall delay56ms
ret
getchar: ; sck-- 常态1 r16 -常态0
ldi r16,0
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<7
sbi portb,sck ;MSB
nop
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<6
sbi portb,sck
nop
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<5
sbi portb,sck
nop
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<4
sbi portb,sck
nop
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<3
sbi portb,sck
nop
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<2
sbi portb,sck
nop
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<1
sbi portb,sck
nop
cbi portb,sck
nop
sbis pinb,di
sbic pinb,di
sbr r16,1<<0
sbi portb,sck
nop ;LSB
ret
putchar: ;sck-- 常态1 r16 do--常态0
cbi portb,sck
sbrs r16,7
cbi portb,do
sbrc r16,7
sbi portb,do
sbi portb,sck
nop
cbi portb,sck
sbrs r16,6
cbi portb,do
sbrc r16,6
sbi portb,do
sbi portb,sck
nop
cbi portb,sck
sbrs r16,5
cbi portb,do
sbrc r16,5
sbi portb,do
sbi portb,sck
nop
cbi portb,sck
sbrs r16,4
cbi portb,do
sbrc r16,4
sbi portb,do
sbi portb,sck
nop
cbi portb,sck
sbrs r16,3
cbi portb,do
sbrc r16,3
sbi portb,do
sbi portb,sck
nop
cbi portb,sck
sbrs r16,2
cbi portb,do
sbrc r16,2
sbi portb,do
sbi portb,sck
nop
cbi portb,sck
sbrs r16,1
cbi portb,do
sbrc r16,1
sbi portb,do
sbi portb,sck
nop
cbi portb,sck
sbrs r16,0
cbi portb,do
sbrc r16,0
sbi portb,do
sbi portb,sck
sbi portb,do
ret
delay56ms:
rcall delay7ms
rcall delay7ms
rcall delay7ms
rcall delay7ms
rcall delay7ms
rcall delay7ms
rcall delay7ms
rcall delay7ms
ret
delay5us:
ldi delay1,10
delay5us_1:
dec delay1
brne delay5us_1
ret
delay100us:
ldi delay1,255
delay100us_1:
dec delay1
brne delay100us_1
ret
delay7ms:
ldi delay1,$65
mov delay0,delay1
ldi delay1,$ff
delay7ms_1:
dec delay1
brne delay7ms_1
ldi delay1,$aa
dec delay0
brne delay7ms_1
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -