📄 953.asm
字号:
.include"8535def.inc"
.org $000
rjmp main
.org $006
rjmp tim1_cmp
main: ldi r16,low(ramend) ;初始化堆栈指针
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi r16,$c0 ;达比较匹配值时,OC1A变高
out tccr1a,r16
ldi r16,$0C ;256分频,CTC=1,匹配时清定时器1
out tccr1b,r16
ldi r16,$20 ;PD5作输出
out ddrd,r16
clr r16 ;使TCNT1初值为0
out tcnt1h,r16
out tcnt1l,r16
ldi r18,$01 ;送比较匹配值312
out ocr1ah,r18
ldi r18,$38
out ocr1al,r18
ldi r16,$10 ;允许定时器1比较匹配中断
out timsk,r16
clr r16 ;清中断标志
out tifr,r16
sei
here: rjmp here
tim1_cmp:
in r1,sreg ;保护标志
in r18,tccr1a ;读TCCR1A
sbrs r18,6 ;判COM1A0是否为1
rjmp aa
ldi r18,$00 ; 若为1,送下次比较匹配值156
out ocr1ah,r18
ldi r18,156
out ocr1al,r18
ldi r18,$80 ;下次达到比较匹配值156时OC1A引脚变低
out tccr1a,r18
bc: out sreg,r1 ;恢复标志
reti
aa: ldi r18,$c0 ;若COM1A0为零,下次达到比较匹配值时OC1A引脚变高
out tccr1a,r18
ldi r18,$01 ;送下次比较匹配值312
out ocr1ah,r18
ldi r18,$38
out ocr1al,r18
rjmp bc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -