ATMEGA16的IO端口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九课A Tmega16(L)的IO端口
本教程节选自周兴华老师《手把手教你学A VR单片机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的操作来完成。所有的A VR单片机的I/O端口都具有读、写和修改功能。表7-1列出了A Tmega16(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-1A Tmega16(L)的I/O端口
表7-1A Tmega16(L)的I/O端口的组合控制设置
DDRxn(n=0~7)PORTxn(n=0~
7)
I/O 上拉备注
0 0 输入关闭三态(高阻)
0 1 输入打开提供弱上拉,被外部电路拉低时输
出电流
1 0 输出关闭输出0
1 1 输出关闭输出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中。