把学单片机过程中遇到的问题与大家分享
标签:
单片机常见问题指令cpu结构伪指令 |
分类: 单片机 |
一.单片机有4位、8位、16位、32位以及64位现在,请问的是在8位,16位,32位等等是什么意思?
答:
CPU内部总线的位数就是单片机的位数。这里的位也就是指单片机中CPU处理的数据的位数(一次处理信息的长度)。比如:51单机 属于8位机,就是CPU处理的数据是8位的。位数的高低体现了CPU处理能力的强弱。单片机总线位数越高,CPU一次能处理的数据量也就越大、处理速度也就越快。同样的主频下(即主频率),8位机只能处理8位信息长度,而16位机则可处理16为信息长度,处理能力当然更强速度更快了。
二.CPU经常挂在嘴边,但是cpu到底是什么?有什么部件组成?
答:
CPU是单片机的核心部件,由运算器、控制器和布尔处理器等组成。其功能是产生控制信号,把数据从存储器或输入口传送CPU或反向传送,还可以对输入数据进行算术、逻辑运算以及位操作处理。其中,运算器由算术逻辑单元ALU(Arithmetic Logic Unit)、累加器ACC(Accumalator)、暂存寄存器、程序状态字存储器PSW(Program Status Word)、布尔处理器和BCD码运算调整电路等电路构成。控制器包括定时控制逻辑(时钟电路、复位电路)、指令寄存器、指令译码器、程序计数器PC、堆栈指针SP、数据指针寄存器DPTR以及信息传送控制部件等。
三.单片机的指令把我搞的稀里糊涂,能不能用一个例子告诉我单片机执行指令的过程?
答:
指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。
取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。
分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操
作数,则寻找操作数地址。
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。
一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,
然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因
而一开机即可执行指令。
下面我们将举个实例来说明指令的执行过程:
开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际
上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。
例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,
0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是
:
1 程序计数器的内容(这时是0000H)送到地址寄存器;
2 程序计数器的内容自动加1(变为0001H);
3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H
的单元被选中;
4 CPU使读控制线有效;
5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所
以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。
由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一
个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存
储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H
。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要
求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此
,一条指令的执行完毕。单片机中PC="0002H",PC在CPU每次向存储器取指或取数时自动加1,单片机又进
入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一
条地执行指令,完成所有规定的功能。
希望对你有启发。
四.什么是伪指令?
答:伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序(机器码),它只是用来对汇编过程进行某种控制。标准的MCS—5l汇编程序(如Intel的ASM51)定义的伪指令常用的有以下几条:(1) ORG
汇编起始命令 格式: ORG 16位地址
其功能是规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址,
例如: ORG 2000H
START: MOV A,#64H
既规定了标号START的地址是2000H,又规定了汇编后的第一条指令码从2000H开始存放。
ORG可以多次出现在程序的任何地方,当它出现时,下一条指令的地址就由此重新定位。
(2) END ——汇编结束命令
END命令通知汇编程序结束汇编。在END之后所有的汇编语言指令均不予以处理。
(3) EQU 赋值命令
格式: 字符名称 EQU 项(数或汇编符号) EQU命令是把“项”赋给“字符名称”,注意这里的字符名称不等于标号(其后没有冒号),其中的项,可以是数也可以是汇编符号。
用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。因此,它可以是8位的、也可以是16位的。如:
AA EQU R1 ;AA就代表了工作寄存器Rl
MOV A, AA ;
(4) DATA 数据地址赋值命令
格式: 字符名称 DATA 表达式
(5) DB 定义字节命令
格式: DB〔项或项表]
(6) DW 定义字命令
格式: DW 16位数据项或项表
(7) DS 定义存储空间命令
格式: DS表达式
(8) BIT 位地址符号命令
格式: 字符名 BIT 位地址
五.什么是寻址?又什么是寻址方式?
答:寻址就是寻找指令中操作数或操作数所在地址。
寻址方式就是如何找到存放操作数的地址
也就是把操作数提取出来的方法,要十分熟悉,牢固掌握。
六.通过TCON可以选择中断触发方式,那么低电平触发和跳变触发有什么不同呢?
解释一:电平触发即51单片机每执行完一个指令都将INT0/INT1的信号读入IE0/IE1。因此IE0/IE1的中断请求信号随着INT0/INT1变化。如果送入INT0/INT1的中断请求信号时,51单片机未能及时检查到,而INT0/INT1的信号也随着变化,IE0/IE1的信号也发生变化,这样就会漏掉INT0/INT1的中断要求。
解释二:下降沿触发只要检测到送至INT0/INT1上的信号由高电平变为低电平时,中断请求标志位IE0/IE1就被设定为1,并且一直维持着1,直到此中断请求被接收为止,且必须用软件来清除IE0/IE1。
所以一般设置为跳变触发,除非有特殊需要。
把学单片机过程中遇到的问题与大家分享相关推荐
- 烦死人了,全彩led显示屏在使用过程中总是跳闸,原因跟解决方案分享
全彩led显示屏在使用的过程中总是出现跳闸现象,很是让人苦恼,是什么原因导致这一故障现象发生的呢?应该怎么避免显示屏在使用过程中总是跳闸呢?中品瑞科技带您深度解读,原因以及解决方案. 一.漏电保护器布 ...
- 海驾学车过程全揭秘——第八篇:科目二集训及考试
5.17号上午最后4个小时练完之后,下车刷卡然后到手续大厅约科目二考试.就是在一个本上登记一下自己的信息,车型,然后在备注里面写上周末集训就OK了.然后就是回家等通知. 记得过了2天吧,正在上班接到海 ...
- 海驾学车过程全揭秘——第二篇:迷迷糊糊的报名
要想学车,首先第一步想的就是选哪家驾校.习惯性地在网上搜索了一下,看了大家的推荐及评论,以及自己离驾校的位置,感觉海淀驾校还不错.选择了驾校接下来就是报名了. 也是在网上看都是找教练报名比较好,说每个 ...
- Java读取文件流用什么对象_使用Java IO流实现对文本文件的读写过程中,通常需要处理下列( )异常。_学小易找答案...
[论述题]请根据第一次平时作业的选题,结合第二次课内容,自拟一个论文提纲. [单选题]在 switch ( expression )语句中, expression 的数据类型不能是 ( ) [单选题] ...
- Java怎么学?在学Java的过程中要注意些什么呢?
Java是属于一种面向对象的编程语言,现在很多企业都是使用Java进行大项目的开发.所以在学习Java之后,从业前景是非常广阔的.那么,Java怎么学?在学Java的过程中要注意些什么呢?下面,跟着小 ...
- python处在哪个阶段_如何在学Python的过程中更好地成长技术
Python是一门编程语言,所以重点在于如何用好这门语言,只有能够做好项目,才能证明自己逐步掌握好了这门语言.在学习阶段,最终的目标是要尝试着自己用Python搭建一个网站,也算是对自己学习成果的一种 ...
- 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过 250250 立方厘米的等量橡皮泥,教大家做泥塑。在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮泥
小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过 250 立方厘米的等量橡皮泥,教大家做泥塑.在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮泥,于是她决定,在正式 ...
- 题目: 某学校需要一个能给学领前儿童自动出三个数加减法的算术题的程序,要求在运算过程中只能使用20以内的加减法且不能出现负数,并且未知数可以在等式的任何一位, 如 3 + 4 – 2 = ( ), 8
题目: 某学校需要一个能给学领前儿童自动出三个数加减法的算术题的程序,要求在运算过程中只能使用20以内的加减法且不能出现负数,并且未知数可以在等式的任何一位, 如 3 + 4 – 2 = ( ), 8 ...
- 凌波微课讲师文章|福建农林大学周顺桂团队ISME J:首次发现嗜热病毒参与超高温堆肥过程中碳氮养分转化过程
第一作者:廖汉鹏 通讯作者:周顺桂,Ville-Petri Friman 在线发表时间:2023.04.08 论文网页:https://doi.org/10.1038/s41396-023-01404 ...
最新文章
- 谷粒商城学习笔记——第一期:项目简介
- rhino-java中调用javascript
- CVPR2021 图像匹配挑战赛,双赛道冠亚军方案
- 弹出框口登录php代码,如何用JQuery写出登录弹出框
- 阅读笔记一——java高并发的性能优化
- Elasticsearch 存储模型
- IE9上特定网站不断崩溃的故障
- Servlet中的HttpServlet
- [CQOI2018] 解锁屏幕(状压dp)
- 网站压力测试软件(Apache JMeter)2.13 官方版 Error: Unable to access jarfile ApacheJMeter.jar
- C++内存管理(1)
- centos mysql无法启动 sock_【零基础学云计算】MYSQL的主从复制、读写分离
- vocabulary of ERP
- 21年计算机网络原理综合测评,(年对口升学计算机综合测评卷.doc
- 互联网开源贡献是什么意思_为什么我们为开源软件做出贡献?
- “Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法
- tcp/ip源代码(17)——ip_fragment
- Python开源机器学习项目实战
- Spring Cloud核心组件 侵立删
- 小卡与质数2全网最简单思路 看不懂你来打我