在家电产品和工业应用系统中,定时和计数是两种常用的功能,如:微波炉加热计时和流水线上产品数目统计等。MCS-51单片机内部集成的两个可编程定时/计数器T0和T1使用灵活、方便,在仪器仪表等工业产品中应用广泛。
MCS-51单片机有两个外部中断源INT0和INT1,它们分别在P3.2和P3.3引脚出现低电平或下降沿信号时向单片机发出中断请求。外部中断可用于检测单片机外部发生的事件,如键盘敲击和特定脉冲发生的次数等。
④处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现行程序。接着,中断部件根据中断级去指定相应的主存单元,并把被中断的指令地址和处理机当前的主要状态信息存放在此单元中。
当多个同级别中断同时发出中断请求时,单片机中断系统将按照自然优先级别进行中断排序,并首先响应其中自然优先级别最高的中断。
MCS-51单片机中断系统的结构如图4-1所示。MCS-51单片机有5个中断源,分别是2个外部中断源、2个定时/计数器中断源和1个串行接口中断源。与中断系统有关的寄存器有TCON、SCON、IE和IP,它们都可以按位寻址,其中的每一位都可以通过指令来设置。
单片机系统用户可以通过中断系统的软件和硬件实现对某一中断请求的开放(或允许)和屏蔽。开放是指中断请求发生时中断系统响应该请求,并完成相应的中断服务处理工作;相反地,屏蔽是指中断系统既不接收中断请求,也不进行中断处理。
控制转移指令能够改变单片机程序寄存器(PC)的值,即改变单片机从ROM中读取指令的顺序,从而改变程序执行顺序。控制转移指令包括以下几类:无条件转移指令、条件转移指令和子程序调用及返回指令等。
在单片机与外部设备(简称外设)的数据传送过程中,单片机处于核心地位,所谓的数据输入和输出都是相对单片机而言。数据由外设传送至单片机,为“输入”,反之为“输出”。通常,单片机与外设的数据传送速度差别较大,因此,选择恰当的数据传送时间和传送时间间隔,是保证数据正确传送的关键。在单片机系统中,有三种解决该问题的方法,即程序控制传送、中断式传送和DMA传送。
逻辑运算可以分成字节逻辑运算和位逻辑运算两大类,其指令格式见表3-8。当逻辑运算指令的目的操作数是累加器A、程序状态字寄存器PSW或进位标志位CY时,PSW会受到影响,否则PSW不受影响。
ADD指令将源操作数和累加器A中的数相加,加法的结果存入累加器A,并且运算结果会影响PSW中的CY、OV、AC和P标志位。ADD指令对标志位的影响如下:当加法结果的第7位有进位时,则进位标志位CY被置1,否则被清0;如果加法结果的第3位有进位,则辅助进位标志位AC被置1,否则被清0;如果加法结果的第6位和第7位的进位情况不一致,则溢出标志位OV被置1,否则被清0;运算结束时,奇偶标志位P的值由累加器A中的数决定,若累加器A中的值以二进制表示后,其中“1”的个数为奇数个,则P为1,否则P为0。
单片机工作时,经常需要进行算术逻辑运算等操作,而数据通常存放于存储器和寄存器中,因此进行有效的数据传送、获取操作数是单片机程序设计的基础。
堆栈指令是FX系列中新增的基本指令,用于多重输出电路,为编程带来便利、在FX系列PLC中有11个存储单元,它们专门用来存储程序运算的中间结果,被称为栈存储器。
(片内RAM)传送指令MOV(Move)把一个字节、字或双字的操作数从源位置传送到目的位置,源操作数的内容不变。可以实现立即数到通用寄存器或主存的传送,通用寄存器与通用寄存器、主存或段寄存器之间的传送,主存与段寄存器之间的传送。该操作属于复制性质,不属于搬家性质。
在指令“MOV A,#12H”中,立即数#12H是源操作数,紧随操作码74H之后存放在ROM中。该指令执行时,单片机先从ROM中读取操作码74H,对操作码74H解码后,确定要进行的操作是将一个8位立即数送入累加器A,接下来单片机从紧邻操作码的下一个存储单元中取得立即数12H并送入累加器A。另外,该指令的目的操作数累加器A隐含在操作码中,没有明确给出。
MCS-51单片机的汇编语言程序由若干条汇编语言指令和伪指令构成。指令存放在程序存储器中,被单片机读取并执行,且执行结果将影响单片机自身的状态。