微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单片机关键技术基础详解(二)

单片机关键技术基础详解(二)

时间:02-21 来源:本站整理 点击:

活动,我们推荐使用DIP40封装的Mega16. 以下是实物图:

  

  

  

  网上关于自制Jtag的线路有许多种。根据搜集到的资料,设计出本文介绍的最简易、制作最容易的 JTAG。RS232接口是用分立件制作,就地取材,简单可靠.

  本线路的J1双排十针座,既可以做Jtag,又可以做ISP(通过跳针JP1控制)。JP1跳针短路时,J1用作ISP下载,方便更新本Jtag的ROM。J1 跳针开路时, 用作JTAG.

  

  如果你有232芯片,可以按以下线路代替上面的分立件RS232部分:

  

  烧录文件:

  按以上的硬件制作好PCB后,检查焊接无误,就可以进行烧录了。

  烧录的方法有很多,我(armok)推荐的一个方法是:将M16芯片从JTAG板上拆下来,放到普通的带ISP口的实验板,使用SL-ISP1.32 软件,将本文附录所带的将AVR Studio 4.10 Rom 烧录文件中的flash.rom 及 epprom.rom 直接烧入到Jtag ATmega16 就可以了。

  


五、80C51的复位技术盘点

  标准80C51片内现有的复位逻辑比较简单,只有通过一条复位引脚RST进行外部扩展。技术手册中给出了上电复位(POR,power on reset)和人工复位(MRST,manual reset)电路的接线方法;借助于一只专用外围芯片,如MAX813L或DS1323等,来扩充欠压复位(LVR,low voltage reset)和看门狗复位(WDR,watch dog timer reset)也有文章介绍。

  本文将介绍三种非常规扩展复位方式:软件复位(SWR,software reset)、软硬件复位(SHR,software and hardware reset)和非法地址复位(IAR,illegal address reset)。

  软件陷阱技术及其改良方法

  软件陷阱(software trap)是一种捕捉程序"跑飞"的编程方法。通常可以在程序中设置软件陷阱,引导程序失控的单片机跳转到一个指定的地址去执行,最终回复到正常轨道上来。软件陷阱可以设置在用户程序的空隙处或者转移指令之后,还可以利用一系列的陷阱指令来填充程序存储器的空白区。实现软件陷阱功能的指令是一个"5字节指令串",通常包含2条单字节NOP指令和1条3字节跳转指令。

  NOP ;利用空操作指令

  NOP ;来增加捕捉有效性

  LJMP SWRST;无条件跳转到指定地址去

  其中"SWRST"可以是一段"软件复位程序"的入口地址标号,也可以是复位矢量"0000H",即主程序入口地址。

  如果SWRST等于复位矢量0000H,则会把捕捉到的跑飞程序引导到初始化程序入口地址去执行,从而达到回复到正常轨道的目的。这种处理方法只适合中断功能没有被启用的场合。可以设想,假如是在(低级或高级)中断服务程序中跑飞的,这时即使把程序拉回到起点,而中断激活触发器不能够被清除,会影响以后的中断请求无法被 CPU响应。

  如果SWRST等于"软件复位程序"的入口地址,则会引发一次"软件复位"。关于软件复位程序的设计方法,随后介绍。

  总之,这种方法的指导思想是指,把未使用的ROM空间用跳转引导指令填满,作为软件"陷阱",以捕获"飞掉"的程序,并强行将捕获到的跑飞程序引向一个特定的地址,在那里由一段专门处理错误的程序进行处理,以恢复系统的正常运行。为提高跑飞程序的捕获率,通常还要在引导指令之前放置上几条空操作指令 NOP。理由是,8051的指令编码采用的是不等长方式,长度分别为1~3字节,而程序跑飞又是通过非法随机改变PC值形成的。假若跑飞后的PC值落到3 字节指令LJMP的中间,就会把操作数当作操作码来执行,将会产生不可预知的结果。为了提高捕捉的有效性,就在LJMP指令之前至少填充2条单字节的 NOP指令。

  如果把"5字节指令串"改换成如下作者新设计的"4字节指令串",陷阱指令将会更加有效。理由是,该指令对应的目标码为"00 20 00 20H",这段码无论重复多少次都是等同的。另外,应该在程序存储器0020H开始的3字节中再放置一条跳转到"软件复位程序"真正入口的中转指令 LJMP SWRST。经过核查,0020H~0022H字节恰好位于定时器T1中断矢量区尾部和串口中断矢量之前。

  SWRST0 EQU 0020H;定义"软件复位程序"的间接入口地址为"0020H"

  NOP ;填充一条单字节的空操作指令,机器码是"00H"

  LJMP SWRST0 ;无条件跳转到指定地址去。对应的机器码是"20 00 20H"

  软件复位技术

  软件复位是一种新技术,目前有越来越多的新型单片机配备了该功能。例如Philips公司的P87LPC700和P89LPC900系列、TI- BB公司的MSC1200系列和SunPlus公司的SPMC65系列等,内部都设计了专门用于实现软件复位的控制寄存器或者控制位。

软件复位是在利用软件陷阱技术或软件看门狗技术时,必需配套实施的一项后续处理工作。所谓"软件

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top