软件设计包括题目定义、题目细分、确定算法、画流程图和编写程序5部分内容。1.题目定义题目定义是在对软件设计任务书分析后,根据系统软件功能的要求,作出软件的总体规划和详细说明,必须明确如下内容:1)输入/输出信息列表。3.确定算法确定算法是软件非常重要的工作。......
2023-11-17
当乱飞程序进入非程序区(如EPROM未使用的空间)或表格区时,采用冗余指令就不再能使程序纳入正确轨道,此时可以设定软件陷阱,拦截“乱飞”程序,将其迅速引向一个指定位置,在那里有一段专门对程序运行出错进行处理的程序。
软件陷阱就是用引导指令强行将捕获到的乱飞程序引向复位入口地址0000H,在此处将程序转向专门对程序运行出错进行处理的程序,使程序纳入正轨。软件陷阱可以采用两种形式,如表10-1所示。
根据“乱飞”程序落入陷阱区的位置不同,可选择执行空操作、转到0000H和直转0202H单元的形式之一,使程序纳入正轨,指定运行到预定位置。
表10-1 软件陷阱形式
“软件陷阱”一般安排在下列4个地方。
1.未使用的中断向量区
MCS-51单片机的中断向量区为0003H~002FH,如果系统程序未使用完全部中断向量区,则可在剩余的中断向量区安排“软件陷阱”,以便能捕捉到错误的中断。如某系统使用了两个外部中断INT0、INT1和一个定时器溢出中断T0,它们的中断服务子程序入口地址分别为FUINT0、FUINT1和FUT0,即可按下面的方式来设置中断向量区:
(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的内容正、负和零的情况进行三分支的程序设计,软件陷阱安排如下:
有关单片机基础及应用的文章
软件设计包括题目定义、题目细分、确定算法、画流程图和编写程序5部分内容。1.题目定义题目定义是在对软件设计任务书分析后,根据系统软件功能的要求,作出软件的总体规划和详细说明,必须明确如下内容:1)输入/输出信息列表。3.确定算法确定算法是软件非常重要的工作。......
2023-11-17
1.存储器及I/O口地址分配系统软件设计采用模块化结构。由于AT89C52单片机内有256字节的RAM,且高128字节的RAM只能采用间接寻址方式,所以本系统将堆栈顶地址设置在片内RAM数据缓冲区0A0H。怎样实现软件和硬件的协调优化设计?根据电热恒温培养箱的指标对以单片机组成的恒温控制系统提出以下要求:1)温度设置:2位十进制数。......
2023-11-17
MCS-51的所有指令均不超过3个字节,且多为单字节指令。为了使“乱飞”程序在程序区迅速纳入正轨,应在编程时多用单字节指令,并在关键的地方人为地插入一些单字节指令NOP,或将有效单字节指令重写,称之为指令冗余。需要注意的是,乱飞的PC必须指向程序运行区,并且必须执行到冗余指令才能使PC纳入正确轨道。......
2023-11-17
MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2023-11-17
所谓函数的调用就是在一个函数体中引用另外一个已经定义了的函数,前者称为主调用函数,后者称为被调用函数。实际参数的作用是将它的值传递给被调用函数中的形式参数。2)函数表达式。这种在调用一个函数的过程中又调用了另一个函数的方式,称为嵌套函数调用,在输出一个函数的值时经常采用这种方法。例如:其中,函数funtion1(i,j)是作为printf()函数的一个实际参数处理的,它也属于嵌套函数调用方式。......
2023-11-17
1.生产厂商常见的单片机生产厂商有Intel公司、Motorola公司、Philips公司、Atmel公司、Zilog公司、NEC公司、MicroChip公司、ADI公司、Epson公司、NS公司、AMD公司、WinBond公司、Scenix公司、Toshiba公司、Fujitsu公司、Samsung公司等。2.单片机系列常见的单片机系列有Intel公司的MCS-51、MCS-96/98系列,Motorola公司的68HC05、68HC5X、68HC12、68HC16、683XX系列,Philips公司的80C5X系列,Atmel公司的AT89系列,Zilog公司的Z8、Z86系列,ADI公司的MC-6801系列,MicroChip公司的PIC16CX、PIC16FX、PIC17CX、PIC18CX系列,NEC公司的μPD7800系列,Toshiba公司的MB8900、MB90系列等。......
2023-11-17
编写C语言程序时特点如下:①一个C语言源程序可以由一个或多个源文件组成。②C语言程序的扩展名为“.C”。C语言在进行单片机软件设计时使用的词汇有六类:标识符,关键字,运算符,分隔符,常量,注释符等。......
2023-11-04
程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB,片内/外统一编址。根据单片机的类型及引脚的电平,CPU可从内部也可从外部程序存储器开始执行。而当EA=0时,内部程序存储器被忽略,程序直接从外部程序存储器的0000H开始执行。64KB程序存储器中有一些特殊的单元,在使用时应加以注意。0023H——串行口的中断服务子程序入口地址。......
2023-11-17
相关推荐