微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR单片机的I/O寄存器和端口操作

AVR单片机的I/O寄存器和端口操作

时间:11-10 来源:互联网 点击:
1.在头文件“sfr_defs.h”中定义的宏“_BV(bit)”也常用来实现位操作。

其中,宏“_BV(bit)”的定义为:

#define _BV(bit) (1<(bit))

例子:

DDRD = _BV(PD0) | _BV(PD1)

//在相应器件的ioxxxxxxx.h中PD0定义为0,PD1定义为1

所以,DDRD = _BV(PD0) | _BV(PD1) 等价于DDRD=0x03.

2.ATmega128每个I/O端口都有3个寄存器来控制,分别是:

方向寄存器DDRx、数据寄存器PORTx和输入引脚寄存器PINx。

其中,方向寄存器DDRx和数据寄存器PORTx是可读可写寄存器,而PINx为只读寄存器。

例子:

在进行写操作的时候,方向寄存器DDRB用于指定PB口是作为输入口还是输出口用;

在进行读操作的时候,从方向寄存器DDRB读出来的是端口的方向设定值。

DDRA = 0xFF;//初始化端口A为输出模式。


#define LED0 0

#define LED1 1

DDRC = 0xFF;

PORTC = 0xFF;

...

PORTC &= ~ _BV (LED0);// 输出低电平

PORTC | = _BV (LED1);//输出高电平

...

PORTC &= ~ _BV (LED1);// 输出低电平

PORTC | = _BV (LED0);//输出高电平


SPDR :SPI数据寄存器

SPSR:SPI状态寄存器

SPCR :SPI控制寄存器

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top