




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于EM78P153S的应用设计(V1.0)目 录第一章 EM78P153S的初识11.1 EM78P152/3S特性11.2 EM78P152/3S引脚21.3 功能寄存器21.3.1 累加器与端口控制寄存器21.3.2中断状态寄存器与中断使能寄存器31.3.3 操作寄存器41.3.4 特殊功能寄存器51.4 数据存储器的配置71.5 休眠与唤醒71.6 分频器81.7 定时器/计数器TCC9第二章 EM78系列单片机应用软件的编辑与仿真112.1 Simulator的下载与安装112.2 Simulator的使用方法122.3 Simulator系统常用命令汇总142.4 Simulator仿真中的常见问题16第三章 EM78系列单片机的汇编指令173.1 寻址方式173.2 伪指令183.3 指令速查表18第四章 EM78P153S应用软件设计204.1 外部中断程序204.2 花样灯程序224.2.1 设计需求224.2.2 软件设计234.2.3 硬件设计374.2.4 元器件明细表38第五章 EM78系列单片机应用程序的烧录395.1 程序的转换过程395.2 烧录器与烧录软件395.3 烧录步骤4146EM78P153S使用总结第一章 EM78P153S的初识EM78P152/3S是采用低功耗高速 CMOS工艺设计开发的8位微控制器,它的内部有一个102413位一次性可编程只读存储器(OTP_ROM) ,可见1k的只读存储器(ROM)决定了应用程序不能够太多,否则应用程序机器码将无法烧录到芯片中。硬件设计中,EM78P152/3S可以通过设置代码选项寄存器使微处理器工作在内部RC振荡模式(IRC)下,此模式下采用上电复位模式而不需要外接时钟电路;同时利用上电自动复位而不需要外接复位电路,P63复位引脚可以直接作为输入脚使用,充分提高了微处理器端口的利用率,这样硬件应用电路极为简化,节省了硬件成本。此外,EM78P153S单片机具有休眠模式,在一些不需要微处理器实时工作的应用场合,可以节省用电量,特别是在使用电池供电时,应用此模式可以延长电池的使用时间;另外在休眠模式下避免了微处理器在运行时受到来自外在杂波信号的干扰而导致程序跑飞。1.1 EM78P152/3S特性EM78P152/3S的性能如表1.1所示。表1.1 EM78P152/3S特性产品特性备注CPU配置 1K 13位片内ROM 32 8位片内寄存器 5级堆栈用于子程序嵌套 小于1.5 mA 5V/4MHz 休眠模式下的典型值为1A 。I/O 端口配置 2组双向I/O 端口:P5,P6 11个I/O引脚 唤醒端口:P6 6个可编程下拉I/O 引脚 7个可编程上拉I/O 引脚 7个可编程漏极开路I/O 引脚 外部中断:P60 工作电压范围 OTP 版本;工作电压范围:2.3V5.5V工作频率范围 IRC模式;振荡模式:4MHz,8MHz,1MHz,455KHz外设配置 8位实时时钟/ 计数器,可编程选择其信号源、触发边沿,溢出产生中断 三种中断源 TCC 溢出中断 输入端口状态改变中断(可使微控制器从休眠模式唤醒) 外部中断专有特性 省电模式 ( 休眠模式) 可选振荡模式 封装类型 14引脚DIP:EM78P153SP/S/J 14引脚SOP:EM78P153SN/S/J 10引脚SSOP:EM78P152SN/S/J 其它 具备一个保护寄存器以防止OTP_ROM中的程序代码被窃取1.2 EM78P152/3S引脚EM78P152/3S的引脚图如图1.1,引脚功能如表1.2所示。 图1.1 EM78P152/3S引脚图EM78P153SP/N/S/JEM78P152SP/N/S/J表1.2 EM78P152/3S引脚功能表引脚名称序号类型功能备注P50P531、12、13、14I/O*通用的I/O引脚P60P62P64P672、3、56、8、9、10I/O*通用的I/O 引脚*引脚状态发生改变时,从休眠模式唤醒*可以设置为上拉P60/INT10I/O*下降沿触发的外部中断引脚P62/TCC8I/O*外部定时/ 计数器信号输入引脚P63/RESET7I*若设置/RESET引脚并使其保持逻辑低,器件将产生复位*引脚状态改变时,从休眠模式唤醒* P63 仅用作输入引脚P64、P655、6I/O*外部时钟信号输入*晶体振荡器的输入引脚VDD4*电源正极VSS11*电源地1.3 功能寄存器期望微处理器按预期的性能工作,就需要对功能寄存器进行有效的定义,这也是汇编编程初始化的基本任务。针对EM78P153单片机,在汇编程序编写中,使用频率相对较高的寄存器有累加器A、I/O端口控制寄存器IOC5IOC6、中断状态寄存器(RF)、中断使能寄存器(IOCF)。1.3.1 累加器与端口控制寄存器示例1端口数值的传送(读取一个端口的值送给另一个端口)。源程序如下:;*;DIP输入,LED输出;*dip=5;定义dip输入端口的地址为5led=6;定义显示端口的地址为6org 0x00;定义程序存放区的起始地址jmp main;跳转到主程序org 0x50;声明主程序开始地址main:mov a,0x00;iow led ;设定显示端口引脚全部输出mov a,0xff;iow dip ;设定dip端口全部为输入loopcoma dip;读取dip状态并取反送amov led,a;传送到端口6上面显示jmp loop;循环回去;* end;告知汇编器源程序结束1、累加器A累加器A用于内部数据传送或指令操作数暂存,它不可被寻址。寄存器之间的数据传递需要通过累加器A来过渡,即寄存器先传送给A再由A传送给另一个寄存器。2、I/O 端口控制寄存器IOC5 IOC6I/O 端口控制寄存器IOC5 IOC6:为“1”时,相关I/O 引脚置为高阻态(输入);为“0”时,相关I/O 引脚置为输出。IOC5 寄存器仅低4 位可被有效定义,IOC5 和 IOC6 均为可读/写寄存器。1.3.2中断状态寄存器与中断使能寄存器示例2將寄存器0x20当做计数器,每当外部中断产生,就自动加1。源程序如下:;*;P60/INT外部中断;將寄存器0x20当做计数器,每当外部中断产生,就自动加1;* ORG0x00 ;定义程序存放区的起始地址 CLR0x20 ;清除计数器 JMPEXT_PRO ;跳转到主程序 ORG0x08 ;中断的入口地址INT_EXT:DISI ;使能中断 CLR0x0F ;清除中断状态寄存器的标志位 INC0x20 ;计数器加1 RETI ;返回主程序 ORG0x50 ;主程序的开始地址EXT_PRO:CLR0x0F ;清除标志位 MOVA,0x04 ;使能外部中断信号产生 IOW0x0F ;把A的内容送给0x0F MOVA,0x40 ;定义P60为外部中断引脚 IOW0x0E ENI ;开总中断EXT_WAIT:NOP NOP JMPEXT_WAIT ;循环等待外部中断;* END ;汇编器源程序结束1、中断状态寄存器(RF)中断状态寄存器(RF)地址0x0F,它反映三种中断标志情形,硬件自动置1,均需要通过软件的方式清0,以清除中断标志。RF各位的含义如表1.3所示。表1.3 中断状态寄存器RF地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT00x0FEXIFICIFTCIF其中:Bit 2(EXIF) :外部中断标志位,/INT管脚输入下降沿时置“1”,由软件清“0”;Bit 1(ICIF):端口6输入状态改变标志位,输入状态改变时置“1”,由软件清“0”;Bit 0(TCIF):TCC 溢出中断标志位,TCC 溢出时置“1”,由软件清“0”。2、中断使能寄存器(IOCF)中断使能寄存器(IOCF) 地址0x0F,与中断状态寄存器共用一个地址,它反映三种中断的开启与关闭,在程序运行每个指令周期中,硬件自身判断中断使能位,当中断使能位为1时响应相应中断,同时在中断服务程序中务必清中断状态寄存器的相应标志位为0。IOCF各位的含义如表1.4所示。表1.4 中断使能寄存器地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT00x0FEXIEICIETCIE功 能0:禁止EXIF中断1:使能EXIF中断0:禁止ICIF 中断1:使能ICIF 中断0:禁止TCIF中断1:使能TCIF中断其中:Bit 2 (EXIE)是外部中断EXIF使能位;Bit 1 (ICIE)是端口6输入状态改变引发中断ICIF使能位;Bit 0 (TCIE)是定时溢出中断TCIF使能位。1.3.3 操作寄存器1、间接寻址寄存器R0R0 并非实际存在的寄存器,它的主要功能是作为间接寻址指针,任何以R0为指针的指令,实际上是对RAM选择寄存器R4所指向地址的数据内容进行操作。2、定时/计数器R1(1)TCC引脚的外部信号边沿或内部指令周期时钟触发( 由CONT寄存器的TE位设定) ,会使TCC寄存器加1;(2)像其它寄存器一样可读/写;(3)通过复位PAB 位(CONT-3) 设定;(4)如果PAB bit (CONT-3) 被复位,预分频器分配给TCC;(5)写入一个值到TCC寄存器后,TCC计数器的内容会被刷新。3、程序计数器R2&堆栈复位时,程序计数器R2所有位均清0,它提供了程序指令代码的片内OTP_ROM地址。一个程序页为1024字长。在程序编译调试时,可以通过查看R2的值,判断程序是否跳转正常,或者通过对比某个程序的入口判断是否进入某个函数。“JMP”指令直接加载程序计数器的低10位,因此,“JMP”允许PC跳转到一个程序页的任何位置。“CALL”指令首先加载PC的低10位,然后将PC+1推入堆栈,因此,子程序的入口地址可位于一个程序页的任何位置。正常情况下,所有指令均是单指令周期(一个指令周期包含2个振荡周期) ,但改变程序计数器(R2寄存器)内容的指令,均为2个指令周期。EM78P153S有五级堆栈,这就决定了在程序编写的时候,子程序的嵌套调用不能够超过5次,否则编译会出错。4、状态寄存器R3(程序)状态寄存器R3的地址为0x03,如表1.5所示。表1.5 状态寄存器R3地址0x03BIT7RST0代表其它复位类型引发唤醒复位方式 ;1代表引脚状态改变引发控制器从休眠模式唤醒方式BIT6GP1通用读/ 写位BIT5GP0BIT4T时间溢出标志位,执行“SLEP”和“WDTC”指令或上电时置“1”,WDT溢出时复位为“0”BIT3P省电标志位,上电或执行WDTC 指令时置“1”,执行“SLEP”指令时复位为“0”BIT2Z零标志位,当算术或逻辑运算的结果为0时置“1”BIT1DC辅助进位标志位BIT0C进位标志位在程序编译调试时,可以通过查看R3的值,了解程序的工作过程。5、RAM 选择寄存器R4:I/O 寄存器,仅低4位可用。6、端口5寄存器R5:I/O 寄存器,引脚都为I/O口。7、端口6寄存器R6:I/O 寄存器,除P63仅用作输入引脚外,其它引脚都为I/O口。8、R10R2F:所有这些寄存器均为8 位通用寄存器。表1.6 控制寄存器CONTBIT7BIT6INT中断使能标志位:0代表被DISI 或硬件中断屏蔽;1代表被ENI/RETI指令使能BIT5TSTCC信号源选择位:0代表内部指令周期时钟,P62为双向I/O引脚;1代表TCC引脚的跳变信号BIT4TETCC信号边沿选择位:0代表TCC引脚信号由低变到高时TCC计数器加1;1代表TCC引脚信号由高变到低时TCC计数器加1BIT3PAB预分频器分配位:0代表TCC;1代表WDTBIT2PSR2TCC/WDT预分频比选择位PSR200001111BIT1PSR1PSR100110011PSR001010101BIT0PSR0TCC预分频比1:21:41:81:161:321:641:1281:256WDT预分频比1:11:21:41:81:161:321:641:1281.3.4 特殊功能寄存器1、控制寄存器CONT控制寄存器CONT各位定义如表1.6所示。2、下拉控制寄存器IOCB、漏极开路控制寄存器IOCC、上拉控制寄存器IOCD下拉控制寄存器IOCB各位定义如表1.7所示。表1.7 下拉控制寄存器IOCBBIT7BIT6/PD6P62 引脚下拉功能使能控制位;0代表使能内部下拉功能 ;1代表禁止内部下拉功能BIT5/PD5P61 引脚下拉功能使能控制位;0代表使能内部下拉功能 ;1代表禁止内部下拉功能BIT4/PD4P60 引脚下拉功能使能控制位;0代表使能内部下拉功能 ;1代表禁止内部下拉功能BIT3BIT2/PD2P52 引脚下拉功能使能控制位;0代表使能内部下拉功能 ;1代表禁止内部下拉功能BIT1/PD1P51 引脚下拉功能使能控制位;0代表使能内部下拉功能 ;1代表禁止内部下拉功能BIT0/PD0P50 引脚下拉功能使能控制位;0代表使能内部下拉功能 ;1代表禁止内部下拉功能漏极开路控制寄存器IOCC各位定义如表1.8所示。表1.8 漏极开路控制寄存器IOCCBIT7OD7P67引脚漏极开路功能使能控制位;0代表禁止漏极开路输出;1代表使能漏极开路输出BIT6OD6P66引脚漏极开路功能使能控制位;0代表禁止漏极开路输出;1代表使能漏极开路输出BIT5OD5P65引脚漏极开路功能使能控制位;0代表禁止漏极开路输出;1代表使能漏极开路输出BIT4OD4P64引脚漏极开路功能使能控制位;0代表禁止漏极开路输出;1代表使能漏极开路输出BIT3BIT2OD2P62引脚漏极开路功能使能控制位;0代表禁止漏极开路输出;1代表使能漏极开路输出BIT1OD1P61引脚漏极开路功能使能控制位;0代表禁止漏极开路输出;1代表使能漏极开路输出BIT0OD0P60引脚漏极开路功能使能控制位;0代表禁止漏极开路输出;1代表使能漏极开路输出上拉控制寄存器IOCD各位定义如表1.9所示。表1.9 上拉控制寄存器IOCDBIT7/PH7P67引脚上拉功能使能控制位;0代表使能内部上拉功能;1代表禁止内部上拉功能BIT6/PH6P66引脚上拉功能使能控制位;0代表使能内部上拉功能;1代表禁止内部上拉功能BIT5/PH5P65引脚上拉功能使能控制位;0代表使能内部上拉功能;1代表禁止内部上拉功能BIT4/PH4P64引脚上拉功能使能控制位;0代表使能内部上拉功能;1代表禁止内部上拉功能BIT3BIT2/PH2P62 引脚上拉功能使能控制位;0代表使能内部上拉功能;1代表禁止内部上拉功能BIT1/PH1P61 引脚上拉功能使能控制位;0代表使能内部上拉功能;1代表禁止内部上拉功能BIT0/PH0P60 引脚上拉功能使能控制位;0代表使能内部上拉功能;1代表禁止内部上拉功能通过操作IOCB、IOCC、IOCD寄存器可以设置端口的输入输出方式。当某端口作为输入口使用时,只需要考虑是否上拉或者下拉;当某端口作为输出口使用时,则考虑是否开漏极输出。端口采用内部上拉,可以减少外部对引脚电平的干扰,如果要实现检测某端口是否为低电平的功能,则必须设置为内部上拉,若该端口没有上拉功能,则需要外部加上拉电阻。端口采用内部下拉,理论上可以减少外部对引脚电平的干扰,但是实际的测试效果不明显,和没有设置下拉的效果一样。所以如果端口设置为内部下拉,该端口只可以用于检测高电平,但是在没有输入的情况下,该引脚的电平并没有变为1V以下,不能看作真正的低电平。端口采用内部开漏极输出,适用于微处理器工作电压与外围器件工作电压不相同的场合,输出的高电平将达不到VDD电压值。5、看门狗定时器控制寄存器IOCE看门狗定时器控制寄存器IOCE各位定义如表1.10所示。表1.10 看门狗定时器控制寄存器IOCE地址BIT7WDTE看门狗定时器使能控制位:0代表禁止WDT;1代表使能WDTBIT6EIS定义P60(/INT)引脚功能的控制位:0定义P60为双向I/O引脚;1定义为外部中断输入引脚/INT,在此情况下,P60 引脚的I/O 控制位(IOC6 的bit 0)必须置为“1”BIT501.4 数据存储器的配置通过了解数据存储器的分布,可以在仿真时直接了解各个寄存器的状态以及程序运行情况,数据存储器的配置如表1.11所示。表1.11 数据存储器配置地址R PAGE寄存器 IOC PAGE寄存器00R0 间接寻址寄存器保留 01R1定时/ 计数器CONT控制寄存器02R2程序计数器保留 03R3状态寄存器保留 04R4RAM 选择寄存器保留 05R5Port5IOC5 I/O 端口控制寄存器06R6Port6IOC6 I/O 端口控制寄存器07保留 保留 08保留 保留 09保留 保留 0A保留 保留 0B保留 IOCB下拉控制寄存器0C保留 IOCC漏极开路控制寄存器0D保留 IOCD上拉控制寄存器0E保留 IOCE看门狗定时器控制寄存器0FRF中断状态寄存器IOCF中断屏蔽寄存器102F通用寄存器 无1.5 休眠与唤醒EM78P152/3S微处理器可以在程序中执行SLEP指令将进入休眠模式,微处理器可以由以下事件唤醒:(1)/RESET引脚的外部复位信号输入;(2)WDT溢出 ( 若使能); (3)Port 6输入状态改变( 若使能);“/RESET引脚的外部复位信号输入”以及“WDT溢出”都将使EM78P152/3S复位,可用R3寄存器的T和P标志位来判断复位源(唤醒源)。由于采用上电复位的方式,P63脚将作为输入脚使用,而不用作复位脚,所以不存在复位脚;另外若WDT的使用频率不高,可以设置为不使能(附:实际中可以不采取这两种唤醒模式)。实际中更多考虑的则是“Port 6输入状态改变”的唤醒模式。“Port 6输入状态改变”将综合考虑后续程序的执行和全局中断(“ENI”或 “DISI”指令的执行情况) ,来决定控制器在唤醒后是否进入中断向量。如果在SLEP指令前执行了ENI指令,唤醒后将从地址为008H处开始执行。如果在SLEP指令前执行了DISI 指令,唤醒后将从SLEP 指令的下一条指令开始执行。在SLEP指令之前Port6输入状态的改变中断要使能,即中断使能寄存器(IOCF)中ICIE位要置“1”,同时必须通过软件编程禁止WDT,但代码选项寄存器(Code Option)的WDT位仍要保持使能。代码选项寄存器将在介绍烧录程序的章节详细介绍。休眠与管脚唤醒的使用步骤:(1)唤醒端口设置为输入口;(2)使能唤醒端口内部上拉;(3)设置WDT分频比大于1:1,并禁止WDT;(4)清TCC;(5)读PORT6状态,即下“MOV PORT6,PORT6”指令; (6)使能唤醒功能设置ICIE 位为“1”;(7)如需要中断则使能总中断下“ENI ”指令; (8)下“SLEP”指令; (9)加三条“NOP”指令延时; (10)下“WDTC”指令;(11)禁止WDT;(12)禁止管脚唤醒功能;在编程的时候,要注意执行SLEP指令之前,要按照上述步骤编写,在SLEP指令后面要加上三条“NOP”指令,这个不能够缺少。在休眠模式下,若WDT已使能,WDT也将被清零,但WDT会继续保持运行状态。在唤醒后,要间隔10ms左右就要执行一次“WDTC”指令,防止WDT溢出引起复位。此处设置预分频的比例要大于1:1也是为防止WDT溢出引起复位。1.6 分频器看门狗定时器WDT与TCC共用一个分频器,但某一时刻分频器只能够分配给二者之一。与TCC配合使用时,它是以一个“预”分频器的角色出现在TCC的输入信号路径中的;而与WDT配合使用时,它是以一个“后”分频器的角色出现在WDT的输出信号路径中的。分频器实际上就是一个8位的累加计数器,不过不能够像TCC那样通过内部数据总线用软件进行读写操作。分频器的功能就是将进入TCC的时钟信号(或从WDT出来的序列脉冲信号)频率除以一个指定的倍数,这个倍数就是分频比,由CONT寄存器中的PSR2PSR0位决定。需要注意的是,当分频器分配给TCC时,任何以TCC为目标的写操作指令(如CLR TCC、MOV TCC,A)都会同时将分频器清零。同理当分频器分配给WDT时,一条清WDT的指令(WDTC)将会同时将分频器清零。这里说的只是分频器清零,而分配比和分配的对象不会改变。看门狗定时器的时钟源是一个自由运行的片内RC振荡器。即使在其它的振荡器关闭的时候(也就是休眠模式下),WDT仍然保持运行。在正常模式下或休眠模式下,WDT溢出(若WDT使能)将会使器件产生复位。在正常模式下,可以通过软件编程为禁止或使能,不使用分频器的时候,WDT的溢出周期约为18ms。所以通常从休眠模式下唤醒后要间隔一段时间就要加一条清WDT的指令,防止WDT溢出产生复位。1.7 定时器/计数器TCC与定时器/计数器TCC模块相关的寄存器有4个,分别为R1(TCC寄存器)、RF(中断状态寄存器)、CONT(控制寄存器)、IOCF(中断屏蔽寄存器)。TCC具有两种工作模式,一种定时器模式,另一种是计数器模式。两种模式之间的主要差异就是送入累加计数寄存器TCC的“触发信号”的来源不同而已。TCC的工作模式由CONT(控制寄存器)的第5位TS决定。(1)工作模式1、定时器模式当TS为0时,TCC模块工作在定时器模式,触发信号源取自于内部的指令周期信号。一旦往计数器中写入初始值后,TCC便重新启动累加计数。在没有使用分频器的情况下,TCC会在每个指令周期信号到来时自动加1。在配置了分频器的情况下,指令周期信号经过分频器分频后送给TCC,使TCC自动加1。2、计数器模式当TS为1时,TCC模块工作在计数器模式,触发信号源取自芯片外部引脚TCC上面的输入信号。可以通过CONT(控制寄存器)的第4位TE设定外部时钟信号的触发边沿,TE=1时下降沿触发;TE=0时上升沿触发。处于计数器模式下,一旦往计数寄存器中写入初值后,TCC便立即开始新一轮的累加计数。值得注意的一点:在一些没有使用到TCC的应用项目中,如果TCC进入定时器模式,只要单片机处于非睡眠状态,内部时钟就不会停止,以指令周期为触发信号的TCC就不停的自动累加。这不仅增加单片机额外的电能消耗,而且会个给片内其他数字电路带来不必要的干扰。此时可以将CONT(控制寄存器)的TS位设定为“1”,使TCC工作在计数器模式;同时将外部触发输入引脚TCC固定接到VDD或VSS,这样可以使TCC永远处于静止状态。(2)TCC的应用使用步骤:1、给TCC寄存器赋初值;2、设置CONT寄存器(选择时钟源并设置预分频比,当预分频比分配给WDT时TCC预分频比为1:1);3、若需要执行中断功能,需设置IOCF寄存器中的TCIE位为“1”,并执行“ENI”指令。注意:每次计时溢出需给TCC赋初值(初值为0除外)。计算公式T=(1/FOSC)*Prescaler*(256-TCCcnt)*2(CLK=2)T=(1/FOSC)*Prescaler*(256-TCCcnt)*4(CLK=4)FOSC:TCC时钟源频率;Prescaler:TCC预分频比;TCCcnt:TCC(R1)初始值。例如:FOSC=4MHz;Prescaler=256;TCCcnt=0;CLK=2时,计算定时时间TT=(1/4MHz)*256*(256-0)*2(CLK=2)=32.768ms第二章 EM78系列单片机应用软件的编辑与仿真EMC Simulator是一款开发软件,也是一种非实时性、非在线的仿真工具,在某种程度上可以代替价格较贵的硬件仿真器,它属于软件模拟器的范畴,以纯软件的方式模拟仿真EM78P153、EM78P156E、EEM78P447S这三种型号的单片机。通过软件的手段来模拟单片机的指令执行过程和内部硬件资源的操作方法,从而实现对用户源程序的模拟运行、功能调试和(深层次)逻辑错误查找。EMC Simulator的局限性:(1)不能够模拟单片机的片外电路;(2)执行速度慢,只适合调试实时性要求不高的程序。2.1 Simulator的下载与安装用户可以通过访问这个网站/support.php?class=1,下载EMC Simulator仿真软件,图2.1所示的是打开网站后的页面。图2.1 网站页面在技术支持的标题下面就有一个Simulator(义隆windows模拟仿真软件)的连接,点击之后便自动下载。在下载完之后,可以在下载的文件中,找“Setup.exe”的可执行文件。双击该文件,即可以开始安装了。安装的位置可以自由设置,然后一直点击Next,直到完成安装。可以看到桌面上将会多了一个新的图标,双击既可以运行此软件。2.2 Simulator的使用方法通过模拟仿真第一章中示例2的程序,来介绍如何使用EMC Simulator软件。(1)如何建立一个新项目打开软件后会出现如图2.2所示的对话框,在下拉选项中可以设置要模拟的芯片型号,选择EM78P153点击OK,便进入了软件的界面。图2.3 新建工程窗口图2.2 型号选择对话框图2.4 新建工程文件对话框创建一个新项目的方法有两种:方法一:选择菜单命令:ProjectNew.,会出现一个如图2.3所示的对话框,在其“Project Name”内输入自己的项目文件名(比如在此定义为jf002),系统会自动追加一个扩展名.prj。方法二:选择菜单命令FileNew.,会出现一个如图2.4所示的对话框,在其中选择“Project”标签,并且在其“Project Name:”条内输入自己的项目名称。(2)如何在项目中添加文件图2.6 寄存器和I/O窗口选择菜单命令FileNew.,出现一个如图2.4所示的对话框。在“File”标签下,其“File Name”条内输入自己的源程序文件名,左侧窗口内三个选项分别对应三种不同拓展名的文件:源程序文件(.dt或.asm)、头文件(.h)、和文本文件(.txt)。点击“OK”后,会出现如图2.5所示的空白源文件编辑窗口。在其中可以编辑源程序,也可以直接将已经写好的程序粘贴进来。图2.5 源程序编辑窗口对于文本编辑的几点说明:1、支持汉字输入和编辑功能2、标点符号的输入要在半角的西文方式下输入。3、通过选择菜单命令OptionFont.来自由设置字体字号。(3)如何调试程序在调试程序之前,要进行程序的编译工作,选择菜单命令ProjectRebuild All,此后在输出信息窗口可以看到汇编和链接的结果。没有错误,没有警告,没有提示信息,编译完成之后,进行复位操作,复位之后的寄存器状态如图2.6所示。图2.7 调试示意图1复位操作的具体方法有三种:(1)选择菜单命令DebugReset(2)按一次键盘上F6键;(3)点击工具栏上面的图标。软件模拟器提供了多种运行程序的方式或调试程序的手段,比较常用的有以下几种:设置寄存器观察窗、复位、连续运行、单步运行、自动单步运行和连续单步运行、设置断点运行、自由运行、运行到光标、从指定行开始运行等。其具体的用法和Keil中的调试类似。此实例中采用单步运行的方式来调试程序,这样可以很直观的看到每条语句执行完后寄存器的改变情况(每次寄存器的数值有修改都会将改动的地方变为红色,以示区别)。通过单步操作,程序将会在EXI_WAIT子程序中循序执行,等待外部中断信号。如图2.7所示。此时通过修改寄存器的值,来模拟外部中断信号的产生,进而观察程序的运行情况。图2.8 调试示意图2图2.9 调试示意图3具体方法:将光标停留在P6端口的第1位上面,然后单击鼠标左键,此时第1位和第2位之间将会出现闪烁的光标。通过输入0来模拟外部中断的下降沿信号。每修改一个数字,系统均会立即更改“软件模拟器”的缓冲存储器。人工修改后的值自动以“蓝色”显示,以示区别。操作的示意图如图2.8。此时点击单步运行一次,就会看到PC指针已经指向了地址0x08,这是中断的入口地址,操作示意图如图2.9。2.3 Simulator系统常用命令汇总(1)自定义寄存器变量的视窗Watch图2.10 添加变量到观察窗通过选择View菜单命令,选择Watch选项,可以打开观察窗(Watch Window)。刚打开时是一个空窗口,可以添加所需观察的寄存器变量。操作步骤如下:利用菜单命令ProjectDump to ICE ,将目标文件装载到模拟器的虚拟缓冲器内。利用菜单命令DebugAdd label to watch,即可打开一个如图2.10所示的对话框,在“File”窗口显示源程序及其存放路径。在“Label”窗口中,选中其中的变量,然后点击“Add to watch”按钮,此时在该变量前面就会出现一个“*”,表明该变量已经比添加到了Watch窗口。(2)Get 1FFF Code Space(获取程序存储器占用信息)图2.12 寄存器显示格式对话框图2.11 输出视窗获取关于程序存储器各个页面空闲情况的统计信息,并且显示在输出信息窗口中。例如在调试示例2的集成模拟环境中,在Tool下拉菜单命令中点击此条内容,则会显示如下如图2.11里面的内容。该内容表示程序存储的位置以及没有使用的地址范围,其中Start与End表示没有使用的起始地址与结束地址,Size表示是没有使用的地址的范围。需要说明的是,这里面说显示的剩余空间是指在0x50前面的地址,而在其后面的地址是没有给出的。在0x50后面的地址是存放主程序的。(3)Register view(寄存器视图)设定部分常用寄存器的显示格式,是以十六进制还是以二进制格式显示。方法是在Option选择命令中选择其选项。在弹出的对话框中,把打算二进制显示的寄存器进行勾选,没有勾选的默认为以十六进制显示,如图2.12所示。(4)Debug(调试类操作命令)在Debug下拉菜单如图2.13所示,从上到下依次代表的含义是:1、Go:连续运行2、Reset:系统复位图2.13 调试类操作命令3、Step into:单步进入4、Step over :单步跨越5、Go to Cursor:运行到光标处6、Animation:自动单步运行7、Run from selected line:选定行作为运行的起点8、Toggle Brakpoint :设置、删除断点9、Show all breakpint:显示所有的断点10、Add label to watch:添加标号到观察窗11、Reset and Free run:复位和自由运行12、Reset and Go:复位和连续运行13、Clear all breakpoint :清除所有的断点14、Clear watch:清除观察窗15、Trace back:反向追踪16、Track forth:正向追踪2.4 Simulator仿真中的常见问题1、仿真时候出现执行完一些语句后,但相应的寄存器并没有修改?【方法】一般情况下是软件自身问题,需要关闭软件后再重新打开仿真。2、在程序中设置端口的值,执行完相关语句后,端口的值并没有改变?【方法】需要明确的是先设置的端口值还是先设置的端口输入输出状态,如果是先设置的是端口值,那么要等设置完端口的输入输出状态后,才会在寄存器窗口中显示出来。一般先设置端口的输入输出状态再设置端口值,那么就不会出现这种情况了。3、编译的时候提示找不到头文件?【方法】把头文件放到在工程文件的目录下面,再次编译既可以。4、编译时出现地址超过多少范围的提示?【方法】对于EM78P153地址最大可以到1FFH,而EM78P153S则可以到3FFH。仿真软件只能够仿真EM78P153,所以如果程序的存储地址超过了1FFH,就会出现错误提示。如果需要仿真EM78P153S的程序,而且程序的存储地址已经超过了1FFH,那么只能够通过硬件仿真器来实现了。5、头文件的调用由于仿真软件只能够仿真型号为EM78P153的芯片,而不能够仿真EM78P153S芯片,所以仿真时在调用头文件的时候,要注意调用的是EM78P153.INC头文件,而不是EM78P153S.INC头文件。这两个头文件只是里面的定义方式有不同,在程序调用中,不存在差别。当要烧录EM78P153S芯片程序的时候,只要在另一款义隆单片机的编译软件(Wice Plus)中,新建一个工程并且将之前仿真时候建立的以“.DT”为后缀的文件添加进来,然后将头文件改为EM78P153S.INC,编译通过之后就可以通过烧录软件给芯片烧录程序了,具体的过程烧录程序章节介绍。6、在调试程序时,若采取程序延时且延时时间比较长就会出现程序乱跑的情形?【方法】将延时函数循环变量的值设小些,再次调试,如果不行,就需要设置更小。一般调试的时候是设置为1,便于程序的调试。出现这种问题的原因可能是软件自身的缺陷所致。所以,一旦程序中需要延时功能,尽可能采取硬件定时手段(定时器)。第三章 EM78系列单片机的汇编指令EM78系列单片机共有指令47条(EM78P447、EM78P 451、EM78P 458各有48条),指令码宽度为13位。一条指令的指令码一般可以分成两部分:第一部分为操作码,代表指令的功能;第二部分为操作数,表示指令操作的对象,或运算时所需要的参数。3.1 寻址方式指令是CPU执行特殊运算的代码,它是程序语句的核心,一般在程序语句中还包含有操作数,对操作数的操作就需要明确操作数的属性,即究竟是源操作数还是目的操作数?究竟是参与运算的数据还是数据所在的存放地址?总体而言就是需要对操作数寻址。寻址就是寻找操作数的存放地址,寻址方式就是寻找操作数或者操作数所在地址的方法或形式。根据操作数来源的不同,有5种寻址方式。(1)立即数寻址:操作数为立即数,直接从指令中获取。例 MOV A,0x16;将常数0x16送给寄存器A(2)直接寻址:若是要存取寄存器的内容,需要通过累加器A来过渡。例 將寄存器0x20的内容,复制到寄存器0x21中。MOVA, 0x20MOV0x21, A(3)间接寻址:通过寄存器R4来实现,R4的bit0-5是用来选择寄存器(地址:00-06,0F-3F)若是使用者所需要存取的寄存器,有位址相邻的特性,使用间接寻址是很方便的。例 写一个程序,將寄存器0x20 0x3F的值都填0。MOVA, 0x20 ;设定A=0x20MOV0x04, A ;设定间接寻址寄存器0x04AGAIN:CLR0 ;清除0x04所指的寄存器INC 0x04 ;递增间接寻址寄存器0x04MOVA, 0x04 ;将0x04寄存器的值送AXOR A, 0x3F ;比较间接寻址的地址是否到0x3fJBS 0x03, 2 ;若到了则结束JMPAGAIN ;否则继续循环执行END(4)隐含寻址:采用隐含寻址方式的指令,在指令码中不必指明存放着操作数的存储地址。如CONTR指令,它将控制寄存器CONT的内容读取之后,送累加器A中,CONT寄存器没有统一的地址编码,这个与众不同。(5)位寻址:位寻址是对寄存器中的任一位(bit)进行操作。例 BS0x12,2;将寄存器0x12的第2位置为“1”。3.2 伪指令伪指令指出了要求汇编编译器在翻译期间执行的动作,伪指令如表3.1所示。表3.1 伪指令介绍符 号说 明例 子ORG 设定后续代码的起始地址 ORG 0x010 ;定义地址从010H开始 MOV A ,0xFF ;此条指令放置在010H地址 MOV P6 ,A ;此条指令放置在011H地址 EQU 符号或常数定义TCC = 0x01 TCC EQU 0x01 = EOP 宣告本页结束(一个程序页为1K)ORG 0x000 NOP EOP ;宣告上页结束 NOP ;此条指令放置在400H(下页起始地址) END程序结束END之后的程序不被编译ORG 0x10 MOV 0x20,A END MOV A ,0x11;此条指令将不被编译INCLUDE 插入别的档案让程式更为简洁INCLUDE“C:EMCTESTTEST153S.INC” MACRO 表达式 ENDM巨集定义指令带的参数不能大于9个BANK0 MACROBC 0x04,6ENDM3.3 指令速查表表3.2中将EM7系列的单片机的指令归纳并且分类。其中符号“R”代表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【特种作业取证考试】高处作业模拟考试试卷(3套)
- 月子知识内容课件
- 餐厅卫生标准体系构建及实施
- 单元活动 遥感技术及其应用教学设计-2025-2026学年高中地理鲁教版必修第一册-鲁教版2004
- 2025年学历类自考专业(护理)儿科护理学(一)-精神障碍护理学参考题库含答案解析(5套)
- 2025年学历类自考专业(建筑工程)钢结构-混凝土及砌体结构参考题库含答案解析(5套)
- 2025年学历类自考专业(建筑工程)计算机基础与程序设计-建筑经济与企业管理参考题库含答案解析(5套)
- 2025年学历类自考专业(建筑工程)工程地质及土力学-混凝土结构设计参考题库含答案解析(5套)
- 2025年学历类自考专业(工商企业管理)国际企业管理-金融理论与实务参考题库含答案解析(5套)
- 2026届江苏省苏州新草桥中学化学高一上期中质量检测试题含解析
- GB/T 13667.3-2003手动密集书架技术条件
- 股指期权风险管理
- 导轨及线槽项目投资方案报告模板
- 《电业安全工作规程》
- 复旦大学<比较财政学>课程教学大纲
- 过去分词公开课--完整版PPT课件
- 书法的章法布局(完整版)
- GB∕T 10429-2021 单级向心涡轮液力变矩器 型式和基本参数
- 注射技术操作并发症的预防及处理PPT课件
- cad应用工程师练习题
- 县域义务教育均衡发展计算差异系数模板(自动)
评论
0/150
提交评论