2014-03-02 100 views
1

我已經爲8位PIC單片機編寫了一個hello-world程序,並且希望在MPLAB X IDE仿真器上運行它。MPLAB IDE中的仿真器Hello World:使用引腳/寄存器操作將引腳激勵到引腳

我想在其引腳上創建一個激勵,並將結果顯示在與輸入引腳相對應的微控制器寄存器中(在寄存器上設置了一個監視)。

到目前爲止我所取得的成就:程序似乎在模擬器上運行良好,我可以創建一個「異步」激勵,即激發激勵的變化(例如在輸入引腳上應用邏輯0)當我點擊「火」按鈕。這改變了PORTC寄存器的內容。然而,我無法使「同步」激勵器工作(例如,自動切換施加到輸入管腳的激勵邏輯值)。 PORTC不會更改。 (然而模擬器輸出表明刺激正在被應用)。

有一些Microchip爲MPLAB 8.x IDE模擬器編寫的例子,我嘗試將其應用於MPLAB X(v2.0),但無法工作。要建立什麼我做錯了,(或者,如果我遇到一個bug),也許有人可以通過以下方式之一幫助:

  • 給工作你好世界的一個例子
  • 現貨在這個過程中我已經按照(請參閱下面的我的步驟)
  • 按照我的步驟,看看問題是否可以複製

這任何錯誤是我曾嘗試:

總結的步驟如下:

  1. 創建項目,並設置目標設備是「PIC16F77」
  2. 添加源文件main.c
  3. 將模擬器作爲硬件工具,並XC8與C編譯器
  4. PORTC特殊功能寄存器上添加可變表
  5. 配置異步刺激
  6. 配置同步刺激
  7. 構建項目
  8. 調試模式運行
  9. 單步執行程序,並尋找PORTC寄存器的變化。

    #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註冊變量觀察:

與源文件main.c,並選擇「PIC16F77」作爲目標設備中創建MPLAB X IDE一個新項目:

enter image description here

配置異步刺激在窗口/標籤Stimulus > Asynchronous

enter image description here

配置在窗口/標籤Stimulus > Pin/Register Actions

enter image description here

同步刺激後來總算:

我生成項目,以調試模式運行,暫停並單步執行程序。

當我點擊異步激勵的「激活」按鈕,然後點擊Step-Over按鈕,PORTC寄存器中的值就會按預期改變。

但是,當運行程序時,同步刺激看起來似乎沒有任何效果。看來刺激重複使用,但對PORTC寄存器中的值沒有影響。可以看出在窗口/標籤:Output > Stimulus正在應用的刺激:

enter image description here

我不明白爲什麼異步激勵工作正常,但同步刺激似乎被應用,但不產生所需的效果。

回答

0

問題是通過引腳/寄存器操作選項卡設置的同步PORTC刺激不會改變輸入引腳上的值。相反,它設置PORTC寄存器的值,因此只有在C代碼中將TRISC設置爲OUTPUT時,纔會影響寄存器中的值,即0b00000000。

我還沒有弄清楚如何在輸入時同步設置引腳的值。