版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1I/O端口
从这部分开始,将结合C语言编程练习和单片机外围元器件与电路,来详细了解ATmega8A单片机硬件的各种功能资源。首先要学习的是单片机中最简单但又很重要的I/O端口,即输入/输出端口,它们是单片机与外部设备进行数据交换或输出控制信号的通道。ATmega8A单片机有三组I/O端口,分别是PORTB、PORTC(7位)和PORTD,共21路通用I/O接口,分别对应单片机芯片上的21个引脚。ATmega16A单片机有32个I/O口,而ATmega64A有48个I/O口,ATmega128A则有53个I/O口。它们的结构、原理与使用方法基本相同,可以根据实际应用的I/O口需要,选择不同型号AVR单片机。ATmega8A中所有这些I/O口都是两功能或三功能复用的。其第一功能都是作为通用数字I/O口使用,而复用功能则分别用于诸如外部中断、定时/计数器、SPI、USART、TWI和ADC等应用。下一页返回6.1I/O端口
作为通用数字I/O口使用时,所有AVR单片机I/O端口都具有真正的读—修改—写功能。输出缓冲器具有对称的驱动能力,可以输出或吸收20mA电流,能直接驱动LED等小功率外围器件。图6.1为I/O口引脚等效原理图。所有的端口引脚都有与电压无关的上拉电阻Rpu,并有保护二极管与VCC
和地相连。编程时,对每个端口的使用都需要通过3个I/O寄存器来完成,它们分别是:①数据寄存器—PORTx;②数据方向寄存器—DDRx;③端口输入引脚寄存器—PINx。其中,小写的“x”表示端口的序号,对ATmega8A其取值为B、C、D。而后面要遇到的小写的“n”代表位的序号,通常取值为0~7,如PORTB.3表示端口B的第3位。上一页下一页返回6.1I/O端口
数据寄存器PORTx用于向端口输出数据,或者从端口输入数据。数据方向寄存器DDRx用于控制端口数据传输方向,I/O端口在使用之前,要明确其是用于输入还是输出。端口输入引脚寄存器PINx用于输入实时的端口引脚电平。数据寄存器和数据方向寄存器为读/写寄存器,而端口输入引脚寄存器为只读寄存器。但是需要注意的是,对PINx寄存器某一位写入逻辑“1”将造成数据寄存器相应位的数据发生“0”与“1”的交替变化。当寄存器SFIOR的上拉禁止位PUD置位时,所有端口引脚的上拉电阻都被禁止。端口引脚在使用之前都应按需要进行相应的配置,即要对3个I/O端口寄存器以及相应的寄存器位进行设置。单片机程序在执行时对所有寄存器的操作,都是通过引用其地址来实现的。但是,如果在编程时也引用寄存器地址,则很不方便,且程序的可读性也不好。所以,在CVAVR中事先已经把所有的寄存器地址通过宏定义赋予了一个有意义的名字,而编程时对寄存器的操作,直接引用这个名字即可。上一页下一页返回6.1I/O端口
如PORTB、DDRC和PIND等,都是相应寄存器地址的宏定义名字。而寄存器中的某一位,则是通过PORTB.n这样的形式来引用的。DDRx用来选择引脚的输入/输出方向,如果令DDRx=0xFF,则对应的PORTx所有引脚均配置为输出;若DDRx=0x00,则PORTx所有引脚均配置为输入。当然,也可以任意设置端口的某些位为输入,某些位为输出。如DDRB.0=1,只是设置了B口的第0位为输出,而不管其他位如何。当端口设置为输出时,例如DDRB=0xFF,并且有PORTB=0xFF,则表示在端口B所有引脚都输出了高电平,若有PORTB=0x00,则是在端口B所有引脚都输出了低电平。当端口设置为输入时(或输出时),可以通过读取PINx寄存器来获得引脚的实时电平。此外,当端口设置为输入状态时(DDRx=0x00),通过对应的PORTx的值,可控制使用或禁用端口内部的上拉电阻。有时为了不影响其他电路,需要把端口设置为高阻态,其设置方法为:{DDRx,PORTx}=0x00。表6.1为I/O口引脚配置情况。上一页下一页返回6.1I/O端口
除了通用数字I/O口功能之外,大多数端口引脚都具有第二功能。1.端口B的第二功能(见表6.2)(1)XTAL2/TOSC2—端口B,bit7。使用外部晶振时,PB7作为芯片时钟振荡器引脚2。当作为时钟引脚时,不能同时再作为I/O引脚使用。若PB7作为时钟引脚使用,DDRB.7、PORTB.7及PINB.7的读出值为“0”。(2)XTAL1/TOSC1—端口B,bit6。PB6可用作芯片时钟振荡器引脚1,适用于所有芯片时钟源(片内标定RC振荡器除外)。当作为时钟引脚时,不能同时再作为I/O引脚使用。若PB6作为时钟引脚使用,DDRB.6、PORTB.6及PINB.6的读出值为“0”。上一页下一页返回6.1I/O端口
(3)SCK—端口B,bit5。PB5可用作SPI接口的主机时钟输出引脚,从机时钟输入引脚。工作于从机模式时,不论DDRB.5如何设置,这个引脚都将作为输入。工作于主机模式时,这个引脚的数据方向由DDRB.5控制。设置为输入后,上拉电阻由PORTB.5控制。(4)MISO—端口B,bit4。PB4可用作SPI通道的主机数据输入、从机数据输出引脚。工作于主机模式时,不论DDRB.4如何设置,这个引脚都将作为输入。工作于从机模式时,这个引脚的数据方向由DDRB.4控制。设置为输入后,上拉电阻由PORTB.4控制。上一页下一页返回6.1I/O端口
(5)MOSI/OC2—端口B,bit3。MOSI:PB3可作为SPI通道的主机数据输出、从机数据输入引脚。工作于从机模式时,不论DDRB.3如何设置,这个引脚都将作为输入。当工作于主机模式时,这个引脚的数据方向由DDRB.3控制。设置为输入后,上拉电阻由PORTB.3控制。OC2:PB3还可用作T/C2输出比较功能的匹配输出引脚。此时,PB3引脚将设置为输出。OC2在定时器PWM模式功能时作为输出引脚。上一页下一页返回6.1I/O端口
(6)SS/OC1B—端口B,bit2。SS:PB2可用作从机选中信号引脚。工作于从机模式时,不论DDRB.2如何设置,这个引脚都将作为输入。当此引脚变为低电平时SPI被激活。工作于主机模式时,这个引脚的数据方向由DDRB.2控制。设置为输入后,上拉电阻由PORTB.2控制。OC1B:PB2还可用作T/C1输出比较功能匹配时的外部输出B引脚。此时,PB2引脚将设置为输出。OC1B在定时器PWM模式功能时作为输出引脚。(7)OC1A—端口B,bit1。PB1还可用作T/C1输出比较功能匹配时的外部输出A引脚。此时,PB1引脚将设置为输出。OC1A在定时器PWM模式功能时作为输出引脚。(8)ICP1—端口B,bit0。PB0还可用作T/C1的输入捕捉引脚。上一页下一页返回6.1I/O端口
2.端口C的第二功能(见表6.3)(1)RESET—端口C,bit6。PC6可作为外部复位引脚,当RSTDISBL熔丝位编程,该引脚作为普通I/O引脚使用时,系统只能依靠上电复位与掉电检测复位作为复位源。若RSTDISBL熔丝位未编程,复位电路与该引脚连接时,该引脚不能作为普通I/O引脚使用。(2)SCL/ADC5—端口C,bit5。SCL:PC5可作为两线串行接口时钟引脚。当TWCR寄存器的TWEN位置“1”,使能两线串行接口,引脚PC5不与I/O端口寄存器相连,而是成为两线串行接口的串行时钟引脚。ADC5:PC5还可用作ADC的输入通道5。注意,ADC输入通道5使用数字电源。上一页下一页返回6.1I/O端口
(3)SDA/ADC4—端口C,bit4。SDA:PC4可作为两线串行接口数据引脚。当TWCR寄存器的TWEN位置“1”,使能两线串行接口,引脚PC4不与I/O寄存器相连,而是成为两线串行接口的串行数据引脚。ADC4:PC4还可用作ADC输入通道4。注意,ADC输入通道4使用数字电源。(4)ADC3—端口C,bit3。PC3可用作ADC输入通道3。注意,ADC输入通道3使用模拟电源。上一页下一页返回6.1I/O端口
(5)ADC2—端口C,bit2。PC2可用作ADC输入通道2。注意,ADC输入通道2使用模拟电源。(6)ADC1—端口C,bit1。PC1可用作ADC输入通道1。注意,ADC输入通道1使用模拟电源。(7)ADC0—端口C,bit0。PC0可用作ADC输入通道0。注意,ADC输入通道0使用模拟电源。上一页下一页返回6.1I/O端口
3.端口D的第二功能(见表6.4)(1)AIN1—端口D,bit7。PD7可作为模拟比较器的负输入端。将引脚配置为输入端口,并关闭内部上拉电阻,可避免模拟比较器干扰数字端口功能。(2)AIN0—端口D,bit6。PD6可作为模拟比较器的正输入端。将引脚配置为输入端口,并关闭内部上拉电阻,可避免模拟比较器干扰数字端口功能。(3)T1—端口D,bit5。PD5可作为T/C1计数器外部计数脉冲输入引脚。(4)XCK/T0—端口D,bit4。XCK:PD4可作为USART外部时钟引脚。T0:PD4还可作为T/C0计数器外部计数脉冲输入引脚。上一页下一页返回6.1I/O端口
(5)INT1—端口D,bit3。PD3可作为外部中断1输入引脚。(6)INT0—端口D,bit2。PD2引脚可作为外部中断0输入引脚。(7)TXD—端口D,bit1。PD1可作为USART的数据发送引脚。当使能了USART的发送器后,这个引脚被强制设置为输出,此时DDRD.1不起作用。(8)RXD—端口D,bit0。PD0可作为USART的数据接收引脚。当使能了USART的接收器后,这个引脚被强制设置为输入,此时DDRD.0不起作用,但是PORTD.0仍然可以控制上拉电阻。上一页下一页返回6.1I/O端口
各个I/O端口寄存器的结构与说明如图6.2
图6.3
图6.4
图6.5。端口C数据寄存器—PORTC,端口C是7位,其余同端口B。端口C数据方向寄存器—DDRC,端口C是7位,其余同端口B;端口C输入引脚地址—PINC,端口C是7位,其余同端口B;端口D数据寄存器—PORTD,结构同端口B;端口D数据方向寄存器—DDRD,结构同端口B;端口D输入引脚地址—PIND,结构同端口B。这9个端口寄存器名字在C语言编程时经常要用到,需要记住。上一页返回6.2外部中断
前面介绍过,中断是指单片机临时停止当前正在执行的程序,转去处理一些非常紧急,且必须及时处理的事情,处理完毕后,再转回去继续执行中断前的程序。中断,是计算机编程的一个非常重要而有用的技术。不同的紧急事情,AVR对应有不同的中断源,并用相应的中断服务程序去处理。中断的触发源可以来自单片机内部(如定时器溢出、A/D转换结束、数据传输结束等),也可以是来自单片机外部的事件。外部中断通过引脚INT0、INT1引入触发信号。当我们使能了中断,即使引脚INT0、INT1配置为输出,只要电平发生了合适的变化,中断也会被触发。这个特点可以用来产生软件中断。通过设置MCU控制寄存器MCUCR的值,外部中断可以由INT0、INT1引脚电平的下降沿、上升沿,或者是低电平触发。当外部中断使能并且配置为低电平触发(INT0/INT1)时,只要引脚电平为低,中断就会产生。下一页返回6.2外部中断
若要求INT0与INT1在信号下降沿或上升沿触发,I/O时钟必须工作。INT0/INT1的低电平中断检测是异步的,也就是说,这低电平中断可以用来将器件从睡眠模式唤醒。在睡眠过程(除了空闲模式)中I/O时钟是停止的。1.MCU控制寄存器—MCUCRMCUCR包含外部中断触发控制位与通用MCU功能,其位定义如图6.6所示。(1)bit3、bit2—ISC11、ISC10:外部中断1触发方式控制位。如果状态寄存器SREG的全局中断使能位I和通用中断控制寄存器GICR中外部中断1使能位置位,外部中断1将由引脚INT1上的信号触发。触发方式如表6.5所示。在检测边沿到来之前,INT1引脚上的电平被一直采样。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。上一页下一页返回6.2外部中断
(2)bit1、bit0—ISC01、ISC00:外部中断0触发方式控制位。如果状态寄存器SREG的全局中断使能位I和通用中断控制寄存器GICR的外部中断0使能位置位,外部中断0由引脚INT0上的信号触发。触发方式如表6.6所示。在检测边沿到来前,INT0引脚上的电平被一直采样。如果选择了边沿触发或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。上一页下一页返回6.2外部中断
2.通用中断控制寄存器—GICRGICR的位定义如图6.7所示。bit7、bit6—INT1、INT0:外部中断1、0开关。当INT1、INT0为“1”,且状态寄存器SREG的全局中断标志位I置位,相应的外部引脚中断就使能了。MCU控制寄存器MCU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 规范场外营养液配制制度
- 考核办法算不算制度规范
- 专利商标规范管理制度
- 如何体现企业制度规范
- 猪肉专卖店规范管理制度
- 有机实芯电阻器、电位器制造工常识知识考核试卷含答案
- 农业经理人岗前基础能力考核试卷含答案
- 上海薪资福利制度规范
- 篮球馆安全管理制度规范
- 汽车零部件再制造工安全生产意识水平考核试卷含答案
- 2026天津市津南创腾经济开发有限公司招聘8人笔试参考题库及答案解析
- 特种作业培训课件模板
- 2025年时事政治知识考试试题题库试题附答案完整版
- 高校宿舍管理员培训课件
- 河南省开封市2026届高三年级第一次质量检测历史试题卷+答案
- 员工通勤安全培训课件
- 岁末年初安全知识培训课件
- 全国秸秆综合利用重点县秸秆还田监测工作方案
- 中小企业人才流失问题及对策分析
- 2026年湖南铁路科技职业技术学院单招职业倾向性测试题库含答案
- 招标人主体责任履行指引
评论
0/150
提交评论