一个avr单片机的汇编程序,注意几个宏指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个avr单片机的汇编程序,注意几个宏
指令
//晶振1MHz
//LED接PB0
//使用定时器1,1024分频,0.5秒中断一次,LED闪烁一次
程序如下:
.include "m8def.inc"
.equ led =0
.equ flash =$60
.org $0000//中断向量表
rest:
rjmp START
INT0addre: ; External Interrupt0 Vector Address reti
INT1addre: ; External Interrupt1 Vector Address reti
OC2addre : ; Output Compare2 Interrupt Vector Address
reti
OVF2addre: ; Overflow2 Interrupt Vector Address
reti
ICP1addre: ; Input Capture1 Interrupt Vector Address reti
OC1Aaddre: ; Output Compare1A Interrupt Vector Address
reti
OC1Baddre: ; Output Compare1B Interrupt Vector Address
reti
OVF1addre: ; Overflow1 Interrupt Vector Address rjmp Timer1_ovf
OVF0addre: ; Overflow0 Interrupt Vector Address reti
SPIaddre : ; SPI Interrupt Vector Address
reti
URXCaddre: ; USART Receive Complete Interrupt Vector Address
reti
UDREaddre: ; USART Data Register Empty Interrupt Vector Address
reti
UTXCaddre: ; USART Transmit Complete Interrupt
Vector Address
reti
ADCCaddre: ; ADC Interrupt Vector Address
reti
ERDYaddre: ; EEPROM Interrupt Vector Address
reti
ACIaddre : ; Analog Comparator Interrupt Vector Address
reti
TWIaddre : ; Irq. vector address for Two-Wire Interface
reti
SPMaddre : ; SPM complete Interrupt Vector Address reti
SPMRaddre: ; SPM complete Interrupt Vector Address reti
.org $20
START:
ldi r16,low(ramend)//设置堆栈指针
out spl,r16
ldi r16,high(ramend)
out sph,r16
clr r16
sts flash,r16
sbi ddrb,led//PB0接led
rcall Timer1_ovf_init//调用初始化函数
MAIN:
lds r16,flash
sbrs r16,0 ;if the flag is set,jump one low rjmp main
ldi r16,0x01//LED取反
in r17,pinb
eor r17,r16
out portb,r17
clr r16
sts flash,r16
rjmp main
Timer1_ovf_init:
ldi r16,0xfe
out tcnt1h,r16
ldi r16,0x17
out tcnt1l,r16
in r16,timsk
sbr r16,1<<2//开溢出中断
out timsk,r16
ldi r16,0x05
out tccr1b,r16//开定时器
sei //开中断
ret
Timer1_ovf://定时器2定时0.5S in r16,sreg
push r16//保存SREG入栈
ldi r16,0xfe
out tcnt1h,r16
ldi r16,0x17
out tcnt1l,r16
clr r16
sbr r16,1<<0//设置标志
sts flash,r16
pop r16
out sreg,r16
reti//中断返回