文章目录

  • 前言
  • 一、涉及的寄存器
  • 二、实例
    • 1.配置端口输入
    • 2.配置端口输出
  • 细节说明
    • 复位状态
    • 优先权交叉开关译码器
    • 弱上拉

前言

最近项目上使用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 crossbarXBR1     = 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 crossbarXBR1     = 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单片机端口配置相关推荐

  1. 华大单片机HC32L130/HC32L136红外端口配置

    华大单片机HC32L130/HC32L136红外端口配置 HC32L130一共有三个引脚可以配置成红外38.4KHZ输出引脚 #define PIN_PWM_IR GpioPortB, GpioPin ...

  2. 华大单片机GPIO配置

    目录 端口结构介绍 端口相关配置介绍 端口配置操作流程 端口复用配置为模拟端口操作流程 端口复用配置为数字通用端口操作流程 端口上拉使能配置操作流程 端口下拉使能配置操作流程 端口增强驱动配置操作流程 ...

  3. Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)

    端口映射 映射容器内应用的服务端口到本地宿主主机 1. 从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的.当容器中运行一些网络应用,要 ...

  4. 华为新版交换机端口配置由TRUNK改为ACCESS

    在华为新版交换机端口配置由TRUNK改为ACCESS遇到的现象: 在接口模式下直接修改TRUNK,报错: [Quidway-GigabitEthernet0/0/7]port link-type ac ...

  5. 博达交换机镜像端口配置_“量身定制”的轨道交通工业以太网交换机,RT FORUM2019春季大会智慧解决方案12...

    工业以太网交换机(Industrial etherent switch)是满足工业现场需要,技术上与商业以太网交换机兼容,而实时通讯.可靠性.稳定性.安全性.环境适应性等各方面要求高于商业以太网交换机 ...

  6. 配置ssl证书_Nginx监听443端口配置SSL证书

    1.先去宝塔:https://www.bt.cn/申请一个免费SSL证书:2.点支付订单后,还需要再列表 验证域名,验证域名需要在自己的域名解析配置txt类型字符串值如下,解析值在宝塔SSL申请列表详 ...

  7. OVS DPDK--物理端口配置(三)

    netdev数据路径允许关联DPDK支持的物理端口,以便为主机提供高性能的入口/出口流量. 一.快速示例 此示例演示如何绑定两个dpdk端口到一个已有的网桥br0上,绑定的物理端口由硬件ID标识,分别 ...

  8. apache多站点配置+多端口配置

    Apache多站点配置 这种方法是配置不同的地址访问不同的文件夹的配置1:修改本机的hosts文件,如下: 示例:127.0.0.1 localhost127.0.0.1 www.dede.com12 ...

  9. centos 7 防火墙和端口配置

    开启redis端口,修改防火墙配置文件     vi /etc/sysconfig/iptables 加入端口配置 -A RH-Firewall-1-INPUT -m state --state NE ...

最新文章

  1. git cherry-pick
  2. 《巫师 3:狂猎》:传统叙事在开放世界中的水土不服
  3. include element into ABAP word document
  4. 如何利用python在一个wen'dang'li_如何利用Python网络爬虫给自己跟朋友来一份穷游攻略!走到哪里穷到哪里的哦!...
  5. 设计模式---面向对象的设计原则概述
  6. SQL Server 2005 实现数据库同步备份 过程--结果---分析
  7. CSS类选择器选择多个类用逗号隔开
  8. CSS美化超链接样式
  9. 运维第二篇:Docker--Harbor私有镜像仓库搭建
  10. 阅读器背景推荐和效果图
  11. sl400升级win10_联想SL400全安装WIN7(官方最完美教程).doc
  12. 服务器后台自动运行程序和停止
  13. Work Stealing
  14. python运算符用来计算集合并集的_Python 运算符中用来计算集合并集的是 _______ 。_学小易找答案...
  15. 二级域名泛解析,让iis支持二级域名泛解析
  16. c++二维矩阵顺时针和逆时针旋转
  17. 网站优化推广怎么做?
  18. 图像超分辨重构(SR)论文整理————适用于刚接触这个领域的初级研究者。(持续更新)
  19. h5--新增标签详细的学习
  20. [bugku]web后面的部分 【脚本,正则 md5 】(疯狂补题qaq) 重点是搞会了 而不是写博客 m...

热门文章

  1. html倒计时还有多少天,2022考研倒计时还有多少天
  2. [附源码]JAVA+ssm视频网站(程序+Lw)
  3. 京瓷m1025底灰_京瓷复印机打印有底灰
  4. SparkSQL知识点总结
  5. 要怎么做才能实现工厂智慧物流体系的建设
  6. python开发erp系统odoo_开源erp软件odoo在线开发环境部署实录
  7. asp.net921旅游博客网站系统
  8. php关于控制器和操作系统,ThinkPHP控制器学习(一)
  9. C语言的二维码识别驱动
  10. VisSim.Comm.v4.5.08 (卫星、终端等的通信分析软件)