[英]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.