1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > AVR单片机与C语言的一些入门简要概述

AVR单片机与C语言的一些入门简要概述

时间:2018-10-19 18:02:55

相关推荐

AVR单片机与C语言的一些入门简要概述

用C语言进行嵌入式系统的开发具有汇编语言编程不可比拟的优势,虽然C语言编写出的代码要比汇编语言占有的空间大5%~20%,但是由于半导体技术的发展,芯片的容量和速度有了大幅度的提升,占用空间的比例已经不是那么关键,相比之下,更看重软件是否具有长期稳定运行的能力,注重使用先进开发工具所带来的时间和成本的优势,那么对于AVR单片机与C语言来说,也是一样的。AVR单片机在ATMEL的设计下吸取了PIC和80C51的优点并进行了大量改进,使其运用也十分广泛,这里不具体详述,来解读一下AVR单片机和C语言的关键点和一些注意事项,以此谈谈感受与经验。

在AVR输入输出的使用中,I/O口是重点,AVR的I/O口为标准双向口,在复位时所有端口处于没有上拉电阻的输入状态(高阻态,管脚电平完全由外部电路决定)。AVR的每一个端口对应3个地址即DDRX,PORTX,PINX(X取A~F,但是只有PINX可以取F)

在AVR中断系统中有2点要注意的事项:1.由于TI的TCNT1,OCR1A,OCR1B,ICR1都是16位的定时器,为了正确的写入和读出,在写入数据时应该先写高字节,再写低字节,在读取数据时应该先读取低字节,再读取高字节。2.TI的捕捉方式,可用于ICP引脚上频率或者周期的测量,在使用时只需使能捕捉中断即可,对T1的设置可参考定时的用法。

注意:在AVR的子程序中,硬件不保护SREG状态寄存器,应该根据实际情况由软件保护,例如:

#pragma interrupt_handler timer1:7//申明timer1()为中断处理函数

#pragma interrupt_handler int0:2//申明_int0()为中断处理函数

void main(void)

{

GIMSK=0X40;//使能INT0中断

TIMSK=0X80;//使能T1溢出中断

_SEI();//使能全局中端

}

void timer1(void)//T1溢出中断服务程序

{

_SEI();//在T1溢出中断服务程序使用全局中断

//保证INT0的优先级

}

在C语言的中断服务程序(中断处理函数)中,会自动保护中断服务函数中使用的所有的寄存器

AVR单片机内置EEPROM和看门狗(Watchdog)的使用:注意事项,看门狗电路的振荡器为内部RC振荡器,其震荡频率受电压影响,在DC5V时约为1MHZ,在AVR汇编中有一条指令WDR来清除看门狗定时器,在C语言中对应为_WDR()函数或WDR()函数。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。