当前位置:首页 >> 信息与通信 >>

ATMEGA16的IO端口


第九课 ATmega16(L)的 IO 端口

本教程节选自周兴华老师《手把手教你学 AVR 单片机 C 程序设计》教程,如需转载,请注明出处! 读者可通过当当网、淘宝网等网站购买本教程,如需购买配书实验器材,可登陆周兴华单片机培训 中心网购部自助购买!

ATmega16(L)单片机有 32 个通用 I/O 口,分为 PA、PB、PC 和 PD 四组,每组都是 8 位。这些 I/O 口都可以通过各自的端口寄存器设置成输入和输出(即作为普通端口使用) ,有些 I/O 口还具有第 二功能(我们在后面使用到这些第二功能时再介绍) 。 ATmega16(L)单片机的 I/O 口在不考虑第二功能时,其基本输入输出功能都是相同的。如图 7-1 所 示为 ATmega16(L)单片机 I/O 口的结构图。 每个端口对应 3 个寄存器, 即方向寄存器 DDRX (X=A、 B、C、D) 、端口寄存器 PORTX(X=A、B、C、D) 、输入引脚 PINX(X=A、B、C、D) ,各个端 口的工作状况都可以通过对 DDRX、PORTX 和 PINX 的操作来完成。所有的 AVR 单片机的 I/O 端 口都具有读、写和修改功能。表 7-1 列出了 ATmega16(L)的 I/O 端口的组合控制设置。 ATmega16(L)单片机每一组 I/O 口的所有管脚都可以单独选择上拉电阻。 引脚缓冲器可以吸收 20mA 的电流,能够直接驱动 LED 显示。如果设置了弱上拉电阻,当管脚被拉低时,引脚会输出电流。 1.DDRX DDRX 为端口方向寄存器。当 DDRX 的某一位置 1 时相应引脚作为输出使用。反之,当 DDRX 的 某一位置 0 时,对应的引脚单片机培训作为输入使用。 例如: DDRB=0xF0;//此语句将 PB 端口的 PB0~PB3 位设为输入,而 PB4~PB7 位设为输出。 2.PORTX PORTX 为端口数据寄存器。 如果引脚设为输出,则对 PORTX 进行写操作即改变引脚的输出值。

图 7-1 表 7-1

ATmega16(L)的 I/O 端口 ATmega16(L)的 I/O 端口的组合控制设置 PORTxn(n=0~ 7) 0 1 0 1 I/O 输入 输入 输出 输出 上拉 关闭 打开 关闭 关闭 备 注

DDRxn(n=0~ 7) 0 0 1 1

三态(高阻) 提供弱上拉, 被外部电路拉低时输 出电流 输出 0 输出 1

例如: DDRB=0xFF; //此语句将 PB 端口的 PB0~PB7 位设为输出。 PORTB=0x55; //PB 端口输出 01010101。 例如: DDRB=0x00; //此语句将 PB 端口的 PB0~PB7 位设为输入。 PORTB=0xF0; // PB0~PB3 位不设上拉,无信号输入时处高阻态。PB4~PB7 位设为上拉,无信号 输入时处高电平。 上海周兴华单片机提供单片机培训、FPGA 培训、protel 培训、PCB 设计培训等各种课程,是单片 机工程师的要摇篮; 3.PINX PINX 是相应端口的输入引脚地址,如果希望读取引脚的逻辑电平值,一定要读取 PINX,而不是 PORTX。注意:PINX 是只读的,不能对其赋值。 例如: DDRB=0x00; //此语句将 PB 端口的 PB0~PB7 位设为输入。

PORTB=0xFF; //PB0~PB7 位设为上拉,无信号输入时处高电平。 temp=PINB; //将 PB 口引脚信号读入变量 temp 中。



相关文章:
Arduino Mega 2560使用手册
路数字输入输出, 特别适合需要大量 IO 接口的设计。...ATmega16U2 可以访问串口 0 实现 USB 上的虚拟串口...注意要点 Arduino Mega2560 上 USB 口附近有一个可...
更多相关标签: