ATMEGA16的IO端口

合集下载

Atmegal16单片机寄存器

Atmegal16单片机寄存器

ATMEGAL16二、寄存器(1)I: 全局中断使能I=1:允许全局中断C=0:禁止全局中断(2)T:位复制存储将寄存器某一位复制到T,或将T复制到寄存器某一位(3)H:半进位标志位H=1:低4位向高4位有进位H=0:低4位向高4位无进位(4)S:符号位S=N异或V(5)V:2进制补码溢出标志V=1:2进制补码有溢出V=0:2进制补码无溢出(6)N:负数标志位N=1:结果是负数N=0:结果是正数(7)Z:零标志Z=1:结果是零Z=0:结果不是零(二、三)SPH,SPL:堆栈指针堆栈区的初地址,SPL是低8位,SPH是高8位(1)SE:睡眠使能SE=1:使能睡眠模式SE=0:禁止睡眠模式SRE:外部扩展使能(2)SM2,SM1,SM0:睡眠模式选择JTD=1:JTAG测试使能JTD=0:禁止JTAG测试(2)ISC2:外中断2触发方式ISC2=1:上升沿中断ISC2=0:下降沿中断(3)JTRF:JTAG测试复位标志JTRF=1:JTAG复位JTRF=0:JTAG没复位(4)WDRF:看门狗复位标志WDRF=1:看门狗复位WDRF=0:看门狗没复位(5)BORF:掉电检测复位标志BORF=1:掉电检测复位BORF=0:没掉电(6)EXTRF:外部引脚复位标志EXTRF=1:外部引脚复位EXTRF=0:外部引脚没复位(7)PORF:上电复位标志PORF=1:上电复位PORF=0:没上电复位(六)SFIOR:特殊功能(2)ACME:模拟比较器多路复用器使用标志ACME=1:ADC多路复用器为模拟比较器选择负极输入ACME=0:AN1连接到比较器负极(3)PUD:禁止上拉电阻PUT=1:禁止上拉电阻PUT=0:允许上拉电阻(4)PSR2:T/C2预分频复位PSR2=1:T/C0预分频复位PSR2=0:不操作(5)PSR10:T/C1或0预分频复位PSR10=1:T/C1或0预分频复位PSR10=0:不操作(七、八)EEARH ,EEARL:EEPROM地址EEARH是高地址,EEARL是低地址(九)EEDR:EEPROM读写的数据EERIE=1:允许EEPROM中断EERIE=0:禁止EEPROM中断(2)EEMWE:EEPROM写使能EEMWE=1:允许EEPROM写EEMWE=0:禁止EEPROM写(3)EEWE:写EEPROMEEWE=1:写EEPROMEEWE=0:无操作(4)EERE:读EEPROMEERE=1:读EEPROMEERE=0:无操作当PORTnn置位时是高电平。

AVR单片机项目4 ATmega16单片机IO接口应用

AVR单片机项目4 ATmega16单片机IO接口应用

二、I/O接口的寄存器
在GCCAVR C环境中,头文件“io.h”中定义了许多用于控 制I/O接口输入/出操作的宏,这些宏与I/O寄存器同名,通 过这些宏可以控制A、B、C、D接口的输入输出操作。 当A、B、C、D接口用于数据I/O口时,通过DDRx、 PORTx和PINx三个宏控制接口的输入与输出(其中x为A、B、 C或D)。例如: ①DDRA为A口数据方向寄存器,用来定义A口的通讯方 向(输入/输出); ②PORTA为A口数据寄存器,用来输出数据(输入时, PORTX为高,打开上拉电阻);当PORTx=1时,I/O引脚高 电平,可提供输出20mA电流;当PORTx=0时,I/O引脚低电 平,可吸纳20mA电流。因此,AVR的I/O在输出方式下提供 了比较大驱动能力,可以直接驱动LED等小功率外围器件。 ③PINA用来读取A口数据(只读)。

复位值
0
0
0
0
0
0
0
0
二、I/O接口的寄存器

端口输入寄存器:PINX(PINA)-----只读
PINA.7 PINA.6 PINA.5 PINA.4 PINA.3 PINA.2 PINA.1 PINA.0 N/A N/A N/A N/A N/A N/A N/A N/A
位 复位值

特殊功能寄存器:SFIOR
《单片机应用技术》
项目四 ATmega6单片机I/O口应用
任务一 项目知识点学习 任务二 LED闪烁灯控制 任务三 LED开关灯控制 任务四 汽车转向灯控制 任务五 霓虹灯控制 任务六 继电器控制照明设备

【知识目标】
1. 2.
3.
了解LED发光二极管的驱动控制方法 了解ATmega16单片机数字I/O口的结构 了解ATmega16单片机数字I/O口的相关寄 存器功能

ATmega16单片机小系统板简介

ATmega16单片机小系统板简介

1.概述本单片机小系统板为一单元实验板,使用一颗基于A VR构架的A Tmega16单片机。

A Tmega16有16KB的程序存储空间,1KB内部SRAM,512B内置EEPROM。

外部共有32个GPIO,一路USART,一路主从SPI,一路I2C,两个8位定时器,一个16位定时器,4通道PWM输出,8路10位AD输入。

还有各种丰富的管脚中断和不同的时钟可供使用。

2.硬件说明1.本单片机小系统板的电源输入电压为DC 2.7--5V,科创课程实验建议使用DC 5V。

2.小系统板上的P1为下载口,可供程序烧录、eeprom数据读写、熔断丝设置。

3.小系统板上的接插件PB、PC、PD分别对应A Tmega16芯片引脚的PB、PC、PD口。

PB、PC、PD口是八位数据端口,可作为通用IO口,也可用作第二功能使用,具体请参见datasheet的相关部分。

4.小系统板上的接插件PA的1-5脚分别连接A Tmega16芯片PA口的PA0-PA4,PA0-PA4是AD转换的模拟电压输入端口,也可作为通用IO口使用。

5.小系统板上的接插件PA的9脚连接A Tmega16芯片的V ref ,10脚接地。

A Tmega16有一个标称值为2.56V的内部基准源,每颗芯片的实际值会有所不同。

6.A Tmega16 PA口的PA5-PA7作为串行数据输出到小系统板上的74HC595上,有二片74HC595驱动4位数码管和4个LED灯。

小系统板上的P2作为串行数据输出总线,可级联74HC595。

7.小系统板上的四个按钮SW1-4分别连接在A Tmega16芯片PC4-7。

按钮RST为复位键。

3.开发环境推荐的入门开发环境为A VR studio 4 + WinA VR,即使用Atmel的免费IDE A VR studio 4和基于gcc的WinA VR编译器。

软件安装这两个软件的安装非常简单,双击之后一路回车即可。

官方下载地址:A VR studio 4:/dyn/products/tools_card.asp?tool_id=2725WinA VR:/projects/winavr/files/课程FTP://202.120.39.248也会提供软件包。

ATmega16寄存器详述

ATmega16寄存器详述

5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @ 珠联璧合 xlzhu xlzhu@
ega1 6 寄存器详述 ATm ATmega1 ega16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
表2 端口引脚配置 DDRXn 0 0 0 1 1 PORTXn 0 1 1 0 1 PUD × 0 1 × × I/O 输入 输入 输入 输出 输出 上拉电阻 否 是 否 否 否 说明 I/O 三态输入 I/O 口带上拉电阻输入 高阻态 推免0输出 推免1输出
点,可直接驱动LED、SSR或继电器。 � � 40引脚PDIP封装,44引脚TQFP 封装,与44引脚MLF封装。
工作电压 � � ATmega16L:2.7 - 5.5V ATmega16:4.5 - 5.5V

