51、AVR和PIC的IO口操作

发布者:老桃子最新更新时间:2016-10-22 来源: eefocus关键字:AVR  PIC  IO口操作 手机看文章 扫描二维码
随时随地手机看文章
51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。下面我们来看看51单片机、AVR单片机和PIC单片机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口的功能越强大结构越复杂操作越繁琐。
关键字:AVR  PIC  IO口操作 引用地址:51、AVR和PIC的IO口操作

上一篇:AVR查询方式 A/D 转换测试程序
下一篇:AVR的部分MODBUS程序

推荐阅读最新更新时间:2024-03-16 15:16

AVR应用经验-经典
AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。 “外行看热闹,内行看门道”,对于有一定基础的嵌入式和单片机系统设计开发的工程师,不妨先简单尝试一下AVR。 开发环境与工具:PC+下载线+实际的系统板 PC上的开发软件: AVR Studio(Free)汇编+汇编调试+高级语言调试+软件仿真 ICC、CVAVR、BASCOM-AVR 高级语言程序开发+程序下载。其中一个购买正版全功能,作为主要的开发环境,其它使用DEMO版,作为辅助及参考。 AVR ISP下载线: STK200 and STK200+ and STK300 ISP
[单片机]
PIC 单片机485通信 接收机
#include pic.h #include math.h #include stdio.h #define uchar unsigned char #define uint unsigned int __CONFIG(WDTDIS & HS & PWRTDIS & BORDIS);//设置配置位 // WDTDIS : disable watchdog timer // LVPDIS : low voltage programming disabled // HS : high speed crystal/resonator // PWRTDIS : disable power up timer // BORDIS
[单片机]
基于Atmega8及MSM7512的嵌入式Modem设计
摘要:介绍了一种基于AVR单片机Atmega8和调制解调芯片MSM7512设计的嵌入式Modem,详细地阐述了Modem的硬件及软件设计方法。在设计中,鉴于单片机串口资源匮乏的问题,采用单片机上I/O模拟UART口的技术予以解决。上位机软件用Delphi语言编写,通过嵌入式Modem实现了计算机与远方设备之间的数据传送。 关键词:嵌入式Modem Atmega8 MSM7512B 模拟串口 随着经济的发展,远程监控系统的应用日益广泛。其核心部分是远程信息交换,即系统需要在地域分布广泛的设备之间进行信息的交换及协调工作。对于某些采集点分散、传输量不大、对速度要求又不高的信息交换系统,目前有两种解决方案:一是采用Internet
[单片机]
基于51单片机的直流电机PWM调速控制系统
1 引言 1.1 课题背景 1.1.2 开发背景 在现代电子产品中,自动控制系统,电子仪器设备、家用电器、电子玩具等等方面,直流电机都得到了广泛的应用。大家熟悉的录音机、电唱机、录相机、电子计算机等,都不能缺少直流电机。所以直流电机的控制是一门很实用的技术。直流电机,大体上可分为四类:几相绕组的步进电机、永磁式换流器直流电机、伺服电机、 两相低电压交流电机 直流电机的特点是启动转矩大,最大转矩大,转速控制容易,调速后效率很高。与交流调速相比,直流电机结构复杂,生产成本高,维护工作量大。随着大功率晶体管的问世以及矢量控制技术的成熟,使得矢量控制变频技术获得迅猛发展,从而研制出各种类型、各种功率的变频调速装置,并在工业上得到广泛应
[单片机]
基于<font color='red'>51</font>单片机的直流电机PWM调速控制系统
基于PIC12XX的精确延时技术
1 PIC12XX的结构 Microchip公司的单片机率先采用RISC(精简指令集计算机)结构的高性能价格比的嵌入式控制器。 该PIC单片机具有高速度、低工作电压、低功耗、较大的输入输出直接驱动能力、在线串行编程、芯片的低价位和小体积等特点。为此,Microchip开发了高档、中档、低档不同层次系列多种型号的产品,PIC12XX是一款基于EEPROM的8位微控制器的中档PIC单片机,具有高性能的RISC CPU、特殊单片机功能、低功耗功能、增强型Timer 1外设功能,为单片机的精确延时技术提供可靠保障。其内部结构如图1所示。 1.1 外部结构特点 该单片机共8个引脚,其中6个
[单片机]
基于<font color='red'>PIC</font>12XX的精确延时技术
51单片机串口收发设计的思考
  最近项目里面要用到51单片机做一些控制,主要功能是通过串口接收上位机的指令并进行分析解码,等待一个外部触发信号到来后执行之前接收的指令动作。正好手边有一片STC89C52,赶紧搭了个最小系统。STC89C52单片机可以通过串口下载程序,可是试了好几次都没有下载成功,仔细检查发现原来是9针串口线忘了接GND(地线)。顺便总结下STC单片机下载不成功的主要原因:   1、最小系统出问题(晶振对不对、复位电路对不对、引脚连线对不对);   2、电平匹配问题(一般是要加MAX232电平转换芯片的);   3、串口线(串口线质量也是很重要的)连得对不对(至少连3根线TXD、RXD、GND),包括发送接收的方向对不对;   4、下载操作步
[单片机]
<font color='red'>51</font>单片机串口收发设计的思考
nRF24L01p+AVR单片机ATmage88射频收发程序
单片机源程序如下: #define _nRF24L01_C_ #include nRF24L01.h INT8U CE_Status = 0; /* ================================================================================ Function : L01_GetCEStatus( ) Description : Get the status of the CE PIN Input : NONE Output: 1:CE=1, 0:CE=0 ===================================================
[单片机]
基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶
基本介绍 这个一个基于51单片机做的一个语音识别分类智能垃圾桶,我这里用的是STC89C52 通过我们说话来对垃圾词语进行分类。比如:垃圾桶(一级指令)易拉罐(垃圾词语),我们通过说话 说出关键字 让语音模块 接收到 —— 语音模块通过串口发指令给51单片机,针对指令 51单片机发指令和语音合成模块,让喇叭说话、 并且控制指令对应的舵机从而实现对垃圾桶开盖。实现起来其实不难。 器件 51单片机 LD3320语音模块 我用的是这个 飞音云店铺的 开源的。 SYN6288语音合成 SG90舵机(4个) 180°不带限位。 usb-ttl模块 垃圾桶四个(4个) 面包板(建议用) 其他 还有什么杜邦线啥的这里
[单片机]
基于<font color='red'>51</font>单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved