历史上的今天
返回首页

历史上的今天

今天是:2025年02月25日(星期二)

正在发生

2020年02月25日 | PIC单片机以及51和AVR单片机的IO口操作方法解析

2020-02-25 来源:elecfans

对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间研究pic单片机的各类技术。而谈及pic单片机,必须牵扯至51、AVR单片机。因此本文中,将探讨pic单片机以及51、AVR单片机对于IO口的操作。对于本文,希望大家认真研读,以在pic单片机的学习之路上更为精进。

PIC单片机以及51和AVR单片机的IO口操作方法解析

一.51单片机IO口的操作

51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起来是所有单片机里最简单的,可以直接进行总线操作也可以直接进行位操作,这也是51单片机之所以成为经典的原因之一。下例的运行坏境为Keil软件,器件为AT89S52。

#i nclude

sbit bv=P2^0;//定义位变量,关联P2.0管脚。sbit是C51编译器特有的数据类型

int main(void)

{

unsigned char pv;

//位操作,以P2口的第0位为例:

bv=0;//直接对P2口的第0位管脚输出低电平

bv=1;// 直接对P2口的第0位管脚输出高电平

//总线操作输出数据,以P2口为例:

P2=0xaa;//直接赋值,P2口输出数据0xaa

//总线操作读取数据,以P2口为例:

pv=P2;//直接读取P2口的数据放到pv变量

return 0;

}

PIC单片机以及51和AVR单片机的IO口操作方法解析

二.AVR单片机IO口的操作

AVR单片机IO口的结构比较复杂,每个IO由三个寄存器组成:IO口数据寄存器POTx、IO口方向寄存器DDRx和IO口输入引脚寄存器PINx。AVR单片机IO口操作相当麻烦,需要设置IO口的方向,而且只能进行总线操作,如果进行位操作还需要掌握编程技巧---通过逻辑运算来实现位操作。下例的运行坏境为ICCAVR软件,器件为ATMEGA16。

#i nclude

int main(void)

{

unsigned char pv;

//总线操作输出数据,以D口为例:

DDRD=0xff;//先设置D口的方向为输出方式(相应位设0为输入,设1为输出)

PORTD=0xaa;//赋值,D口输出数据0xaa

//总线操作读取数据,以D口为例:

DDRD=0x00//先设置D口的方向为输入方式(相应位设0为输入,设1为输出)

PORTD=0xff;//再设置D口为带上拉电阻(相应位设0为无上拉,设1为有上拉),才能准确读取数据

pv=PIND;//读取D口的PIND寄存器的数据放到pv变量

//位操作,以D口的第0位为例:

DDRD|=0x01;//先设置D口第0位的方向为输出方式,其他位的方向不变

PORTD|=0x01;//D口的第0位输出高电平,技巧:使用位或运算,其他位不变

PORTD&=~0x01;//D口的第0位输出低电平,技巧:使用取反位与运算,其他位不变

return 0;

}


三.PIC单片机IO口的操作

PIC单片机IO口的结构也比较复杂,每个IO由两个寄存器组成:IO口数据寄存器PORTx、和IO口方向寄存器TRISx。操作起来比AVR单片机简单一些,同样需要设置IO的方向,可以进行总线操作也可以进行位操作。下例的运行坏境为MPLAB IDE软件,器件为PIC16F877。

#i nclude

__CONFIG(0x3B32);

int main(void)

{

unsigned char pv;

//总线操作输出数据,以B口为例:

TRISB=0x00;//先设置B口的方向为输出方式(相应位设0为输出,设1为输入)

PORTB=0xaa;//赋值,B口输出数据0xaa

//总线操作读取数据,以B口为例:

TRISB=0xff;//先设置B口的方向为输入方式(相应位设0为输出,设1为输入)

pv=PORTB;//读取B口的数据放到pv变量

//位操作,以B口的第0位为例:

TRISB=0xfe;//先设置B口的第0位(RB0)的方向为输出方式(相应位设0为输出,设1为输入)

RB0=1;//B口的第0位输出高电平

RB0=0;//B口的第0位输出低电平

return 0;

}


经过比较这三种单片机IO口的操作,我们知道,51单片机IO口结构简单,操作简单,但没有高电平大电流驱动能力;AVR和PIC单片机IO 口结构复杂,操作麻烦,但具备高电平大电流驱动能力。换句话说,单片机的IO口的功能越强大结构越复杂操作越繁琐。

推荐阅读

史海拾趣

AEC Design公司的发展小趣事
为了进一步提升技术实力和市场竞争力,AEC Design公司积极寻求与其他企业或研究机构的战略合作。通过与上下游企业建立紧密的供应链合作关系,公司确保了原材料的稳定供应和产品质量的有效控制。同时,与高校和研究机构的合作则为公司带来了源源不断的技术创新动力。
德立电子(DDY)公司的发展小趣事