速度等级 � � 0 ~8 MHz ATmega16L 0 ~16 MHz ATmega16
3. I/O 端口 3.1 I/O 端口特性 � � � � 共有PA~PD四组通用I/O口,每组I/O都是8位寄存器。 作为通用数字I/O 使用时,所有AVR I/O 端口都具有真正的读-修改-写功能。 输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。 所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC 和地相连。
◎输入引脚地址 PINA
BIT PINA 读/写 初始值 7 PINA7 R N/A 6 PINA6 R N/A 5 PINA5 R N/A 4 PINA4 R N/A 3 PINA3 R N/A 2 PINA2 R N/A 1 PINA1 R N/A 0 PINA0 R N/A
5 PB 口寄存器 3. 3.5 ◎数据方向寄存器 DDRB

ATmega16_00硬件系统基本I0口使用

ATmega16_00硬件系统基本I0口使用

时钟源
ATmega16芯片有如下几种通过Flash熔丝位进行选 择的时钟源。时钟输入到AVR时钟发生器,再分配到相 应的模块。 •缺省时钟 器件出厂时缺省设置的时钟源是1 MHz 的内部RC振 荡器,启动时间为最长。这种设置保证用户可以通过 ISP 或并行编程器得到所需的时钟源。 •晶体振荡 XTAL1 与XTAL2 分别为用作片内振荡器的反向放大 器的输入和输出,这个振荡器可以使用石英晶体,也可 以使用陶瓷谐振器。
主要构成:
AVR CPU部分 程序存储器Flash 数据存储器SRAM和EEPROM 各种功能的外围接口,IO口,以及与他们 相关的数据、控制、状态寄存器等
8位数据总线
Flash程序 存储器
程序计数器
状态和控制
指令寄存器
32× 8 通用寄存器
中断单元 SPI单元 看门狗定时器
指令译码器
2个带预分频器、具有比较、PWM功能的8位定时器/ 计数器 1个带预分频器、具有比较、捕获和PWM功能 的16位定时器/计数器 1个具有独立振荡器的异步实时时钟(RTC) 4个PWM通道 8通道10位ADC 1个I2C的串行口 1个可编程的串行USART接口 1个主/从收/发的SPI同步串行接口 带片内RC振荡器的可编程看门狗定时器WDT 片内模拟比较器
//将端口A的第七位翻转 //将局部变量的第七位翻转 //将全局变量的第七位翻转
位操作
“按位与”用于检查某一位或某几位是否为1 #include<iom16v.h> #include<macros.h> unsigned char gtmpA void main() { unsigned char tmpB; while(tmpB&0x80) //查询局部变量第七位是否为“1” { //查询PA.7是否为“1” if(PINA&0x80) PORTA &=~0x80; //关闭A端口第七位 else …… } }

ATmega16单片机端口讲解新

ATmega16单片机端口讲解新
为常用的硬件去抖,由于需要增加硬件设备,增大了系 统的复杂性,所以硬件消抖一般不常用。
软件消抖 如果按键较多,常用软件方法去抖,即检测出键闭
合后执行一个延时程序,5ms~10ms的延时,让前沿抖动 消失后再一次检测键的状态,如果仍保持闭合状态电平, 则确认为真正有键按下。
图2-13 按键消抖
3、软件算法设计——查询法
2 U9
74HC164
8
dp g f e d c b a
13 12 11 10 6 5 4 3 1
2 U10
74HC164
8
L4 R45~52
dp g f e d c b a
13 12 11 10 6 5 4 3 1
2 U11
74HC164
8
GND GND 168 GND 28 GND 39
图2-12 硬件设计
数码管的字型码——共阴极:
7பைடு நூலகம்ls164引脚图和真值 表:
A1 A2 QA QB QC QD GND
1
14
2
13
3
12
4
11
5
10
6
9
7
8
2-9 引脚图
VCC QH QG QF QE RESET CLOCK
2-10 真值表
TTL电平和CMOS电平的区 别:
TTL CMOS
VOH ≥2.4V VOL ≤0.4V
按键消抖程序:
if(!AJ1) {
__delay_cycles(80000);//延时10ms消抖 if(!AJ1) //确认有键按下
{ while(!AJ1);//等待按键释放
}
}
ATmega16的中断源:

