【发布时间】:2014-03-02 12:03:43
【问题描述】:
我为 8 位 PIC 微控制器编写了一个 hello-world 程序,并希望在 MPLAB X IDE 模拟器上运行它。
我想在其引脚上创建一个刺激,并将结果显示在与输入引脚相对应的微控制器寄存器中(在寄存器上设置了手表)。
到目前为止我所取得的成就:该程序似乎在模拟器上运行良好,并且我可以创建一个“异步”刺激,即在以下情况下触发刺激的变化(例如在输入引脚上应用逻辑 0)我点击“开火”按钮。这会更改PORTC 寄存器的内容。但是,我无法让“同步”刺激起作用(例如,自动切换应用于输入引脚的刺激逻辑值)。 PORTC 不会改变。 (但模拟器输出表明正在应用刺激)。
Microchip 为 MPLAB 8.x IDE 模拟器编写了一些示例,我尝试将其应用于 MPLAB X (v2.0),但无法正常工作。为了确定我做错了什么(或者如果我遇到了错误),也许有人可以通过以下方式之一提供帮助:
- 举一个工作的 hello-world 的例子
- 发现我所遵循的过程中的任何错误(请参阅下面的步骤)
- 按照我的步骤,看看问题是否可以复制
这是我尝试过的:
步骤总结:
- 创建项目并将目标设备设置为“PIC16F77”
- 添加源文件
main.c - 设置模拟器为硬件工具,XC8为C编译器
- 在
PORTC特殊功能寄存器上添加变量监视 - 配置异步激励
- 配置同步激励
- 构建项目
- 在调试模式下运行
- 单步执行程序并查找
PORTC寄存器的更改。
在 MPLAB X IDE 中使用源文件 main.c 创建一个新项目,并选择“PIC16F77”作为目标器件:
#include <htc.h>
__CONFIG(
FOSC_HS
& WDTE_OFF
& PWRTE_OFF
& BOREN_OFF
);
void main(void) {
// set tristate port directions: 1=input, 0=output
TRISC = 0b11111111;
while (1);
}
我在PORTC SFR 寄存器上添加了一个变量监视:
在窗口/标签Stimulus > Asynchronous中配置异步激励:
在窗口/标签Stimulus > Pin/Register Actions配置同步刺激
最后:
我构建项目,在调试模式下运行,暂停并单步执行程序。
当我单击异步激励的“触发”按钮,然后单击 Step-Over 按钮时,PORTC 寄存器中的值会按预期更改。
但是在运行程序时,同步刺激似乎从来没有任何效果。似乎重复应用了刺激,但对PORTC 寄存器中的值没有影响。可以在窗口/选项卡中看到:Output > Stimulus 正在应用刺激:
我不明白为什么异步刺激可以正常工作,但似乎应用了同步刺激但没有产生预期的效果。
【问题讨论】: