PIC单片机和AVR单片机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。
#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口的功能越强大结构越复杂操作越繁琐。


圆筒单相动圈式直线震荡电机设计
中高压变频器主电路拓扑结构的分析比较
工作频率72MHZ的海速芯32位MCU TM32F103K7​用于信号隔离采集器设计,​可P2P替换STM32F103CBT6
截杀小米6, 格力手机3代将至
华为海思的麒麟950到底新在哪儿?
PIC单片机和AVR单片机IO的操作方法解析
定位型振动光纤边境线入侵报警系统
深度分析NLP中的注意力机制
SCR后处理系统故障确认与注意事项
PTC和PT100保护电机的方法
达世币网络将解决加密数字货币应用的难题
18650锂电池的价格多少?锂电池价格的影响因素总结
孤注一掷在VR,但是HTC Vive在中国真的会成功吗?
现在关于5G技术有哪些10个误解你了解吗
新能源电瓶—简单精确检测电池
上海集成电路产业启动,预计2025年实现产业规模1000亿元
京东方全球创新伙伴大会·2020盛大开幕
三星45W快充下放 GalaxyA91将支持45W快充
任天堂Switch上架三款“官方认证闪迪内存卡” 售价139元起
增量式编码器接口电路及其FPGA设计方案