技术文档

avr单片机io 细数pic单片机,pic单片机与51AVR单片机IO操作

小编 2024-11-25 技术文档 23 0

细数pic单片机,pic单片机与51AVR单片机IO操作

pic单片机使用较多,因此学习pic单片机的人数也相对较多。对于pic单片机,它的优点众所皆知。此文对pic单片机的讲解在于介绍pic单片机的IO口操作。但本文不仅仅局限于pic单片机,同样将对51单片、AVR单片机IO操作加以介绍,一起来了解下吧。

51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机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;

}

二.AVR单片机IO口的操作

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

//总线操作输出数据,以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位输出低电平,技巧:使用取反位与运算,其他位不变

三.PIC单片机IO口的操作

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

#i nclude

__CONFIG(0x3B32);

//总线操作输出数据,以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位输出低电平

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

以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家对pic单片机、51单片机以及AVR单片机的IO口操作具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

小5带你飞(1)—AVR单片机IO口位操作的方法(1)

闲来没事,将自己以前学习AVR单片机的一些笔记给大家整理出来,方便大家来一起学习。也争取每周能整理几篇出来。

此处我使用的单片机是AVR系列的,芯片为Atmega328p,具体资源请查看官网上的该芯片的datasheet。

好的,闲话就不说了,直接上正题,对于单片机来说,可能对io口的操作是最基本的能力了。

首先我们来看一下位的操作

按位或

其实就是置位

例如:PORTA |= 0x80;

只要有一个为1就为1了,是不是最高位置位了

按位取反

其实就是清位

例如:PORTA &= ~0x80;

两个全为1才为1 ,是不是最高位清位了

按位异或

其实就是实现位的翻转

例子:PORTA ^= 0x80

相同为0,不同为1, 是不是最高位翻转了

按位与

其实可以用来检测某一位是不是为1

例子:if(PINA & 0x80)

就可以用来检测PA.7是不是为1了

下面来看几个简单的程序例子:

哦,在写demo程序之前,可能还需要来讲一点别的,

我用的开发环境时winavr,然后使用usbasp将hex烧写进板子里面,不同的开发环境,可能使用的头文件有一些出入,后期我可能只展示一些核心代码了。

可能还要讲一下控制io的寄存器

atmega328p 这个mcu的io口都是标准的双向口,这个和51是有区别的。

在复位时,所有的端口都是高阻态,啥是高阻态,不知道可以度娘了。

每一个端口,都对应3个寄存器,分别是:DDRx PORTx PINx

来看看这三个寄存器的控制作用:

DDR : 选择引脚是输入还是输出

PORT : 当io口是输入的时候,它控制有无上拉电阻,当io口是输出的时候,它控制的输出的电平情况。

PIN :读管脚的电平

总结一下:io口初始化三部曲:

使用DDR来设置端口是输入还是输入

要是输出的话,使用PORT来设置输出的是高电平还是低电平

要是输入的话,使用PINx来读取管脚的输入值,同时可使用PORT来设置管脚是不是有上来电阻。不清楚上、下拉电阻的,以后我再出一个教程。

相关问答

单片机 和ARM有什么区别?

欢迎大家关注狗哥,学习更多单片机干货1、单片机指单芯片上集成了控制器、存储器以及如定时器、SPI、IIC等外部设备于一体的片上系统,可以用来执行复杂的功能,...

单片机 采集指示灯的交流电平信号通过485与电脑通信来控制继电器的开关的电路图?

如果是5V单片机系统,高输出2V的情况有:1、IO口外接了较大的负载,拉低了端口的电压(一般单片机的IO为弱上拉),如果你断开负载测量端口电压还是2V的话就有可能...

俺是机械厂搬运工,想自学 单片机 ,请问 AVR 和STM8 单片机 哪个容易入门?

本人在校学习的是avr,工作后接触的是stm32。我建议,直接学习stm。原因有两条:1,综合学习成本低。a.stm8的开发板和avrmega系列的开发板价格差异不大。b....

单片机 在通电后所有接口都是高电平吗?

单片机上电后,端口的状态一般为高阻态。在《单片机初级教程》这本书中是这样说的:复位后,P0~P3口输出高电平且使这些双向口皆处于输入状态。在MSP430单片机...

AVR单片机 asm("nop");什么意思,8M的话多少,时间?

AVR单片机中asm("nop");这条语句,其中asm()的作用是指函数内部的参数翻译为汇编指令,其作用是在C语言环境下直接使用汇编指令执行。nop是一个空...AVR单...

multisim中有哪些 单片机 ?

Multisim是一款电路设计和仿真软件,其中包含了多种单片机。其中常见的单片机有PIC、AVR、8051、ARM等。这些单片机都具有不同的特点和应用场景,比如PIC单片机...

如何让 单片机 灯亮?

下面是其中一种基于AVR单片机和汇编语言的控制方法:1.准备材料:ATmega32单片机(或其他型号的AVR单片机)、一个...让单片机控制LED灯亮的实现方法很...

哪位大仙,急急急! AVR单片机 的价格大概是多少?

[回答]您可以提供一下AVR单片机的具体需求,然后才能给您反馈价格哦。AVR单片机的价格受多方面影响,比如品牌、市场等,在选择购买之前,多方面地进行了解和...

目前常用的 单片机 型号有哪些?都有什么优缺点?

现在市场上的单片机型号可以说是非常多的,其中有通用型的单片机,还有专用型的单片机。专用型单片机一般我们不常见到。今天我们结合这个问题来介绍一下目前常...

单片机 arduino哪个好?

1.arduinoArduino的开发一般是一套以AVR单片机为核心控制器的硬件(开发板),还有配套他们的开发环境ArduinoIDE。简单来说呢就是arduino是对单片机的二次封装,...

猜你喜欢