使用单片机时肯定会用到单片机的IO引脚。以51单片机P1口为例。内部结构如图所示

当单片机进行写操作时,引脚锁存器(D触发器)CLK端接收有效电平,然后内部总线上需要写的数据就会通过D触发器传输到Q'。当写1时Q'为0,使MOSFET截止,因此外部引脚电平为1.当写0时Q'为1,MOSFET饱和导通,此时引脚可以看成接地,所以引脚为0。

如果对单片机IO口进行读操作。由图可以看出读操作包括读寄存器和读引脚。以前知道有这两种区别,但是从来没仔细区分过。从图中可以看出读寄存器时读寄存器上的三态缓冲器打开,Q端的值直接传到了内部总线上,而下面的读引脚三台缓冲器是高阻态,读引脚时则相反。

汇编语言中对读寄存器和读引脚做了一定的区别,但说实话我在看汇编代码时还是区分不清两者的区别。现在大家对单片机编程应该大部分采用的都是C语言,在我看来,C语言中已经极大的淡化了读寄存器还是读引脚的区别。

有些人说a=P1是读引脚(a是某个字符变量),P1=P1|0x00是读寄存器(可能是认为这里P1进行了一次逻辑运算,只有寄存器中的值才能进行逻辑运算),但我在用C语言时感觉用P1=P1|0x00也是读的引脚。也有些人说看经过编译器编译后的汇编代码才能分辩出两者的区别,不知道这里大家怎么看读引脚和读寄存器?

在读引脚时需要先向引脚锁存器中写1。因为如果引脚寄存器中是0的话会导通MOSFET,使外部端口一直是低电平,即使外面接的是高电平在读引脚的时候也读的是0。以前知道需要这样做,但读引脚的时候一直没写过1,发现读的也对,现在我觉得这样写不符合规范。

一般来说单片机在上电复位后默认引脚寄存器的值是1,这样一来关断了MOSFET,而我们在使用单片机的时候如果这个引脚作为输入,也不会让它变成一会儿输出一会儿输入,使得能够准确的读出外部端口的值。现在我在写程序时如果端口做为输入引脚,我会在初始化里对其写一次1。当然,以后就不用写了,因为写了一次1后没有其他的写操作,引脚锁存器中会一直保持这个值不变。当然,如果某个单片机引脚同时作为输出和输入引脚复用时,则必须在输出完成后变成输入前先向其写1,再读引脚的值。

单片机 C语言 读引脚,单片机引脚读写操作相关推荐

  1. 单片机c语言编程下载,单片机C语言编程.doc

    单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...

  2. 单片机c语言sfr,51单片机bit、sbin、sfr、sfr_16区别分析

    1.bit和sbit都是C51扩展的变量类型. bit和int char之类的差不多,只不过char=8位, bit=1位而已.都是变量,编译器在编译过程中分配地址.除非你指定,否则这个地址是随机的. ...

  3. 电子密码锁课设单片机c语言,基于51单片机的电子密码锁综合课程设计

    5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数10万次以上,擦写次数10万次以上 6.ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器 7.共8通道10位高速A ...

  4. stm08S单片机C语言编,STM8S单片机入门1(开发环境搭建)

    STM8S单片机开发环境由三大部分组成,包括PC机上的开发软件(集成开发软件.驱动程序等).调试&编程器ST-LINK.目标单片机电路板.如下图所示: 1.PC机上开发软件 PC机上的软件包括 ...

  5. 51单片机c语言编程函数,单片机C语言教程:C51函数

    其实一直出现在例子中的 main()也算是一个函数,只不过它比较特殊,编译时以它做为程序的开始段.有了函数C 语言就有了模块化的优点,一般功能较多的程序,会在编写程序时把每项单独的功能分成数个子程序模 ...

  6. 单片机C语言节日彩灯,单片机c语言节日彩灯控制器设计.docx

    单片机c语言节日彩灯控制器设计 湖南涉外经济学院课程设计报告课程名称:单片机原理及应用报告题目:节日彩灯控制器的设计学生姓名:所在学院:信息科学与工程学院专业班级:电子信息工程1102班学生学号:指导 ...

  7. 单片机c语言设计数据,单片机C语言设计.doc

    单片机C语言设计 第5章 单片机C语言程序设计 C-51的特点 C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机.DSP.ARM等. C语言程序本身不依赖于机器 ...

  8. c51单片机c语言程序,C51单片机的C语言程序设计.ppt

    <C51单片机的C语言程序设计.ppt>由会员分享,可在线阅读,更多相关<C51单片机的C语言程序设计.ppt(44页珍藏版)>请在人人文库网上搜索. 1.2020/8/7,1 ...

  9. 单片机c语言孔雀开屏,单片机C语言案例步骤教学指南.doc

    单片机C语言案例教程教学指南 一 本书的特色和教学目标 本书是中职学校电子专业的单片机基础教材.特色在于全书以"案例+项目"的形式展开,由26个案例和5个项目组成.案例为项目的前导 ...

  10. 单片机c语言孔雀开屏,单片机C语言案教程教学指南.doc

    单片机C语言案教程教学指南 单片机C语言案例教程教学指南 一 本书的特色和教学目标 本书是中职学校电子专业的单片机基础教材.特色在于全书以"案例+项目"的形式展开,由26个案例和5 ...

最新文章

  1. component是什么接口_【Android每日一题】从Activity创建到View呈现中间发生了什么?...
  2. c语言指针要点,C语言指针的重点有哪些?
  3. 张继平院士:40年北大数学路 | 北大黄金一代是如何培养的
  4. CoreOS 和 Kubernetes 1.5 自主运行 Kubernetes、Container Linux
  5. python2.7安装git_[Centos]安装Git2.7.0
  6. 代理的JavaOne 2014观察
  7. .net平台的MongoDB使用
  8. HTML5响应式品牌服装设计类织梦模板
  9. Android控制文字水平间距android:letterSpacing
  10. python txt文件 报文分析_Python读写txt文本文件的操作方法全解析
  11. vue-cli的router/index.js跳转出问题了
  12. 图注意力网络(GAT) TensorFlow解析
  13. 面试再问 HashMap,求你把这篇文章发给他!
  14. 动态贝叶斯网络DBN
  15. Excel筛选后填充
  16. Java JNI调用kaldi动态链接库(Linux版本)
  17. wordpress themeforest
  18. 进入Java世界的第一个程序Hello world
  19. 红米note9pro和华为nova7哪个好
  20. 致童年,那些年我们逝去的岁月

热门文章

  1. 为什么微信无法打开html文件,微信网页版打不开怎么办?微信网页版无法打开的解决方法...
  2. 用微信网页版阅读文章
  3. Scratch3.0创意编程(基础篇):第11课 智能小车
  4. MATLAB学习笔记(二)——M文件
  5. graphpad7.04多组比较p值_GraphPad Prism 统计指南 | 什么是P值?
  6. xp系统禁用wmi服务器,windows xp系统启用WMI服务的方法
  7. 【电路】PT1000/PT100温度采集电路
  8. 痴情人, 浮生梦(上)
  9. scrapy爬虫框架结构
  10. 用java计算_用Java写的计算器