随着电子行业的快速发展,德立电子意识到技术创新的重要性。公司加大研发投入,不断推出高频贴片绕线电感、立式电感、磁环电感等新产品,满足市场多样化需求。同时,德立电子还注重知识产权保护,申请多项专利,确保技术领先。

ADDtek公司的发展小趣事

面对日益激烈的市场竞争,德立电子积极拥抱数字化转型。公司引进先进的生产管理系统和智能设备,实现生产过程的自动化和智能化。通过数字化改造,德立电子提高了生产效率,缩短了生产周期,降低了成本,进一步增强了市场竞争力。

富芯森美(FUXINSEMI)公司的发展小趣事

为了确保产品质量,富芯森美在成立初期便启动了严格的质量管理体系建设。公司通过了ISO、IATF 16949等国际质量管理体系认证,并严格按照标准执行。同时,公司产品还通过了UL、ROHS、REACH、HF等多项国际测试,确保了产品的安全性和可靠性。这一系列的举措不仅提升了富芯森美的市场竞争力,也赢得了客户的广泛信赖。

Elpress AB公司的发展小趣事

随着电子技术的不断进步和市场需求的变化,Elpress AB意识到只有不断创新才能保持竞争力。因此,公司加大了对研发的投入,引进了一批先进的研发设备和人才。经过数年的努力,Elpress AB成功推出了一系列具有创新性和领先性的电气连接产品,如高压电缆接头、母线连接器等。这些产品的推出不仅丰富了公司的产品线,也进一步提升了Elpress AB在电气连接领域的地位。

Compound Photonics公司的发展小趣事

经过几年的努力,Compound Photonics在LCoS领域取得了显著的进步,成为了业内知名的LCoS方案商之一。公司的技术与产品得到了市场的广泛认可,成功应用在Lumus最新的二维扩瞳模组中。这次合作不仅提升了Compound Photonics的市场地位,也为其带来了可观的商业回报。

问答坊 | AI 解惑

最早的手机

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 手机从问世到现在已经有20多年的历史了,从巨型大哥大到现在的直板,滑盖,翻盖,旋盖等造型并存,手机的外形越来越小巧,而造型则是越来越时尚,我们一起来回顾一下最早的手机: …

查看全部问答>

噪声问题

  --------------------------------------------------------------------------------     我的收音机用的是cl6017s,它在收听到电台的时候总是有类似于单片机(MSP430F135)扫描键盘那种节奏的嘟嘟声噪音,我用示波器亮了 ...…

查看全部问答>

6410的otg怎么配置成host使用?

6410的otg怎么配置成host使用?…

查看全部问答>

windML3.0 的编译错误问题

安装了Tornado2.2.1(for MIPS)和windML3.0 编译WindML库文件时遇到下面的错误。请高手分析一下。谢谢 子目录或文件 D:\\Tornado2.2_MIPS\\target\\lib\\mips\\MIPS64\\gnule\\objwndml 已经存在。 make.exe[4]: [checkdir] Error 0x1 (ignored ...…

查看全部问答>

求助 flash烧写

pxa271的芯片能用flashpgm烧写bootloader么?如果不能,应该用什么烧写工具呢?…

查看全部问答>

【号外】STM32F101也有USB

刚做的东西给几个小MM去贴片,把101当103贴上去了,居然USB也可以联机。但操作偶尔有问题,手工复位一般可以解决掉。听小道消息说,101是阉割的103,就像奔腾的cache有瑕疵变成赛扬一样。…

查看全部问答>

RTC校准应用笔记中文版,望置顶

                                 我翻译的,大家多多指教!…

查看全部问答>

正弦波振荡器,求解释

小弟菜菜~在学模拟电子,看了正弦波振荡器就尝试自己做了一个~但是输出的波形却是下面这个图上的   望路过的各位大大们能解释下,小弟感激不敬啊~~…

查看全部问答>

AD633应用

本帖最后由 dontium 于 2015-1-23 13:12 编辑 各位帮忙看一下。用AD633搭的一个乘法电路,实现两个郑玄信号的相乘。正弦信号相位相同。按说最后只会剩下直流分量与和频分量的合成曲线,但是用滤波器想过滤掉交变分量,只剩直流分量。可是滤波后得 ...…

查看全部问答>

在DSP系统的设计初期,是否需要CPLD来增加布线灵活性

在DSP系统的设计初期,是否需要CPLD来增加布线灵活性?之前做过几个板遇到IO端口设计不合理导致板子要重做的情况。增加CPLD成本就自然增加了。 [ 本帖最后由 weipingying 于 2012-12-26 08:43 编辑 ]…

查看全部问答>