hola,
Tengo un problema con el compilador XC8, tengo el siguiente código:
*
* File: main.c
*
* Created on August 16, 2010, 12:09 PM
*/
// PIC16F877A Configuration Bit Settings
// 'C' source line config statements
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#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)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
#define _XTAL_FREQ 20000000
int main(void) {
TRISAbits.TRISA0 = 0;
TRISBbits.TRISB7 = 1;
OPTION_REGbits.nRBPU = 0;
PORTB = 0;
PORTA = 0;
while(1){
if(PORTBbits.RB7 == 0){
__delay_ms(300);
if(PORTAbits.RA0 == 1)
PORTAbits.RA0 = 0;
if(PORTAbits.RA0 == 0)
PORTAbits.RA0 = 1;
}
//PORTAbits.RA0 = PORTAbits.RA0 + 1;
}
return 0;
}
cuando pulso por primera vez entra en la conidición if y tmb entra en la segunda condicion PORTAbits.RA0==0 y enciende el LED.
Pero al pulsar el boton por segunda vez no se apaga.
Otro problema que he encontrado:
PORTA = 0;
while(1){
PORTAbits.RA0 = PORTAbits.RA0 - 1;
__delay_ms(1000);
}
Aquí el LED en el estado incial esta apagado, cuando efectúa la resta, el LED se enciende , pero de allí ya no vuelve ha apagarse