atmega16存器介绍

atmega16存器介绍

串口寄存器介绍USART I/O 数据寄存器- UDRUSART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR。

将数据写入UDR 时实际操作的是发送数据缓冲器存器(TXB),读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。

在5、6、7 比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。

只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。

如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。

当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。

然后数据串行地从TxD 引脚输出。

接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO 就会改变它的状态。

因此不要对这一存储单元使用读- 修改- 写指令(SBI 和CBI)。

使用位查询指令(SBIC 和SBIS)时也要小心,因为这也有可能改变FIFO 的状态。

USART 控制和状态寄存器A -UCSRA• Bit 7 – RXC: USART 接收结束标志(中断)接收缓冲器中有未读出的数据时RXC 置位,否则清零。

接收器禁止时,接收缓冲器被刷新,导致RXC 清零。

RXC 标志可用来产生接收结束中断( 见对RXCIE 位的描述)。

• Bit 6 – TXC: USART 发送结束发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。

执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。

TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。

• Bit 5 – UDRE: USART 数据寄存器空UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。

UDRE为1说明缓冲器为空,已准备好进行数据接收。

UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。

Atmega16的IO使用

Atmega16的IO使用

例4.2.2二进制数输出控制
如图4-6所示为二进制数输入、输出控制的电路原理图。
图4-6 并行输入/输出应用
PC口作为输入接口使用,每一位接有上拉电阻和开关。 当开关断开时,输入为高电平,读取的结果为1;当开关 闭合时,输入为低电平,读取的结果为0。这样8个开关 s0~s7的状态可以组成一个8位的二进制输入数。如图4-7 所示,s7、s5、s2、s0断开,s6、s4、s3、s1闭合。 开关: S7 S6 S5 S4 S3 S2 S1 S0 状态: 开 闭 开 闭 闭 开 闭 开 输入值:1 0 1 0 0 1 0 1 所以,输入的二进制数为0xa5。
位控制
位控制具有把一个位变量输出到某个引脚的含义。所以 位控制时,赋值语句的左边为接口输出变量的位操作符。 例如把C口的第0位控制为高电平,可编写程序如下: DDRC=0xff; PORTC.0=1;
位运算
位运算一般有:置1、清0、取反、与、或、非、异或等运算。 置1:位变量=1; 清0:位变量=0; 取反:位变量=!位变量 与运算:位变量3=位变量1&位变量2 或运算:位变量3=位变量1|位变量2 异或运算:位变量3=位变量1^位变量2 非运算:位变量2=!位变量1
并行输入工作原理 并行输出工作原理 并行输入/输出接口工作原理
并行输入图4-1所示。引脚的 状态取决于外电路,缓冲器后的状态为引脚状态,三态门的输 出由RP端控制,当RP为0时,三态门的输出为高阻状态,数据 总线不受引脚影响;当RP为1时,三态门的输出与输入相同, 此时为读引脚状态。在读接口时,RP控制端有效。
并行输入接口某一位的简化接口电路如图:
并行输出工作原理
并行输出接口中某一位的简化接口电路如图所示。当控制端WP为0 (低电平)时,数据锁存器的输出端Q为上次输出的值,与输入端D 无关,数据总线操作不影响输出。当控制端WP为1时,数据锁存器 的输出端Q的值为输入端D的值,为输出数据状态。数据输出到引脚。 锁存器输出端Q为0时,输出为低电平;锁存器输出端Q为1时,输出 高电平。RL控制端为读取输出值。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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中。

相关文档
最新文档