随着生产工艺的提高,大部分单片机片内都集成了大容量的程序存储器和数据存储器。因此,存储器扩展的需求正在降低。但是,学习存储器的扩展方法,将对更好地掌握单片机的时序和单片机系统设计技巧有很大的帮助。接下来,本节将首先介绍程序存储器的扩展方法。
与串口工作有关的特殊功能寄存器包括:串口控制寄存器SCON(图4-18中的TI和RI均是该寄存器中的位)、串口缓冲区寄存器SBUF和电源控制寄存器PCON(图4-18中的SMOD是该寄存器中的位)。
在并行通信中,数据的所有二进制位在多条并行的传输线上同时传送,如图4-14a所示。在串行通信中,数据的所有二进制位在一条传输线上一位一位地按顺序逐个传送,如图4-14b所示。
定时/计数器实质上是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
【例1】利用定时功能产生方波信号。假设:单片机晶振频率为fosc=6MHz。要求:利用定时/计数器T0的工作方式1控制定时,在单片机P1.1引脚产生频率f=50Hz的方波。
在家电产品和工业应用系统中,定时和计数是两种常用的功能,如:微波炉加热计时和流水线上产品数目统计等。MCS-51单片机内部集成的两个可编程定时/计数器T0和T1使用灵活、方便,在仪器仪表等工业产品中应用广泛。
④处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现行程序。接着,中断部件根据中断级去指定相应的主存单元,并把被中断的指令地址和处理机当前的主要状态信息存放在此单元中。
当多个同级别中断同时发出中断请求时,单片机中断系统将按照自然优先级别进行中断排序,并首先响应其中自然优先级别最高的中断。
在单片机与外部设备(简称外设)的数据传送过程中,单片机处于核心地位,所谓的数据输入和输出都是相对单片机而言。数据由外设传送至单片机,为“输入”,反之为“输出”。通常,单片机与外设的数据传送速度差别较大,因此,选择恰当的数据传送时间和传送时间间隔,是保证数据正确传送的关键。在单片机系统中,有三种解决该问题的方法,即程序控制传送、中断式传送和DMA传送。
逻辑运算可以分成字节逻辑运算和位逻辑运算两大类,其指令格式见表3-8。当逻辑运算指令的目的操作数是累加器A、程序状态字寄存器PSW或进位标志位CY时,PSW会受到影响,否则PSW不受影响。
(片内RAM)传送指令MOV(Move)把一个字节、字或双字的操作数从源位置传送到目的位置,源操作数的内容不变。可以实现立即数到通用寄存器或主存的传送,通用寄存器与通用寄存器、主存或段寄存器之间的传送,主存与段寄存器之间的传送。该操作属于复制性质,不属于搬家性质。
在指令“MOV A,#12H”中,立即数#12H是源操作数,紧随操作码74H之后存放在ROM中。该指令执行时,单片机先从ROM中读取操作码74H,对操作码74H解码后,确定要进行的操作是将一个8位立即数送入累加器A,接下来单片机从紧邻操作码的下一个存储单元中取得立即数12H并送入累加器A。另外,该指令的目的操作数累加器A隐含在操作码中,没有明确给出。
单片机由中央处理器(含部分特殊功能寄存器)、内部RAM、程序存储器、各种外设(IO端口、定时器、串行接口、中断处理电路等等)及对应控制寄存器、时钟电路、复位电路等几部分组成。
中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。
Philips公司生产的与MCS 51单片机兼容的CMOS型单片机中,8XC552的功能最强,最具有代表性。它除了具有8051单片机的全部功能之外,又增加了大量的硬件:高速I/O、PWM、A/D、WDT、计数器的捕获/比较逻辑、串行总线I2CBUS等都集成在片内。
中断服务处理子程序可简称为中断服务处理程序或中断程序,用于处理单片机的中断事件,只能被单片机硬件调用执行,而不能通过子程序调用指令(ACALL或LCALL)调用执行。中断服务处理程序只能通过RETI指令返回。
AT89C系列与MCS 51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片(AT89C2051/1051),使整个硬件电路的体积更小。
前面列举的各项措施只解决了如何发现系统受到干扰和如何捕捉“跑飞”的程序,但仅此还不够,还要能够让单片机根据被破坏的残留信息自动恢复到正常的工作状态。硬件复位是使单片机重新恢复正常工作状态的一个简单有效的方法。硬件复位后CPU被重新初始化,所有被激活的中断标志都被清除,程序从0000H地址重新开始执行。
前面几项抗干扰措施都是针对I/O通道而言的。若干扰信号还未作用到CPU本身,则CPU还能正确地执行各种抗干扰程序;若干扰信号已经通过某种途径作用到CPU上,则CPU就不能按正常状态执行程序,从而引起混乱,这就是通常所说的程序“跑飞”。程序“跑飞”后使其恢复正常最简单的方法是让CPU复位,让程序从头开始重新运行。这种方法虽然简单,但需要人的参与,而且复位不及时。人工复位一般是在整个系统已经瘫痪,无计可施的情况下才不得已而为之的。因此在进行软件设计时就要考虑到万一程序“跑
由于数字量输入过程中干扰的作用时间较短,因此在采集数字信号时,可多次重复采集,直到若干次采样结果一致时,才认为其有效。例如通过A/D转换器测量各种模拟量时,如果有干扰作用于模拟信号上,就会使A/D转换结果偏离真实值。这时如果只采样一次A/D转换结果,就无法知道其是否真实可靠,而必须进行多次采样,得到一个A/D转换结果的数据系列,对这些数据系列进行各种数字滤波处理,最后才能得到一个可信度较高的结果值。