编写C语言程序时特点如下:①一个C语言源程序可以由一个或多个源文件组成。②C语言程序的扩展名为“.C”。C语言在进行单片机软件设计时使用的词汇有六类:标识符,关键字,运算符,分隔符,常量,注释符等。......
2025-09-30
当乱飞程序进入非程序区(如EPROM未使用的空间)或表格区时,采用冗余指令就不再能使程序纳入正确轨道,此时可以设定软件陷阱,拦截“乱飞”程序,将其迅速引向一个指定位置,在那里有一段专门对程序运行出错进行处理的程序。
软件陷阱就是用引导指令强行将捕获到的乱飞程序引向复位入口地址0000H,在此处将程序转向专门对程序运行出错进行处理的程序,使程序纳入正轨。软件陷阱可以采用两种形式,如表10-1所示。
根据“乱飞”程序落入陷阱区的位置不同,可选择执行空操作、转到0000H和直转0202H单元的形式之一,使程序纳入正轨,指定运行到预定位置。
表10-1 软件陷阱形式

“软件陷阱”一般安排在下列4个地方。
1.未使用的中断向量区
MCS-51单片机的中断向量区为0003H~002FH,如果系统程序未使用完全部中断向量区,则可在剩余的中断向量区安排“软件陷阱”,以便能捕捉到错误的中断。如某系统使用了两个外部中断INT0、INT1和一个定时器溢出中断T0,它们的中断服务子程序入口地址分别为FUINT0、FUINT1和FUT0,即可按下面的方式来设置中断向量区:

(https://www.chuimin.cn)
2.未使用的大片EPROM空间
程序一般不会占用EPROM芯片的全部空间。对于剩余未编程的EPROM空间,一般都维持原状,即其内容为0FFH。0FFH对于MCS-51单片机的指令系统来说是一条单字节的指令:MOV R7,A。如果程序“跑飞”到这一区域,则将顺利向后执行,不再跳跃(除非又受到新的干扰)。因此,在这段区域内每隔一段地址设一个陷阱,就一定能捕捉到“跑飞”的程序。
3.表格
表格有两类,一类是数据表格,供MOVC A,@A+PC指令或MOVC A,@A+ DPTR指令使用,其内容完全不是指令;另一类是散转表格,供JMP @A+DPTR指令使用,其内容为一系列的三字节指令LJMP或两字节指令AJMP。由于表格的内容与检索值有一一对应的关系,在表格中间安排陷阱会破坏其连续性和对应关系,因此只能在表格的最后安排陷阱。如果表格区较长,则安排在最后的陷阱不能保证一定能捕捉“跑飞”来的程序,程序有可能在中途再次“跑飞”,这时只能在程序的其他地方设置陷阱或冗余指令来捕捉。
4.程序区
程序区是由一系列的指令构成的,不能在这些指令中间任意安排陷阱,否则会破坏正常的程序流程。但是,在这些指令中间常常有一些断点,正常的程序执行到断点处就不再往下执行了,这类指令有LJMP、SJMP、AJMP、RET、RETI,这时PC的值应发生正常跳变。如果在这些地方设置陷阱就有可能捕捉到“跑飞”的程序。例如,对一个累加器A的内容正、负和零的情况进行三分支的程序设计,软件陷阱安排如下:


相关文章
编写C语言程序时特点如下:①一个C语言源程序可以由一个或多个源文件组成。②C语言程序的扩展名为“.C”。C语言在进行单片机软件设计时使用的词汇有六类:标识符,关键字,运算符,分隔符,常量,注释符等。......
2025-09-30
所谓函数的调用就是在一个函数体中引用另外一个已经定义了的函数,前者称为主调用函数,后者称为被调用函数。实际参数的作用是将它的值传递给被调用函数中的形式参数。2)函数表达式。这种在调用一个函数的过程中又调用了另一个函数的方式,称为嵌套函数调用,在输出一个函数的值时经常采用这种方法。例如:其中,函数funtion1(i,j)是作为printf()函数的一个实际参数处理的,它也属于嵌套函数调用方式。......
2025-09-30
选用单片机时,一般按照生产厂商的数据手册、用户手册和应用注释手册选取。1.单片机的主要特征通过阅读手册了解单片机的主要特征,有助于正确选择单片机。2.单片机的封装通过阅读手册了解单片机的封装形式及详细尺寸。3)动态电参数是单片机的控制引脚信号变化的时序、延迟时间、电平、脉冲宽度,为硬件设计时与其他芯片的信号相匹配提供依据。......
2025-09-30
使用单片机本身的I/O口,可以实现一些简单的数据输入/输出传送,例如,从单片机P1.0~P1.3输入开关状态,再经P1.4~P1.7输出去驱动发光二极管,使发光二极管显示开关的状态。这时I/O口对信息的输入、输出可以直接操作。图8-7单片机I/O口直接使用方式图对于复杂的I/O操作,必须有接口电路的协调和控制才能进行。一般I/O接口电路主要完成以下基本功能。......
2025-09-30
其实,keil C51的调试模式间接地提供了程序延时的方法,下面通过实验来说明。因为Keil软件本身具备程序优化的功能,如果想在所有的代码位置都能设置断点,可以在工程选项里把优化等级设置为0,就是告诉Keil不要进行优化,如图4-29所示。......
2025-09-30
1.基本组成微型计算机的基本组成如图1-2所示。图1-2微型计算机的组成框图中央处理器CPUCPU是计算机的核心部件,它由运算器和控制器组成,完成计算机的运算和控制功能。电池式NVRAM是由CMOS的SRAM、备用电池和切换电路组成,在电源断开或低于某值时切换电路把备用电池接入,对RAM进行写保护,防止意外数据写入和信息丢失。......
2025-09-30
微机系统是整个应用系统的核心,包括微处理器、总线结构、时钟电路、复位电路、存储器等。2.总线与结构系统中微处理器是通过总线与外围芯片、电路板、其他设备相互连接来实现数据传送的。总线的选择应与选机型、确定结构同时进行。系统功能复杂,为避免重复设计,可以选用标准总线连接多板结构,通用部分采用标准板,专用部分自行设计。7.复位电路系统的复位有上电复位、按钮复位、掉电冻结、故障恢复等几种情况。......
2025-09-30
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2025-09-30
相关推荐