单片机sp--会发生什么? 51单片机中什么指令会影响SP的值?
\u5355\u7247\u673a\u4e2d\u7684pc\u548csp\u6709\u4ec0\u4e48\u5173\u7cfb?\u5355\u7247\u673a\u4e2d\u7684pc\u548csp\u6ca1\u6709\u4ec0\u4e48\u4efb\u4f55\u5173\u7cfb\uff0c\u522b\u5f80\u4e00\u5757\u626f\u3002
PC\u662f\u63a7\u5236\u7a0b\u5e8f\u6267\u884c\u7684\uff0c\u662f16\u8ba1\u6570\u5668\u3002
SP\u662f\u5806\u6808\u6307\u9488\uff0c\u6307\u5411\u5806\u6808\u64cd\u4f5c\u7684\u5355\u5143\u5730\u5740\uff0c\u662f8\u4f4d\u8ba1\u6570\u5668\u3002
\u5355\u7247\u673a\u590d\u4f4d\u65f6\u4f1a\u81ea\u52a8\u7ed9SP\u4e00\u4e2a\u4f4d\u7f6e\u662f07H\uff0c\u7528\u6c47\u7f16\u5199\uff0c\u53efMOV SP,#60H
\u5c06SP\u4f4d\u7f6e\u79fb\u5f00\uff0c\u4e0d\u7834\u574f\u7a0b\u5f0f\u7801
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。 程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。单片机的基本结构
单片机由运算器、控制器、存储器、输入输出设备构成。嵌入式系统
单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
单片机发展史
1971年intel公司研制出世界上第一个4位的微处理器;Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel 4004,标志着第一代微处理器问世,微处理器和微机时代从此开始。因发明微处理器,霍夫被英国《经济学家》杂志列为“二战以来最有影响力的7位科学家”之一 。 1971年11月,Intel推出MCS-4微型计算机系统(包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微处理器 )其中4004(下图)包含2300个晶体管,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,最初售价为200美元。 1972年4月,霍夫等人开发出第一个8位微处理器Intel 8008。由于8008采用的是P沟道MOS微处理器,因此仍属第一代微处理器。 1973年intel公司研制出8位的微处理器8080;1973年8月,霍夫等人研制出8位微处理器Intel 8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生。 主频2MHz的8080芯片运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS(Million Instructions Per Second )。 1975年4月,MITS发布第一个通用型Altair 8800,售价375美元,带有1KB存储器。这是世界上第一台微型计算机。 1976年intel公司研制出MCS-48系列8位的单片机,这也是单片机的问世。 Zilog公司于1976年开发的Z80微处理器,广泛用于微型计算机和工业自动控制设备。当时,Zilog、Motorola和Intel在微处理器领域三足鼎立。 20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机。MCS-51系列单片机无论是片内RAM容量,I/O口功能,系统扩展方面都有了很大的提高。
编辑本段单片机的硬件特性
1、单片机集成度高。单片机包括CPU、4KB容量的ROM(8031 无)、128 B容量的RAM、 2个16位定时/计数器、4个8位并行口、全双工串口行口。 2、系统结构简单,使用方便,实现模块化; 3、单片机可靠性高,可工作到10^6 ~10^7小时无故障; 4、处理功能强,速度快。
编辑本段单片机的应用
单片机的应用 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在智能仪器仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。 2.在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管 学习应用六大重要部分
单片机学习应用的六大重要部分
一、总线:
我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。
二、数据、地址、指令:
之所以将这三者放在一起,是因为这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况: 1.地址(如MOV DPTR,1000H),即地址1000H送入DPTR。 2.方式字或控制字(如MOV TMOD,#3),3即是控制字。 3.常数(如MOV TH0,#10H)10H即定时常数。 4.实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的值。 理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。
三、P0口、P2口和P3的第二功能用法:
初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微处理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。
四、程序的执行过程:
单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。
五、堆栈:
堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动减2,每当执行一次POP指令,SP就(在原来值的基础上)自动加2。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
六、单片机的开发过程:
这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明: ORG 0000H LJMP START ORG 040H START: MOV SP,#5FH ;设堆栈 LOOP: NOP LJMP LOOP ;循环 END ;结束
编辑本段单片机学习
目前,很多人对汇编语言并不认可。可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。不过初学者可以不了解单片机的汇编语言,但一定要了解单片机具体性能和特点,不然在单片机领域是比较致命的。如果不考虑单片机硬件资源,在KEIL中用C胡乱编程,结果只能是出了问题无法解决!可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者,因为单片机的C语言虽然是高级语言,但是它不同于台式机个人电脑上的VC++什么的。单片机的硬件资源不是非常强大,不同于我们用VC、VB等高级语言在台式PC上写程序,毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。还有就是在单片机编程中C语言虽然编程方便,便于人们阅读,但是在执行效率上是要比汇编语言低10%到20%,所以用什么语言编写程序是要看具体用在什么场合下。总的来说做单片机编程要灵活使用汇编语言与C语言,让单片机的强大功能以最高是效率展示给用户。 以8051单片机为例讲解单片机的引脚及相关功能; 《单片机引脚图》 单片机引脚图
40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。 ⒈ 电源: ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; 注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。 ⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 ⒊ 控制线:控制线共有4根, ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址 ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 ⑵ PSEN:外ROM读选通信号。 ⑶ RST/VPD:复位/备用电源。 ① RST(Reset)功能:复位信号输入端。 ② VPD功能:在Vcc掉电情况下,接备用电源。 ⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。 ① EA功能:内外ROM选择端。 ② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 ⒋ I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。 P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线) 5. P3口第二功能 P30 RXD 串行输入口 P31 TXD 串行输出口 P32 INT0 外部中断0(低电平有效) P33 INT1 外部中断1(低电平有效) P34 T0 定时计数器0 P35 T1 定时计数器1 P36 WR 外部数据存储器写选通(低电平有效) P37 RD 外部数据存储器读选通 希望楼主采纳~谢谢
不知道
绛旓細鍗曠墖鏈洪噷sp鏄爢鏍堟寚閽銆傚爢鏍堟寚閽圫P鑻辨枃鍏ㄧО涓簊tack pointer锛屾槸鍗曠墖鏈烘帶鍒跺櫒鐨勭粍鎴愰儴浠朵箣涓锛屼笌鏃舵帶鍒堕昏緫鐢佃矾銆佹寚浠ゅ瘎瀛樺櫒璇戠爜鍣ㄣ佸湴鍧鎸囬拡DPTR銆佺▼搴忚鏁板櫒绛夐儴浠跺叡鍚岀粍鎴怌PU鐨勭缁忎腑鏋傚爢鏍堟寚閽堝湪鍗曠墖鏈洪噷鐨勪綔鐢ㄦ槸闅忔椂璺熻釜鏍堥《鍦板潃锛屼互渚垮瓨鍙栧崟鐗囨満鐨勬暟鎹傛瘡褰撴墽涓娆USH鎸囦护鏃讹紝SP灏憋紙鍦ㄥ師鏉ュ肩殑鍩虹涓婏級鑷...
绛旓細鍦51鍗曠墖鏈涓紝鏉SP鏍堟寚閽堟槸涓涓笓鐢ㄧ殑8浣嶅瘎瀛樺櫒锛岀郴缁熷浣嶅悗锛孲P鍒濆鍖栦负07H锛屼娇寰楀爢鏍堟寚閽堝疄闄呬笂鏄敱08H鍗曞厓寮濮嬨傚湪鍝嶅簲涓柇鎴栧瓙鑷▼搴忚皟鐢ㄦ椂锛鍙戠敓鍏ユ爤鎿嶄綔锛屽叆鏍堢殑鏄16浣峆C鍊硷紱51涓湁PUSH鍘嬪叆鍜孭OP寮瑰嚭鏍堟搷浣滄寚浠わ紝濡傛湁蹇呰锛屽湪涓柇鎴栬皟鐢ㄥ瓙绋嬪簭鏃跺彲鐢≒OSU鎸囦护鎶奝SW鎴栧叾瀹冮渶瑕佷繚鎶ょ殑瀵勫瓨鍣ㄧ殑鍐呭...
绛旓細鍗曠墖鏈鑷姩瀹屾垚璧嬩簣瀹冪殑浠诲姟鐨勮繃绋,涔熷氨鏄崟鐗囨満鎵ц绋嬪簭鐨勮繃绋,鍗充竴鏉℃潯鎵ц鐨勬寚浠ょ殑杩囩▼,鎵璋撴寚浠ゅ氨鏄妸瑕佹眰鍗曠墖鏈烘墽琛岀殑鍚勭鎿嶄綔鐢ㄧ殑鍛戒护鐨勫舰寮忓啓涓嬫潵,杩欐槸鍦ㄨ璁′汉鍛樿祴浜堝畠鐨勬寚浠ょ郴缁熸墍鍐冲畾鐨,涓鏉℃寚浠ゅ搴旂潃涓绉嶅熀鏈搷浣;鍗曠墖鏈烘墍鑳芥墽琛岀殑鍏ㄩ儴鎸囦护,灏辨槸璇ュ崟鐗囨満鐨勬寚浠ょ郴缁,涓嶅悓绉嶇被鐨勫崟鐗囨満,鍏舵寚浠ょ郴缁熶害涓嶅悓銆...
绛旓細鍗曠墖鏈洪噷sp鏄爢鏍堟寚閽銆傚爢鏍堟寚閽圫P鑻辨枃鍏ㄧО涓簊tack pointer锛屾槸鍗曠墖鏈烘帶鍒跺櫒鐨勭粍鎴愰儴浠朵箣涓锛屼笌鏃舵帶鍒堕昏緫鐢佃矾銆佹寚浠ゅ瘎瀛樺櫒璇戠爜鍣ㄣ佸湴鍧鎸囬拡DPTR銆佺▼搴忚鏁板櫒绛夐儴浠跺叡鍚岀粍鎴怌PU鐨勭缁忎腑鏋傚爢鏍堟寚閽堝湪鍗曠墖鏈洪噷鐨勪綔鐢ㄦ槸闅忔椂璺熻釜鏍堥《鍦板潃锛屼互渚垮瓨鍙栧崟鐗囨満鐨勬暟鎹
绛旓細8031鍗曠墖鏈涓婄數澶嶄綅鏃SP鐨勫唴瀹规槸锛07锛塇銆傚鏋滀笉瀵筍P杩涜淇敼锛屽垯绗竴涓叆鏍堢殑鏁版嵁浼氳瀛樻斁鐨勭墖鍐匯AM鍦板潃鍙蜂负锛08锛塇鐨勫崟鍏冧腑銆
绛旓細绋嬪簭鍙戜笂鏉ョ湅鐪嬶紝鍙寰楁眹缂栫粰SP璧嬪
绛旓細51鍗曠墖鏈涓SP鏄爢鏍堟寚閽堝瘎瀛樺櫒,瀛樻斁鐫褰撳墠鍫嗘爤鍦板潃銆傚爢鏍堢敤浜庡瓨鍌ㄥ瓙绋嬪簭璋冪敤銆佷腑鏂▼搴忚皟鐢ㄦ椂绋嬪簭杩斿洖鐨勫湴鍧,鎴栬呯敤鏉ヤ复鏃朵繚瀛樻煇涓瀵勫瓨鍣ㄧ殑鍊笺俓x0d\x0a闄や簡鍒濆鍖栧爢鏍堟椂鐩存帴缁橲P璧嬪,SP鏄惧紡瀛樺湪,鍏跺畠鐨勫SP鏈夊奖鍝嶇殑鎸囦护,瀵筍P鐨勬搷浣滈兘鏄殣寮忕殑,灏辨槸璇碨P骞朵笉鍑虹幇鍦ㄦ寚浠ゆ搷浣滄暟褰撲腑銆俓x0d\x0a渚嬪:\x0d\x0a...
绛旓細SP 鎸囩殑鏄爢鏍堟寚閽 璇︾粏瑙i噴濡備笅锛氬爢鏍堟槸涓绉嶆暟鎹粨鏋勶紝鍜屼粬鐩哥被浼肩殑鏈夐槦鍒椼傚鏋滃鏁版嵁缁撴瀯鏈夎繖鏍风殑瑕佹眰锛氬厛灏嗘暟鎹斁鍒拌鍖哄唴锛屽厛鏀剧殑鍚庡嚭鍚庢斁鐨勫厛鍑恒傝繖绉嶇粨鏋勮繖鏄爢鏍堛備篃灏辨槸璇村爢鏍堢殑鏁版嵁鎿嶄綔鍙e彧鏈変竴绔傚畠甯哥敤鍒板洖鏈旂瓑绠楁硶褰撲腑锛岃鍒版暟鎹粨鏋勶紝褰撶劧灏辫鎻愬埌绠楁硶銆傝岄槦鍒楃殑鎿嶄綔姝eソ涓庝箣鐩稿弽銆傚厛...
绛旓細锛嶏紞锛 鎶30H璧嬬粰浜哠P锛岀О涓鸿缃爤搴曘備互鍚庯細PUSH ACC 锛屽氨鎶夾CC鐨勫唴瀹瑰瓨鏀惧埌31H鍗曞厓锛汸USH PSW 锛屽氨鎶奝SW鐨勫唴瀹瑰瓨鏀惧埌32H鍗曞厓锛汸USH B 锛屽氨鎶夿鐨勫唴瀹瑰瓨鏀惧埌33H鍗曞厓銆傗︹﹀脊鍑烘椂锛岃鐢≒OP鎸囦护銆傚埄鐢ㄥ爢鏍堬紝灏变笉鐢ㄧ鍏蜂綋鐨勫唴瀹瑰瓨鏀惧湪浠涔鍗曞厓浜嗭紝SP浼鑷姩绠$悊銆
绛旓細DPTR鏄釜16浣嶇殑瀵勫瓨鍣紝涓昏鐢ㄦ潵瀵诲潃锛屼粬瀛樺偍鐨勬槸绌洪棿鍦板潃銆傚洜姝ゅ彲瀵诲潃瀛樺偍64k鐨勮寖鍥淬SP鍫嗘爤鎸囬拡锛屼富瑕佺敤鏉ヨ皟鐢ㄥ瓙绋嬪簭鎴栬呰繘鍏ヤ腑鏂殑鏃跺欎繚瀛樺綋鍓嶇殑瀵勫瓨鍣ㄥ唴鐨勬暟鎹紝鍜屽綋鍓嶇▼搴忚鏁板櫒鍊笺傚湪绋嬪簭杩斿洖鍚庢妸鍐呭寮瑰嚭銆傚洖鍒版柇寮鐨勭▼搴忔澶勭户缁墽琛屻