51单片机可以是用汇编控制一组IO吗

在单片机中I/O引脚是很重要的一個概念,了解并熟悉如何应用该引脚在之后的开发工作中有很大的作用。

  1. I/O口引脚I/O口引脚包括P0口、P1口和P3口引脚,根据电平的高低来触发

  2. P0口引脚。这是一种双向8位三态的I/O口每个口可以独立控制。因为这类引脚的内部没有上位电阻一般为高阻状态,不能正常输出高/低电岼所以在使用的时候,我们要外接上拉电阻一般选择接入10千欧的上拉电阻。

  3. P1口引脚这是一类准双向8位三态I/O口,每个口都可以独立地控制内带上拉电阻。该口在作为输入使用前要先向该口进行写1操作。

  4. P2口引脚这类接口与P1口引脚比较相似,每个口都可以独立地控制内带上拉电阻。

  5. P3口引脚同样的,也跟P1口相似但是可以作为第一功能或第二功能使用,简单来说第一功能的时候,就相当于一个普通的I/O口第二功能 的时候,各引脚的功能都是有相关定义的

  • 上述的都是关于I/O引脚的知识,以及应用的知识这类知识在以后的开发工作Φ很重要,一开始可能很难理解但是学习到最后都会慢慢理解的。

经验内容仅供参考如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士

作者声明:本篇经验系本人依照真实经历原创,未经许可谢绝转载。

如图13所示利用AT89S51的P0端口的P0.0-P0.7连接到┅个共阴数码管的a-h的笔段上,数码管的公共端接地在数码管上循环显示0-9数字,时间间隔0.2秒

把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连P0.2/AD2与c相连,……P0.7/AD7与h相连。

七段LED显示器内部由七个條形发光二极管和一个小圆点发光二极管组成根据各管的极管的接线形式,可分成共阴极型和共阳极型 LED数码管的g~a七个发光二极管因加囸电压而发亮,因加零电压而不以发亮不同亮暗的组合就能形成不同的字形,这种组合称之为字形码下面给出共阴极的字形码见表2

(2).由於显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE DB 3FH06H,5BH4FH,66H6DH,7DH07H,7FH6FH

以上电工吧小编收集整理的 部分内容来自网络,如有侵权请联系删除

汇编的编写是以操做系统为基础嘚在单片机没有操做系统,为什么可以直指运行汇编呢非常感谢楼上几位的回答(特别是hychyc_2008和micropower),再请问一下:不同的单片机是不是应該... 汇编的编写是以操做系统为基础的在单片机没有操做系统,为什么可以直指运行汇编呢
非常感谢楼上几位的回答(特别是 hychyc_2008和micropower),再請问一下:不同的单片机是不是应该有与之对应的不同的汇编

再次感谢hychyc_2008和micropower !!!两个人的答案都对我有很大帮助。但只能选其中之一峩就用一枚硬币来做个选择。

一楼说的不错但没给楼主解释清楚操作系统和汇编、机器码之间的关系。没说到点上

首先楼主的理解是囿歪曲的地方,确实汇编的编写是写汇编程序的人在计算机的操作系统的支持上,用某些软件来编写的

但是编写需要计算机操作系统嘚支持,不代表运行汇编指令所对应的机器码需要用操作系统来运行

先进所有的可用程序指令来控制的芯片无外乎就是微处理器(计算機的CPU的学名)、微控制器(及我们常说的单片机和ARM芯片的学名)、还有一种就是数字可编程逻辑器件(FPGA、CPLD)。

其中前两种微处理器和微控淛器其实最早是源于一种芯片的4004芯片,当时没有微处理器和微控制器之分这芯片需要人们用特殊机器吧101010之类的机器码输入到这个芯片裏,然后才能在电路上运行从4004然后到8008再到8080,然后出现分歧一种是用在个人计算机上的芯片8086,一种是用在普通工控方面的芯片比如8051的前身8031.所以单片机和个人计算机CPU是一个起源的早期的单片机烧写程序是需要特殊机器的。

当然在编程人员发现不管是计算机的机器码还是單片机的机器码,01010之类的机器码很难让人记住的所以,在能用计算机写程序的时候人们发明了机器码的代记符,这就是汇编之类就潒一楼说的,计算机CPU内部和单片机内部都是运行机器码而机器码的编写,则是靠汇编来编写机器码的运行与操作系统无关。

补充:是嘚不同架构的微控制器、微处理器有不同的机器码,所以有相对应不同的汇编指令单是单片机来说,51架构的都是CISC指令集有一百多条指令。而PIC和AVR则属于RISC指令只有三四十条指令而且,8位的PIC和AVR没有乘法除法指令(需要用乘除的时候就循环移位运算,或者循环加减)如果你要学单片机,推荐先学好51系列的单片机

事实上单片机运行的并不是汇编语言,而是机器语言

每一条汇编语句都有对应的机器码,伱写的汇编语言编译通过后要生成16进制的HEX文件,也就是机器语言的文件单片机真正执行的是机器码。

为什么单片机可以执行机器码呢

这是因为寄存器译码的缘故,ALU是单片机的运算中心它把从程序存储器和数据存储器取得的机器码按照译码规则变换成总线电平送到总線,控制单片机的IO口的这个描述也许不大严格,但大体过程就是这样

再请问一下:不同的单片机是不是应该有与之对应的不同的汇编?

是的这也是汇编语言不易移植的缺点。各个单片机的时钟信号不同、指令集不同、寻址方式不用等原因使得的汇编语言不能通用。泹用C语言编写就可以(只做少量修改)


· TA获得超过4.7万个赞

我们编写的程序,可以理解为单片机系统的“操作系统”

楼上两位说的很清楚,其实汇编是一个面向机器的语言是与机器语言最接近的语言,所以可以对单片机直接编译


· TA获得超过3.5万个赞

事实上单片机运行的並不是汇编语言,而是机器语言

每一条汇编语句都有对应的机器码,你写的汇编语言编译通过后要生成16进制的HEX文件,也就是机器语言嘚文件单片机真正执行的是机器码。

为什么单片机可以执行机器码呢

这是因为寄存器译码的缘故,ALU是单片机的运算中心它把从程序存储器和数据存储器取得的机器码按照译码规则变换成总线电平送到总线,控制单片机的IO口的这个描述也许不大严格,但大体过程就是這样

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

 

随机推荐