A mí me muestra que no reconoce las definiciones, por eso preguntaba, probablemente porque este PIC al ser tan pequeño no usa puertos A sino solo GPIO. Algunas cosas que tienen que cambiar sería, por ejemplo:Y también es importante mencionar qué errores muestra el compilador, no solo decir que el programa no compila por X razón.
TRISAbits.TRISA1 -> TRISIO.TRISIO1
PORTAbits.RA1 -> GPIObits_t.GPIO1
En otra sección está por ejemplo una llamada a PIR1bits.RCIF pero esa es una bandera del UART, tambien es hardware que este modelo no incluye por lo que no está declarada, preferiría borrar esas secciones ya que no veo que lo configure, parece que solo se basó en copiarlo del código de otro controlador. Esto tendría menor errores, pero faltan los dos archivos .h
C:
#include <xc.h>
#include "pic12f629.h"
#include <stdio.h>
#include <stdlib.h>
#include "CONFIG.h"
#include "ADC.h"
#define _XTAL_FREQ 4000000
uint8_t tiempo;
uint8_t datos[10];
void __interrupt() Interrupcion(void){
if(INTCONbits.TMR0IF == 1){
GPIObits_t.GPIO1 = 1; //alto
__delay_us(100);
GPIObits_t.GPIO1 = 0; //bajo
INTCONbits.TMR0IF = 0;
INTCONbits.TMR0IE = 0;
} /*else if(PIR1bits.RCIF == 1){
char dataRX = RCREG;
PIR1bits.RCIF = 0;
}*/
else if(INTCONbits.INTF == 1)
{
GPIObits_t.GPIO1 = 0; //triac apagdo
TMR0 = tiempo;
INTCONbits.TMR0IF = 0; //Limpia bandera de tmr0
INTCONbits.TMR0IE = 1;
INTCONbits.INTF = 0;
}
}
void TIMER0_init(void)
{
OPTION_REGbits.T0CS = 0; //0 TEMP, 1 CONT
OPTION_REGbits.PSA = 0; //0= PRE-TMR0, 1=PRE-WDT
OPTION_REGbits.PS = 0B100; //256
TMR0 = 255;
}
void RB0_init(void)
{
OPTION_REGbits.INTEDG = 1; //1 subida, 0= bajda
INTCONbits.INTF = 0;
}
void main(void) {
TRISIO.TRISIO1 = 0; //triac
TRISIO.TRISIO0 = 1; //in
ADC_init();
//UART_init();
TIMER0_init();
RB0_init();
INTCONbits.GIE = 1; //Habilita interrupcion global
INTCONbits.INTE = 1; //Habilita interrupcion por RB0
__delay_ms(500);
while(1)
{
tiempo = ADC_read(0);
if(tiempo >= 210){
GPIObits_t.GPIO1 = 1;
INTCONbits.INTE = 0;
}else if(tiempo <= 10){
GPIObits_t.GPIO1 = 0;
INTCONbits.INTE = 0;
}else{
INTCONbits.INTE = 1;
}
//sprintf(datos, "%d\n\r", tiempo);
//UART_write_text(datos);
__delay_ms(10);
}
return;
}