⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sg10.asm

📁 基于PROTERUS仿真的AVR例子
💻 ASM
字号:
.device AT90S8535
.equ    sph    	=$3E
.equ    spl    	=$3D
.equ	PORTD	=$12
.equ	DDRD	=$11
.equ    PIND    =$10
.equ    TIMSK   =$39
.equ    OCR1AH  =$2B
.equ    OCR1AL  =$2A
.equ    TCCR1A  =$2F
.equ    TCCR1B  =$2E
.equ    TIFR  	=$38
.equ    SREG	=$3F
.equ    TCNT1H	=$2D
.equ    TCNT1L	=$2C

	.org	$0000
	rjmp	main
	.org	$006
	rjmp	t1_cp

main:	ldi	r16,$02			;栈指针置初值
	out	sph,r16
	ldi	r16,$5f
	out	spl,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

t1_cp:	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为0,下次达到比较匹配值时,OC1A引脚变高
	out	TCCR1A,r18
	ldi	r18,$01			;送下次比较匹配值321
	out	OCR1AH,r18
	ldi	r18,$38
	out	OCR1AL,r18
	rjmp	bc
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -