📄 104.asm
字号:
.include"8535def.inc"
.org $000
rjmp RESET
.org $010
rjmp ANA_COMP
RESET: ldi r16,low(ramend) ;栈指针置初值
out spl,r16
ldi r16,high(ramend)
out sph,r16
wait_edge1:
sbic acsr,aco ;等待输入信号(AIN0)<(AIN1)
rjmp wait_edge1
wel_1: sbis acsr,aco ;等待输入信号(AIN0)>(AIN1)
rjmp wel_1
;说明:AIN0穿越AIN1时,模拟比较器输出(ACO)就改变一次,程序可检测此标志。
wait_edge2:
sbi acsr,acis0 ;选择模拟比较器中断模式为上升沿
sbi acsr,acis1
sbi ACSR,ACI ;清模拟比较器中断标志ACI
we2_1: sbis ACSR,ACI ;等待模拟比较器中断标志变1
rjmp we2_1
;说明:模拟比较器中断标志(ACI)是按ACIS1和ACIS0所规定的模式置位,程序可检测此标志。
ana_init:clr r17 ;清计数寄存器的高、低字节
clr r18
ldi r16,$13 ;清模拟比较器中断标志ACI,选上升沿触发
out ACSR,r16
sei ;开中断
sbi ACSR,ACIE ;使能模拟比较器中断
here: rjmp here
ANA_COMP:in r1,sreg ;保护标志寄存器
subi r17,low(-1) ;计数器加1
sbci r18,high(-1)
out sreg,r1 ;恢复标志寄存器
reti
;说明:在模拟比较器中断使能位(ACIE)置1和全局中断使能后,就进入模拟比较器中断。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -