单片机 C语言 读引脚,单片机引脚读写操作
使用单片机时肯定会用到单片机的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语言 读引脚,单片机引脚读写操作相关推荐
- 单片机c语言编程下载,单片机C语言编程.doc
单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...
- 单片机c语言sfr,51单片机bit、sbin、sfr、sfr_16区别分析
1.bit和sbit都是C51扩展的变量类型. bit和int char之类的差不多,只不过char=8位, bit=1位而已.都是变量,编译器在编译过程中分配地址.除非你指定,否则这个地址是随机的. ...
- 电子密码锁课设单片机c语言,基于51单片机的电子密码锁综合课程设计
5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数10万次以上,擦写次数10万次以上 6.ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器 7.共8通道10位高速A ...
- stm08S单片机C语言编,STM8S单片机入门1(开发环境搭建)
STM8S单片机开发环境由三大部分组成,包括PC机上的开发软件(集成开发软件.驱动程序等).调试&编程器ST-LINK.目标单片机电路板.如下图所示: 1.PC机上开发软件 PC机上的软件包括 ...
- 51单片机c语言编程函数,单片机C语言教程:C51函数
其实一直出现在例子中的 main()也算是一个函数,只不过它比较特殊,编译时以它做为程序的开始段.有了函数C 语言就有了模块化的优点,一般功能较多的程序,会在编写程序时把每项单独的功能分成数个子程序模 ...
- 单片机C语言节日彩灯,单片机c语言节日彩灯控制器设计.docx
单片机c语言节日彩灯控制器设计 湖南涉外经济学院课程设计报告课程名称:单片机原理及应用报告题目:节日彩灯控制器的设计学生姓名:所在学院:信息科学与工程学院专业班级:电子信息工程1102班学生学号:指导 ...
- 单片机c语言设计数据,单片机C语言设计.doc
单片机C语言设计 第5章 单片机C语言程序设计 C-51的特点 C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机.DSP.ARM等. C语言程序本身不依赖于机器 ...
- c51单片机c语言程序,C51单片机的C语言程序设计.ppt
<C51单片机的C语言程序设计.ppt>由会员分享,可在线阅读,更多相关<C51单片机的C语言程序设计.ppt(44页珍藏版)>请在人人文库网上搜索. 1.2020/8/7,1 ...
- 单片机c语言孔雀开屏,单片机C语言案例步骤教学指南.doc
单片机C语言案例教程教学指南 一 本书的特色和教学目标 本书是中职学校电子专业的单片机基础教材.特色在于全书以"案例+项目"的形式展开,由26个案例和5个项目组成.案例为项目的前导 ...
- 单片机c语言孔雀开屏,单片机C语言案教程教学指南.doc
单片机C语言案教程教学指南 单片机C语言案例教程教学指南 一 本书的特色和教学目标 本书是中职学校电子专业的单片机基础教材.特色在于全书以"案例+项目"的形式展开,由26个案例和5 ...
最新文章
- component是什么接口_【Android每日一题】从Activity创建到View呈现中间发生了什么?...
- c语言指针要点,C语言指针的重点有哪些?
- 张继平院士:40年北大数学路 | 北大黄金一代是如何培养的
- CoreOS 和 Kubernetes 1.5 自主运行 Kubernetes、Container Linux
- python2.7安装git_[Centos]安装Git2.7.0
- 代理的JavaOne 2014观察
- .net平台的MongoDB使用
- HTML5响应式品牌服装设计类织梦模板
- Android控制文字水平间距android:letterSpacing
- python txt文件 报文分析_Python读写txt文本文件的操作方法全解析
- vue-cli的router/index.js跳转出问题了
- 图注意力网络(GAT) TensorFlow解析
- 面试再问 HashMap,求你把这篇文章发给他!
- 动态贝叶斯网络DBN
- Excel筛选后填充
- Java JNI调用kaldi动态链接库(Linux版本)
- wordpress themeforest
- 进入Java世界的第一个程序Hello world
- 红米note9pro和华为nova7哪个好
- 致童年,那些年我们逝去的岁月
热门文章
- 为什么微信无法打开html文件,微信网页版打不开怎么办?微信网页版无法打开的解决方法...
- 用微信网页版阅读文章
- Scratch3.0创意编程(基础篇):第11课 智能小车
- MATLAB学习笔记(二)——M文件
- graphpad7.04多组比较p值_GraphPad Prism 统计指南 | 什么是P值?
- xp系统禁用wmi服务器,windows xp系统启用WMI服务的方法
- 【电路】PT1000/PT100温度采集电路
- 痴情人, 浮生梦(上)
- scrapy爬虫框架结构
- 用java计算_用Java写的计算器