本帖最后由 ??? 于 2013-3-23 01:44 编辑
基于AVR STDIO6.0
(吐槽一下,感觉这个软件编译太慢,并且例程有点凌乱.还有datasheet不是详细.....) 1.命名规则: ATMEL的xmega系列单片机端口都是8个管脚,PORTx形式进行处理,其中x为A,B,C,D.... 2.寄存器: 1.PORTx_DIR:数据方向寄存器; 写1相应的管脚设置为输出,0为输入.这个寄存器可以直接访问,也可以通过设置 PORTA_DIRCLR,PORTA_DIRSET来修改相应的管脚. Eg PORTA_DIR=0XFF;//设置PORTA全部为输出; PORTA_DIRCLR=0X01;//清除相应位,即此时PORTA_PIN0为数据方向为读取 PORTA_DIRSET=0X01;//设置相应位为输出
2.PORTx_OUT:数据输出寄存器
Eg PORTA_DIR=0XFF;//设置io为输出模式 PORTA_OUT=0XAA;//此时PORTA输出为0XAA;
3.PORTx_IN: 数据输入寄存器 IO的状态寄存器,即使在输出模式下也可以读取到管脚的状态 4.PORTx_PINnCTRL:管脚功能寄存器 每一个管脚都对应了一个这样寄存器,通过设置这个寄存器来配置; 用来配置管脚输入输出模式时的模式,像丄拉,下拉一类的,这一块有疑惑 Totemple是推挽输出? 用来对事件关联和边沿捕捉从而产生中断
//点亮LED0和LED1 #include <asf.h> #define BIT(X) (1<<X) int main (void) { board_init();
PORTR_DIRSET|=BIT(0)|BIT(1);//设置相应管脚为输出 PORTR_OUTCLR=BIT(1)|BIT(0);//点亮相应的LED // Insert application code here, after the board has been initialized. } |