历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2020年02月05日 | AVR的I/O用法笔记

2020-02-05 来源:eefocus

AVR的I/O有三个寄存器,DDRX,PORTX,PINX。


DDRX 方向,DDRX=1,输出;DDRX=0,输入。


例如设置PA0口为输入,即可写成DDRA&=~(1<


PORTX 分两种情况


如果DDR=1,即在输出状态的话,那么通过设置PORTX的值改变IO端口的电平


如果DDR=0,即在输入状态的话,那么PORT=1则使能上拉电阻,否则不使能。


PINX 此寄存器表示了该端口的实际电平,所以读I/O口的话,应该读PINX,而不是PORTX。


每个I/O口可以输出或吸纳20mA的电流,这一点在设计上要注意。


比如连接LED,键盘等。


以LED为例,LED上的压降是2v左右,正常的工作电流应该是10mA-20mA,可以通过此计算限流电阻的值。


如供电电压为5V,则限流电阻应为(5-2)/10mA=300(Ohm).


一旦将I/O口的工作方式设为输入方式后,必须等待一个时钟周期才能正确读到PIN值。


AVR单片机复位之后所有的I/O均为输入方式,上拉电阻不使能,所以呈现三态高阻输入态。


AVR的I/O寄存器被分配在SRAM地址空间中,可以通过IN、OUT、SBI、CBI这些指令直接访问I/O寄存器,也可以通过访问SRAM访问它们。


如数据手册中所示,例如PORTA,前面的$1B是I/O寄存器的空间地址,括号内的$3B是数据存储器的实际映射地址。


可以通过SBI和CBI指令方便地设置某一位,但是只能对$00-$1f即前32个I/O寄存器进行这种操作。


例如SBI 0x1B,0即是设置PORTA0为1,在速度要求很高的情况下可以直接嵌入这种汇编语句。

推荐阅读

史海拾趣

CML公司的发展小趣事

面对日益增长的市场需求,CML开始积极寻求市场扩张的机会。公司通过与各大电子产品制造商建立合作关系,将自己的产品广泛应用于电视、手机、电脑等消费电子产品中。同时,CML还积极开拓新兴市场,如汽车电子、工业控制等领域,不断扩大自己的市场份额。这些策略的实施,使得CML的业绩逐年攀升,公司规模不断壮大。

E-Mark Inc公司的发展小趣事

JKL公司是一家创新型电子企业,专注于研发新能源汽车电子控制系统。为了推动新能源汽车的发展并满足欧洲市场的需求,JKL公司决定对其产品进行E-Mark认证。在认证过程中,JKL公司积极投入研发资源,不断创新技术,提升产品的智能化和安全性。最终,JKL公司的产品成功获得了E-Mark认证,并在欧洲市场得到了广泛应用和认可。这一认证不仅加速了JKL公司新能源汽车技术的市场推广速度,也提升了公司在国际市场的竞争力。

Ferranti Electric Inc公司的发展小趣事

Ferranti Electric Inc公司的历史可追溯到1880年,由Sebastian Ziani de Ferranti(塞巴斯蒂安·齐亚尼·德·费兰蒂)在英国创立。作为发电机及壳式变压器的发明者之一,费兰蒂博士不仅拥有交流发电机、高压电缆、断路器等176项专利,而且他的创新精神也为公司的创立和发展奠定了坚实的基础。初创时期,公司就专注于电气产品的研发和生产,逐渐在电气行业崭露头角。

DBM REFLEX公司的发展小趣事

随着公司实力的不断增强,DBM REFLEX开始积极拓展全球市场。通过与全球知名企业的合作,公司成功将产品推向了世界各地。同时,DBM REFLEX还积极寻求与产业链上下游企业的合作,建立了稳定的供应链和销售渠道。这些合作伙伴的加入,不仅为公司提供了更多的市场机会,还进一步提升了公司的品牌影响力。

ETTINGER公司的发展小趣事

Ettinger,这个源于英国的皮具奢侈品牌,由Gerry Ettinger在1934年创立。自创立之初,Ettinger就致力于提供高品质的皮具产品,凭借其精湛的皮具制作工艺和独特的英格兰式设计风格,逐渐在市场上树立了良好的品牌形象。初期,Ettinger主要专注于手工制作皮具,通过不断提升产品质量和设计水平,赢得了消费者的青睐。

驰芯微(CHIPWISE)公司的发展小趣事

驰芯微公司与明然科技的合作是公司在技术创新方面的又一重要突破。双方共同研发的MCU控制芯片成功应用于主动悬架项目,并在奇瑞的星途瑶光、瑞虎9等车型上取得了重要进展。这一合作不仅提升了国产芯片在高端配置车型中的应用水平,也进一步推动了驰芯微在汽车电子领域的发展。

问答坊 | AI 解惑

请大家帮我分析一下我这个ULN2003为什么烧毁

应用很简单,2003输入接MCU的IO,输出接一个加热丝(加热丝电阻100欧姆左右),现在的现象是不管MCU的IO是什么信号,加热丝都一直进行加热。现在批量生产的10台机器中有一台出现了这个问题,是元件本身的问题,还是电路的问题呢,小弟很着急,请大 ...…

查看全部问答>

紧急求助!

我现在需要将5兆方波转成5兆正弦波?那位大哥做过?最好有现成的电路图,采用教材上滤波的方式,理论上可以实际操作很难的。谢谢,感激不尽! 我的QQ:739467432 新箱:sujianfeng6601@yahoo.com…

查看全部问答>

基于AT89C52控制的寻迹小车设计

基于AT89C52控制的寻迹小车设计…

查看全部问答>

WIFI连接的问题

将设备移出AP覆盖范围,重新再移入AP覆盖范围后,微软的连接程序(netui)如何做到自动重新连接的?是定时器吗?…

查看全部问答>

求救?我在PB定制WINCE内核的时候出现了一个错误

我在PB4.2下定制WINCE,build时出现1个错误,系统提示参考WINCE420目录下的build.err文件,文件的内容如下: Starting sysgen phase for project ( common ) Found localized resources for Languages ( 0404 0407 040C 0410 0411 0412 0413 041 ...…

查看全部问答>

u-boot引导linux,在出现如下问题后就不动了……请求帮助!

网上有两种解决方案: 一是串口的问题,即ttySAC0; 二是时钟频率的问题。 这两个我都排除了,但还是不行! 出现的问题如下: Starting kernel ... Uncompressing Linux................................................................... ...…

查看全部问答>

请问:如果某一个timer到时间而没有被关闭,将会有什么结果产生?

我是这样想: 设置并且启动timer后,timer开始计时,一旦指定的延时结束,函数立即被调用。 可是如果timer到时间没有被关闭,将会产生什么样的结果呢? 请高手们帮助解答一下…

查看全部问答>

串口不能进中断?但是查询模式正常

现象:使用查询模式能够实现正常收发,使用串口中断时,没有中断时,在主程序循环中正常运行,如果收到字符,不是跳到USART1_IRQHandler,而是跳到了 HardFaultException中断,可能是哪里的原因,如果说硬件有问题,可查询模式很正常。请高手 ...…

查看全部问答>

整了一天,USBmassstorage还是不行。

STM32F103VE 能从电脑上看到USB盘符,文件也能读出,速度也不慢。 可就是一往上写就不行,提示超时错误。 用USBlyer抓包,一大堆都是success,只有一个Remova Relation 显示Not surportted. 只要一写,就卡住。。。。。。N久后说设备超时 ...…

查看全部问答>

求替换HT1621

各位大神,大家好。        小弟初来乍到,有个问题想求大家帮忙想想办法。 我公司使用合泰HT1621型号的单片机开发了一款产品,由于控制液晶显示器,现在想用松翰的单片机替换掉HT1621,请问,那个型号可以替换? ...…

查看全部问答>