EM78P153S使用总结 1.6 分频器
看门狗定时器WDT与TCC共用一个分频器,但某一时刻分频器只能够分配给二者之一。与TCC配合使用时,它是以一个“预”分频器的角色出现在TCC的输入信号路径中的;而与WDT配合使用时,它是以一个“后”分频器的角色出现在WDT的输出信号路径中的。分频器实际上就是一个8位的累加计数器,不过不能够像TCC那样通过内部数据总线用软件进行读写操作。分频器的功能就是将进入TCC的时钟信号(或从WDT出来的序列脉冲信号)频率除以一个指定的倍数,这个倍数就是分频比,由CONT寄存器中的PSR2~PSR0位决定。
需要注意的是,当分频器分配给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。
9
EM78P153S使用总结 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时,计算定时时间T
T=(1/4MHz)*256*(256-0)*2(CLK=2)=32.768ms
10
EM78P153S使用总结 第二章 EM78系列单片机应用软件的编辑与仿真
EMC Simulator是一款开发软件,也是一种非实时性、非在线的仿真工具,在某种程度上可以代替价格较贵的硬件仿真器,它属于软件模拟器的范畴,以纯软件的方式模拟仿真EM78P153、EM78P156E、EEM78P447S这三种型号的单片机。通过软件的手段来模拟单片机的指令执行过程和内部硬件资源的操作方法,从而实现对用户源程序的模拟运行、功能调试和(深层次)逻辑错误查找。
EMC Simulator的局限性:
(1)不能够模拟单片机的片外电路;
(2)执行速度慢,只适合调试实时性要求不高的程序。
2.1 Simulator的下载与安装
用户可以通过访问这个网站http://www.lbmcu.com/support.php?class=1,下载EMC Simulator仿真软件,图2.1所示的是打开网站后的页面。
图2.1 网站页面
在技术支持的标题下面就有一个Simulator(义隆windows模拟仿真软件)的连接,点击之后便自动下载。在下载完之后,可以在下载的文件中,找“Setup.exe”的可执行文件。双击该文件,即可以开始安装了。安装的位置可以自由设置,然后一直点击Next,直到完成安装。可以看到桌面上将会多了一个新的图标,双击既可以运行此软件。
2.2 Simulator的使用方法
通过模拟仿真第一章中示例2的程序,来介绍如何使用EMC Simulator软件。 (1)如何建立一个新项目
打开软件后会出现如图2.2所示的对话框,在下拉选项中可以设置要模拟的芯片型号,
11
EM78P153S使用总结 选择EM78P153点击OK,便进入了软件的界面。
图2.2 型号选择对话框
图2.3 新建工程窗口 图2.4 新建工程文件对话框
创建一个新项目的方法有两种:
方法一:选择菜单命令:Project>New...,会出现一个如图2.3所示的对话框,在其“Project Name”内输入自己的项目文件名(比如在此定义为jf002),系统会自动追加一个扩展名.prj。
方法二:选择菜单命令File>New...,会出现一个如图2.4所示的对话框,在其中选择“Project”标签,并且在其“Project Name:”条内输入自己的项目名称。
(2)如何在项目中添加文件
选择菜单命令File>New...,出现一个如图2.4所示的对话框。在“File”标签下,其“File Name”条内输入自己的源程序文件名,左侧窗口内三个选项分别对应三种不同拓展名的文件:源程序文件(.dt或.asm)、头文件(.h)、和文本文件(.txt)。点击“OK”后,会出现如图2.5所示的空白源文件编辑窗口。在其中可以编辑源程序,也可以直接将已经写好的程序粘贴进来。
图2.5 源程序编辑窗口
图2.6 寄存器和I/O窗口
对于文本编辑的几点说明:
1、支持汉字输入和编辑功能
2、标点符号的输入要在半角的西文方式下输入。
3、通过选择菜单命令Option>Font...来自由设置字体字号。 (3)如何调试程序
12
EM78P153S使用总结 在调试程序之前,要进行程序的编译工作,选择菜单命令Project>Rebuild All,此后在输出信息窗口可以看到汇编和链接的结果。没有错误,没有警告,没有提示信息,编译完成之后,进行复位操作,复位之后的寄存器状态如图2.6所示。
复位操作的具体方法有三种: (1)选择菜单命令Debug>Reset (2)按一次键盘上{F6}键; (3)点击工具栏上面的图标。
软件模拟器提供了多种运行程序的方式或调试程序的手段,比较常用的有以下几种:设置寄存器观察窗、复位、连续运行、单步运行、自动单步运行和连续单步运行、设置断点运行、自由运行、运行到光标、从指定行开始运行等。其具体的用法和Keil中的调试类似。
图2.7 调试示意图1
此实例中采用单步运行的方式来调试程序,这样可以很直观的看到每条语句执行完后寄存器的改变情况(每次寄存器的数值有修改都会将改动的地方变为红色,以示区别)。
通过单步操作,程序将会在EXI_WAIT子程序中循序执行,等待外部中断信号。如图2.7所示。此时通过修改寄存器的值,来模拟外部中断信号的产生,进而观察程序的运行情况。
图2.8 调试示意图2
图2.9 调试示意图3
具体方法:
将光标停留在P6端口的第1位上面,然后单击鼠标左键,此时第1位和第2位之间将会出现闪烁的光标。通过输入0来模拟外部中断的下降沿信号。每修改一个数字,系统均会立即更改“软件模拟器”的缓冲存储器。人工修改后的值自动以“蓝色”显示,以示区
13