簡體   English   中英

PIC16F887 PORT無法與XC8 C編譯器一起使用

[英]PIC16F887 PORT won't work with XC8 C compiler

我是很新,PIC編程,我試圖用C(與Microchip的免費XC8編譯MPLABX )做一個簡單的“輸入到輸出”節目。
我遇到的問題是,在C語言中進行編程時,RA2,RA3和RA5輸入引腳不起作用。
這可能不是硬件問題,因為在梯形圖中編程時,這些引腳可以正常工作。
我已經在互聯網上搜索了一段時間,但找不到任何遇到相同問題的人。

我嘗試刻錄到PIC上的程序如下:

#define _XTAL_FREQ 20000000

#include <xc.h>

// BEGIN CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
//END CONFIG

int main()
{
  TRISB = 0x00;
  TRISE = 0x00;
  TRISC = 0x00;
  TRISD = 0xFF;
  TRISA = \
          _TRISA_TRISA2_MASK |\
          _TRISA_TRISA3_MASK |\
          _TRISA_TRISA4_MASK |\
          _TRISA_TRISA5_MASK;
  PORTD = 0x00;
  PORTA = 0x00;
  PORTB = 0x00;
  PORTE = 0x00;
  PORTC = 0x00;

  while(1){
    PORTB = PORTA;
  }
  return 0;
}

如果將RA4設置為HIGH,我確實會在PORTB上獲得輸出,但是對於RA2,RA3或RA5則沒有。 我相信這可能是配置位或其他問題,但是我不確定。

使用的硬件:

  • 微芯PIC16F887

  • FLEXiS Plus板 (對不起,沒有英文手冊,但是在第8和9頁中有板原理圖)

使用的軟件:

我認為問題在於這些特定的引腳也是ADC模塊的模​​擬輸入,您必須將它們配置為數字I / O才能使用它們。 嘗試在程序的開頭設置ANSEL = 0x00

您可以在數據手冊中看到,POR上ANSEL的默認值為0xFF因此默認情況下所有模擬引腳都配置為模擬輸入。

要將引腳用作模擬輸入,應將ANSEL和TRISx寄存器中的相關位置1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM