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

对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间研究pic单片机的各类技术。而谈及pic单片机,必须牵扯至51、avr单片机。因此本文中,将探讨pic单片机以及51、avr单片机对于io口的操作。对于本文,希望大家认真研读,以在pic单片机的学习之路上更为精进。
一.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口的功能越强大结构越复杂操作越繁琐。
以上便是小编带来的全部内容,希望大家对此次小编带来的内容比较满意。


GaAs半导体元件市场规模2015年可达3.2亿美元
垃圾处理器好不好用在于有没有选对电机
如何去抓住人工智能这个大好的机遇
dfrobot防水独立探头超声波测距模块简介
智慧能源:光伏电站远程运维物联网平台
PIC单片机以及51和AVR单片机的IO口操作方法解析
2018年Q2华为超过苹果成为全球第二大智能手机厂商
嵌入式射频设计,在陶瓷芯片天线上选择PCB走线天线
如何在java代码中使用HTTP代理IP
并不止处理器,联发科披露五大产品规划
晶体管图示仪使用方法及使用注意事项
土壤管式剖面水分仪参数
简述热敏电阻测温原理
200亿软银收购wework 风暴将刮向联合办公市场
德州仪器运算放大器实现业界最低失真,可驱动高速16位ADC-
西部数据推出WD Purple Pro 系列 为构建人工智能应用而生
华为在接下的数年甚至更长的日子里,可能会面临芯片断供的危机
一文解答为什么零线电流大于火线电流
我国智慧城市建设进展分析报告
两个网络IP地址是否在同一个段中的判断方法