专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

AVR轻松学ICCAVR PORTUES仿真

作者:huqin   来源:本站原创   点击数:  更新时间:2014年04月01日   【字体:

Atmega16

IO相关寄存器
学习每种单片机要从控制各IO口的高低电平开始,avr系列与IO有关的寄存器每组有三类,PORTn  ,DDRn  , PINn,及SFIOR内PUD位,PORTn与DDRn是控制端口的状态,对应关系如图。
 

PINn为读端口当前高低电平状态。
现在以keil中51系列为例,定义端口然后对等关系定义AVR端口在ICCARV中。
51 :    Sbit   led=P1^2;       led=0;   led=1;
AVR:     #define   ledh PORTA|=(1<<PA0)     led=1;
#define   ledl PORTA&=~(1<<PA0)     led=0;
PINn  return PINn;    if(PINn==XX)
中断向量及中断程序写法
 
ICCAVR中断函数书写格式;
#pragma   interrupt_handler timer0_ovf:10   //定时器溢出
Void   timer0_ovf(void)          中断源中断向量
{}
外部中断
外部中断有三个,分别为INT0,INT1INT2;对应端口为PD2PD3PB2;首先设置端口状态INT0为例,PORTD|=(1<<PD2);
DDRD&=~(1<<DDD2);
         中断产生条件设置
外部中断01MCUCR Bit0:3 ISC00  ISC01 ISC10 ISC11
 

外部中断
2   MCUCSR   Bit :6  ISC2
 



   INT0于INT1  引脚中断产生条件是一样的如上表
INT2 ISC20时低电平触发,写1时高点批评触发
中断控制寄存器: GICR  Bit 5:7 INT2,INT0,INT1
 

需要哪个中断时将其写1  
GICR|=(1<<INTn);
中断标志位寄存器:GIFR Bit5:7 INTF2/INTF0/INTF1
 

全局中断打开,中断控制位打开,引脚上发生合适的电平变化,对应的中断标志位就会置位,对其写1实现清零。
下边写个INT0的程序发生中断时将PORTA取反
 

 
本章到这里,不定期更新,后边有、定时器,UART,AD,SPI,EEPROM、IIC总线。更有Atmega128等着你,不要走开,哈哈哈 
 


精彩的生活怎么能没有你的存在   MCU
关闭窗口

相关文章