MPLAB IDE中的模拟器Hello World:使用引脚/寄存器操作将激励放在引脚上

时间:2014-03-02 12:03:43

标签: simulator pic mplab

我为8位PIC单片机编写了一个hello-world程序,并希望在MPLAB X IDE模拟器上运行它。

我想在其引脚上创建一个激励,并将结果显示在微控制器的寄存器中,该寄存器对应于输入引脚(在寄存器上设置了一个监视器)。

到目前为止我所取得的成果:程序似乎在模拟器上正常运行,我可以创建一个“异步”激励,即激发一个刺激的变化(例如在输入引脚上应用逻辑0)我点击“开火”按钮。这会更改PORTC寄存器的内容。然而,我无法使“同步”激励工作(例如,自动切换应用于输入引脚的激励逻辑值)。 PORTC不会改变。 (但模拟器输出表明正在应用刺激)。

Microchip已经为MPLAB 8.x IDE模拟器编写了一些示例,我尝试将其应用于MPLAB X(v2.0),但我无法正常工作。为了确定我做错了什么,(或者如果我遇到了错误),也许有人可以通过以下方式之一提供帮助:

  • 举一个工作世界的例子
  • 发现我所遵循的流程中的任何错误(请参阅下面的步骤)
  • 按照我的步骤查看问题是否可以复制

这就是我的尝试:

所遵循的步骤摘要:

  1. 创建项目并将目标设备设置为“PIC16F77”
  2. 添加源文件main.c
  3. 将模拟器设置为硬件工具,将XC8设置为C编译器
  4. PORTC特殊功能寄存器
  5. 上添加变量监视
  6. 配置异步激励
  7. 配置同步刺激
  8. 构建项目
  9. 以调试模式运行
  10. 单步执行程序并查找PORTC寄存器的更改。
  11. 在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注册表中添加了一个变量监视:

    enter image description here

    在窗口/标签Stimulus > Asynchronous中配置异步激励:

    enter image description here

    在窗口/标签Stimulus > Pin/Register Actions

    中配置同步激励

    enter image description here

    最后:

    我构建项目,在调试模式下运行,暂停,并单步执行该程序。

    当我点击异步激励的“fire”按钮然后单击Step-Over按钮时,PORTC寄存器中的值会按预期变化。

    但是当通过该程序时,同步刺激似乎永远不会产生任何影响。看起来刺激被反复应用,但对PORTC寄存器中的值没有影响。可以在窗口/标签中看到:Output > Stimulus正在应用刺激:

    enter image description here

    我不明白为什么异步刺激工作正常,但似乎应用了同步刺激,但没有产生预期的效果。

1 个答案:

答案 0 :(得分:0)

问题是通过Pin / Register Actions选项卡设置的同步PORTC激励没有改变输入引脚上的值。相反,它设置PORTC寄存器的值,因此仅在TRISC在C代码中设置为OUTPUT时影响寄存器中的值,即0b00000000。

我还没有弄清楚如何在输入时同步设置引脚的值。