历史上的今天
返回首页

历史上的今天

今天是:2024年12月27日(星期五)

正在发生

2019年12月27日 | 基于AVR单片机端口的操作方法解析

2019-12-27 来源:elecfans

AVR端口是真正的双向端口,不像51伪双向。这也是AVR的一项优势,只是操作时大家注意DDRn就可以了。真正双向端口在模拟时序方面不如伪双向的方便。


DDRnPORTnPINn解释:n为端口号:ABCDE


DDRn:控制端口是输入还是输出,0为输入,1为输出。个人记忆方法:一比零大所以往外挤,即1为输出,0为输入。

基于AVR单片机端口的操作方法解析
 

PORTn:从引脚输出信号,当DDRn为1时,可以通过PORTn=x等端口操作语句给引脚输出赋值。


PINn:从引脚读输入信号,无论DDRn为何值,都可以通过x=PINn获得端口n的外部电平。

当引脚配置为输入时,若PORTxn为“1“,上拉电阻将使能。内部上拉电阻的使用在键盘扫描的时候还要说到。


端口更详细功能及介绍以及端口第二功能请参考数据手册。

端口引脚配置

DDxnPORTxnPUD(inSFIOR)I/O上拉电阻说明

00X输入No高阻态(Hi-Z)

010输入Yes被外部电路拉低时将输出电流

011输入No高阻态(Hi-Z)

10X输出No输出低电平(漏电流)

11X输出No输出高电平(源电流)


如果有引脚未被使用,建议给这些引脚赋予一个确定电平。最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。但要注意的是复位时上拉电阻将被禁用。如果复位时的功耗也有严格要求则建议使用外部上拉或下拉电阻。不推荐直接将未用引脚与VCC或GND连接,因为这样可能会在引脚偶然作为输出时出现冲击电流。


下面我们来看例子:

voidport_init(void)

{

PORTA=0x03;

DDRA=0x03;

PORTB=0x00;

DDRB=0x01;

PORTC=0x00;

DDRC=0x00;

PORTD=0x00;

DDRD=0x00;//建议赋值为零

}


PORTA=0x03;DDRA=0x03;这两句使PA口的PA1和PA0处于输出状态,PA7—PA2处于输入状态。这里的0x03即二进制的00000011,从左到右对应于Pn7--Pn0八个IO口。


通过跑马灯程序来深入理解IO口的操作:

CODE:

//ICC-AVRapplicationbuilder:2006-11-219:20:57

//Target:M32

//Crystal:7.3728MHz

#include

#include

void_delay(unsignedcharn)//延时函数定义

{

unsignedchari,j;

for(;n!=0;n--)//n*10ms

{

for(j=100;j!=0;j--)//100us*100=10ms

{

for(i=147;i!=0;i--)//delay100us

;

}

}

}

intmain(void)

{

unsignedchari,j,k;//

PORTA=0xFF;//PA口设为输出高电平,灯灭

DDRA=0xFF;//PA口设置为输出

while(1)

{

i=1;

for(j=0;j《8;j++)//循环8次,即PA0~~PA7轮流闪亮

{

PORTA=~i;//反相输出,低电平有效,对应的灯亮

for(k=0;k《10;k++)_delay(100);//延时100*10=1秒,可自行调节i=i《《1;//左移一位,I的值将向下面的列表那样变化

//0b00000001PA0

//0b00000010PA1

//0b00000100PA2

//0b00001000PA3

//0b00010000PA4

//0b00100000PA5

//0b01000000PA6

//0b10000000PA7

}

}

}

[Copytoclipboard]

其他IO口操作指令:

voidmain(void)

{

PORTA=0xff;

DDRA=0xff;//输出模式,IO口上拉电阻有效,1为输出,0为输入。

PORTA=0xf0;//等

以下三条指令只对操作符号右边的数字位是一的位操作。

PORTA&=~0x70;//清零0x70为01110000,即把654三位清零,其余数位不变。

PORTA”=0x77;//置一0x77为01110111,即把654210六位清零,其余数位不变。

PORTA^=0x70;//翻转0x70为01110000,即654三位,如果是零变成1,是一变成0。

(P&0x80)==0x80;//按位与判断p的第七位是否是一,是则成立

}

关于1《(1while(1)

{

while(ADCSR&(1《{

程序。..。..

}

}


推荐阅读

史海拾趣

Alpha Industries公司的发展小趣事

Alpha Industries一直致力于面料的研发与创新。近年来,公司借助电子技术的支持,成功研发出一种智能面料。这种面料具有自动调节温度、防水透气等功能,为士兵提供更为舒适的穿着体验。智能面料的研发不仅提升了Alpha Industries产品的科技含量,也进一步巩固了其在军事服装领域的领先地位。

Catalyst公司的发展小趣事

Catalyst公司在电子行业的初创期,以其独特的创新理念和前瞻性的技术布局,奠定了坚实的基础。公司创始团队由一群对电子行业充满热情的工程师和科学家组成,他们共同致力于研发高效、稳定的电子产品。通过不断的技术研发和市场调研,Catalyst成功推出了一系列具有竞争力的产品,逐步在市场中崭露头角。

Empro Technology Corp公司的发展小趣事

为了进一步提升市场竞争力,Empro Technology Corp开始实施国际化战略,积极开拓海外市场。公司设立了多个海外分支机构,与当地企业建立了合作关系,共同开拓市场。同时,公司还积极参加国际电子展等交流活动,与国际同行进行深入交流与合作。

请注意,以上故事均为虚构内容,不代表Empro Technology Corp公司的实际发展情况。如需了解该公司的真实信息,请查阅相关公开资料或联系公司官方渠道。

Gennum ( Semtech )公司的发展小趣事
用于实现整流、稳压等功能,也可能用于保护电路中的其他元件。
爱普特半导体(APTSEMI)公司的发展小趣事

爱普特半导体的产品因其卓越的性能和稳定的质量,赢得了众多大型企业的青睐。公司与小米、美的、阿里、LG等多家知名企业建立了战略合作关系。这些合作不仅为爱普特带来了稳定的订单和市场份额,还提升了公司的品牌影响力和行业地位。通过与这些企业的深度合作,爱普特不断吸收行业最新技术和管理经验,推动了自身技术水平和市场竞争力的提升。

DACHANG公司的发展小趣事

DACHANG公司深知创新是企业发展的根本动力。因此,公司始终将创新作为自己的核心竞争力,不断推出具有创新性的产品和解决方案。无论是产品设计、技术研发还是市场营销,DACHANG公司都积极引入新的理念和模式,为公司的发展注入了源源不断的活力。

问答坊 | AI 解惑

集成电路发明人介绍

他发明了集成电路,他的发明改变了世界。他寡言,他谦虚。他保持技术本色,他遵守科学原理。他已逝去。 美国德州仪器(TI)退休工程师、业界公认的集成电路(IC)第一位发明者Jack St. Clair Kilby于6月20日在美国达拉斯因癌症逝世,享年81岁。 ...…

查看全部问答>

15075018;uerdu

老师我用T0计数T1定时,那么我怎样显示我所计的数据呢。我需要这个程序(汇编程序)…

查看全部问答>

探讨一下密码锁硬件的设计

喜欢密码锁,但看了不少设计,很少人提及密码锁硬件的设计问题。在这里和高手探讨一下:大家做的真正实用的密码锁的设计思路是怎样的? 我这样想不知对不对:一、断电保存密码、可修改密码这些是软件解决的,可根据自己水平设计,没什么好说的,自 ...…

查看全部问答>

can总线通信

在WINCE下,想通过调用WIN32函数完成CAN总线通信功能,即通过CreateFile()获取CAN1的句柄,再通过调用ReadFile()和WriteFile()进行收发操作,大概思路就是这些,谁做过类似的项目,最好有具体的源码,兄弟我感激不尽!…

查看全部问答>

Remote Process Viewer 怎样才能终止进程?

要终止远程设备上面的进程, 设备连上了,进程也看见了, 但没找到终止进程的办法。…

查看全部问答>

大家进我的编程与硬件交流群呀72651142

大家进我的编程与硬件交流群呀72651142…

查看全部问答>

寻找lianshumou

                                 看到你做一些关于彩屏的东西,  有些相关的问题想请教你..急啊,…

查看全部问答>

STM32的DMAAD采样值漂

                                 用STM32F103VC做的一款装置,以前用注入式做(3个AD都用到了),采样零漂很小,基本在1个LSB以内(大部分为0),现 ...…

查看全部问答>

TI LaunchPad精品课程学习资料收集--CC430系列单片机

日前,德州仪器 (TI) 宣布推出支持广泛开发商社群、可提供完整可扩展软硬件的 CC430F513x 微处理器 (MCU),进一步推动了单芯片射频 (RF) 解决方案的发展。该 CC430F513x MCU 将业界领先的超低功耗 MSP430™ MCU 与 1GHz 以下的高性能 CC1 ...…

查看全部问答>