C8051F单片机端口配置

发布者:脑电狂潮最新更新时间:2022-05-18 来源: eefocus关键字:C8051F  单片机  端口配置 手机看文章 扫描二维码
随时随地手机看文章

前言

最近项目上使用C8051单片机,我也是首次用这款单片机,所以项目开发过程中还是或多或少的遇到了一些问题,在此做一个总结,方便以后再次使用,避免相同问题重复犯错。


一、涉及的寄存器

PxMDIN:端口输入方式寄存器,有模拟输入和非模拟输入两种方式

PxMDOUT:端口输出方式寄存器,开漏输出和推挽输出两种方式

PxSKIP:端口跳过寄存器

Px:端口寄存器


二、实例

1.配置端口输入

//P0.X(1 3 5 7)为数字输入,开漏输出,普通IO功能

P0MDIN |= (1<<1) | (1<<3) | (1<<5) | (1<<7);     

P0MDOUT &= ~((1<<1) | (1<<3) | (1<<5) | (1<<7)); 

P0SKIP |= (1<<1) | (1<<3) | (1<<5) | (1<<7); 

//enable crossbar

XBR1     = 0x40; 


2.配置端口输出

//P0.X(2 4 6)为数字输入,推挽输出,普通IO功能

P0MDIN |= ((1<<2) | (1<<4) | (1<<6));

P0MDOUT |= ((1<<2) | (1<<4) | (1<<6));

P0 &= ~((1<<2) | (1<<4) | (1<<6));

//enable crossbar

XBR1     = 0x40;


细节说明

端口的官方文档原理图说明如下:

请添加图片描述

这里面仍然有好几个细节需要格外注意.


复位状态

请添加图片描述

复位状态位漏极开漏,弱上拉使能。这一条在什么时候使用呢?假设端口没有明确的电平,项目问题无法确定是硬件问题或软件问题时,我们可以让程序处在复位状态就查看硬件电路的信号状态,缩小问题定位范围(当然,也可以擦除程序)

在这里插入图片描述

端口寄存器是配置端口输出高电平还是低电平,复位时为高电平。这里会出现的问题是:假如单片机引脚没有明确的电气特性,那在上电瞬间可能会引起误动作(尤其在端口作输出功能时),因为上电瞬间端口复位输出高电平。


解决办法:

1、硬件电路设计上下拉电阻,给端口明确的初始状态(最稳定的办法)

2、在端口配置时(crossbar配置前,这一点很重要),给Px端口寄存器一个需要的电平值,这样能保证端口引脚误动作


优先权交叉开关译码器

因为C8051F单片机端口采用重映射,每个端口都支持多种功能(不像STM32每个引脚只支持特定的一种、三种或三种功能),所以就会涉及到优先把端口重映射给那种功能的机制,优先权交叉开关译码器就是为了解决这样的问题出现的。

那到底怎么配置呢?这个鬼东西可能是这系列单片机中最绕,说得最晦涩的,官方文件我很想吐槽,很难读懂,网上的很多博客也是说得不清不楚,我自己也说不清楚

来点实际的,官方提供了一个叫Configuration Wizard 2的配置工具(也算是官方对我们的一个补偿),功能很强大,主要是指导我们根据功能配置寄存器,不要误配置,漏配置。


下载地址:

https://www.silabs.com/developers/8-bit-8051-microcontroller-software-studio

在这里插入图片描述

根据这个软件,我们可以配置寄存器,也可以逆向思维理解PxSKIP寄存器置0和置1的意义,这个地方你可以自己琢磨,这个工具都给你了,还要我讲得清清楚楚就过分了(如果不想做,也太懒了吧,换行吧,不适合做技术)


弱上拉

在这里插入图片描述

有两点需要说明:

1、弱上拉是针对所有管脚的,弱上拉功能使能时,所有引脚都弱上拉了

2、弱上拉的能力是很弱的,所以才“WEAKPUD不影响被配置为推挽方式的端口I/O”.仅仅只是能提供一个高电平状态,这也是端口寄存器未配置时,端口复位会变成高电平的原因。在实际使用中,我未配置端口寄存器时使用弱上拉去驱动一个原边5mA的光耦都驱动不了。

关键字:C8051F  单片机  端口配置 引用地址:C8051F单片机端口配置

上一篇:SPI串行总线协议
下一篇:8051 的串口通讯及应用

推荐阅读最新更新时间:2024-11-08 10:20

51单片机DS18B20温度测量
大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了步进电机控制的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习数字温度传感器DS18B20的基本原理与使用方法。 先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。 单总线温度传感器DS18B20简介 DS18B20是DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗
[单片机]
详解STM32单片机堆栈
学习STM32单片机的时候,总是能遇到“堆栈”这个概念。分享本文,希望对你理解堆栈有帮助。 对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数据。堆栈操作由PUSH、POP两条指令来完成。而程序内存可以分为几个区: 栈区(stack) 堆区(Heap) 全局区(static) 文字常亮区程序代码区 程序编译之后,全局变量,静态变量已经分配好内存空间,在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数指针入栈,保护现场,以便于中断处理完之后再回到之前执行的函数。 栈是从高到低分配,堆是从低到高分配。 普通单片机与STM32单片机中堆栈的区别 普通单片机启动时,不需要用b
[单片机]
详解STM32<font color='red'>单片机</font>堆栈
PIC系列单片机程序设计基础分析与应用 上
  PIC单片机的查表程序可以利用子程序带值返回的特点来实现。具体是在主程序中先取表数据地址放入W,接着调用子程序,子程序的第一条指令将W置入PC,则程序跳到数据地址的地方,再由“RETLW”指令将数据放入W返回到主程序。下面程序以F10放表头地址。       MOVLW  TABLE     ;表头地址→F10         MOVWF  10           ┋       MOVLW  1        ;1→W,准备取“1”的线段值       ADDWF  10,1      ;F10+W =“1”的数据地址       CALL  CONVERT       MOVWF  6        ;线段值置到B口,点
[单片机]
51单片机多路DS18B20温度测量程序
仿真图: 仿真文件和完整 源码 的下载地址: http://www.51hei.com/bbs/dpj-20600-1.html 源代码: #include reg51.h #include intrins.h #include string.h #include stdio.h #define uchar unsigned char #define uint unsigned int sbit RS= P2^0 ; // 液晶显示 引脚定义 sbit RW= P2^1 ; sbit EN= P2^2 ; uint t=0,dian=0; uchar LCD_LINE_ONE ={ tp1: };
[单片机]
51<font color='red'>单片机</font>多路DS18B20温度测量程序
单片机中的_nop_()函数
在keil C51中,直接调用库函数: #include intrins.h // 声明了void _nop_(void); _nop_(); // 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用 _nop_ 函数,这个函数相当汇编NOP指令,延时几微秒。 NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。
[单片机]
Silicon Labs:功能密度推动8位MCU市场发展
  芯科实验室有限公司(Silicon Laboratories),Ross Bannatyne   “越小越好”是电子工业的真理。原始设备制造商们(OEM)总在孜孜不倦地寻求使产品更为小巧美观的技术,同时尽量增加产品功能、减少能量消耗。这一趋势使半导体厂商受到直接影响,他们必须想方设法提高功能密度,这就意味着产品要以尽量小的空间提供尽可能多的功能。即使最基本的电子系统也往往需要具备数据采集功能和适当的处理功能,并配备多种通信接口。由于控制系统要与转换器、传感器、键盘以及串行通讯系统等输入相连,大多数嵌入式系统都使用8位MCU(微控制器)。与输出端相连的则为电机、螺线管等促动器,以及LED(发光二极管)和其它指示器。此类电子设
[焦点新闻]
异种单片机共享片外存储器及其与微机通信的方法
    摘要: 介绍了通用单片机(MCU)AT89C51与信号处理单片机(DSP)TMS320C32通过共享片外随机存储器实现板间通信的方法,并给出了总线隔离硬件电路与软件控制流程。文中还简要分析了AT89C51与微生机盎然进行串行通信的软硬件设计,通过扩展AT89C51间接实现了TMS320C32与通用单片机或微机之间的通信。     关键词: 单片机  DSP  数字信号处理器  共享存储器  串口通信 TMS320系列数据信号处理单片机(DSP)在测控、仪器仪表、图象处理、计算机视觉与声信号处理等领域得到了越来越广泛的应用。DSP获取原始采集数据和输出处理结果一般有两种途径:一是通过串行口,另一是通过数据
[工业控制]
天津大学李刚:家庭健康中的单片机技术
  李刚老师,来自天津大学精密仪器学院生物工程医学系,他研究了很多生物医学方面的东西,与我们未来的健康生活息息相关。      以下为李刚老师演讲《家庭健康中的单片机技术》实录:   特别高兴今天有机会跟大家介绍一下过去一两年在科研上的一些经验体会。相比前面的老师们的介绍,我这个就是小儿科,因为我本身(不是谦虚的话)就只是一个单片机的爱好者,只不过是用的单片机用的比较多而已。   家庭健康显然是个大趋势,我们现在的生活理念整个都在改变,健康是第一个,绿色,人希望我们生活的质量是高品质的,并不是活着就行,而是有质量有素质。那么医疗的理念也在发生变化,当然医疗现在成为三座大山之一,大家都感受很沉重,实际上不管是WTO(还是其他的相关
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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