微控制器(MCU)电路
TINA v7及更新版本支持多种PIC、AVR和8051微控制器,并持续增加更新的MCU。你可以查看、修改和调试处理器代码。当然,你可以自己创建代码。
TINA有两种方法为微控制器提供程序。你可以使用标准编译器(如PIC的MPLAB)提供的二进制和调试文件,或者你可以直接在TINA中使用其内置汇编器-调试器加载汇编码运行和调试。
运行及编辑MCU代码
从Examples\Microcontrollers\PIC文件夹中加载PIC Flasher.TSC电路。会显示出下图,采用16F73 PIC 微控制器的原理图。
按钮观察它是如何工作的。显示会单步前向步进。
双击MCU查看其中ASM代码。(更多详情请查看快速启动手册)。
TINA有个很重要的功能,你可以在TINA中编辑并修改源代码。
我们在代码中做如下修改。将(下方选中的)第25行指令(你可以在代码编辑器视窗右下角看到行数)
从
addlw 01H
改为
addlw 02H按下 图标保持修改过的代码,关闭打开中的MCU视窗。如果你按下按钮,现在增量为2!注意:改动后的代码自动保存在TINA.TSC文件中。
使用调试器
我们看看另一个更具交互性的应用。
从 Examples\Microcontrollers\Pic 文件夹中加载 PIC16F84interrupt_rb0.TSC 例子。
按下 按钮。乍一看没有任何改变。
不过,如果你点击SW-HL1开关,每次开关从低到高变化,显示器会前向加1。PIC中断处理能力让我们检测开关变化。现在我们更具体地使用交互ASM调试器的了解其运行。
选择分析菜单中的选项,激活调试器。如下图分析选项对话框所示,勾选“启用MCU代码调试器”复选框。
按下确定按钮之后显示MCU调试器。
我们按下跟踪进入 按钮单步跟踪程序执行。大约点击14次后,我们来到PT1:标签,即程序开始进入无限循环的地方。
PT1: INCF TEMP, F GOTO PT1
选择点击SW-HL1开关,将其置高。(你应该在光标变成向上指示箭头 Î 时点击按钮 )。
回到调试器并点击 跟踪进入两次。
程序会识别出中断,并跳转到
NT_SERV: label.增加COUNTER计数,复制到PORT A。现在输出为1。这之后,程序会返回PT1的“无限循环”中。INT_SERV:
INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORT
在调试器中编辑代码。
现在我们使用调试器在程序中做一点儿小小修改。使用复制粘贴来复制 INCF COUNTER, F 命令,如下所示:
INT_SERV: INCF COUNTER, F INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORTA
现在你按下 按钮,程序会提示:
按下“是”并再次按下 按钮。选择开关每次从低到高变化的增量为2。你也可以按下
设置断点
采用单步执行的模式通常无法到达程序特定的某点。即使你足够耐心单步执行上千次,程序流程也可以无法到达你所需的那一点。要停止在特定的某行,你可以在目标语句设置“断点”标记。在调试器的连续运行模式下,使用 u命令,现在程序会在执行标注命令之前的那一行停止下来。
要演示这一点,点击“INT_SERV: label ”后的中断服务中增加语句。并按下 设置断点按钮。
现在按下 运行按钮。该程序开始运行在 “无限循环”中。即使你设定了一个断点,因为没有到达过断点,代码也不会停止。不过,当你从低到高改变开关,程序会停止在所标注的语句上:
INT_SERV: INCF COUNTER, F现在你可以继续单步执行 或留在持续运行模式中。