#include <18F4550.h>
#fuses PLL1,CPUDIV1,USBDIV,XTPLL,NOFCMEN,NOIESO,PUT,NOBROWNOUT,VREGEN,NOWDT,NOPBADEN,MCLR,NOSTVREN,NOLVP,NODEBUG,PROTECT,NOSTVREN,NOCPB,NOWRT
#use delay(clock=48000000,RESTART_WDT)
#include <lcd4x20.c>
#use rs232(baud=9600, xmit=PIN_c6, rcv=PIN_c7, parity=N, bits=8,restart_wdt)
#byte porta = 0xF80 #byte portb = 0xF81 #byte portc = 0xf82 #byte portd = 0xf83 #byte porte = 0xf84
#priority rda
#define BUFFER_SIZE 60
char buffer[BUFFER_SIZE];
char b=0x00;
int xbuff=0x00;
unsigned int16 seg=0;
int1 desborde=0,star=0;
#INT_RTCC
void clock_isr()
{ set_timer0(19531); desborde=1; }
#int_RDA
RDA_isr
() { if(kbhit
()){ b
=getc(); buffer
[xbuff
++]=b
; } return 0; clear_interrupt
(int_rda
); }
void inicbuff(void)
{ int i; for(i=0;i<buffer_size;i++){ buffer[i]=0x00; restart_wdt(); } xbuff=0x00; }
void main()
{
lcd_init();
inicbuff();
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256 );
set_timer0(19531);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
star=0; desborde=0;
while (true)
{
lcd_gotoxy
(2,1); printf(lcd_putc
,"%02lu",seg
); if (buffer
[2]=='R' && buffer
[3]=='I' && buffer
[4]=='N' && buffer
[5]=='G') { printf("AT+CHUP"); delay_ms
(100); inicbuff
(); star
=1;} if (star==1 && desborde==1) {desborde=0; seg++;}
if (seg>=1 && seg <=3) {output_high(pin_a0);}
if (seg>=4 && seg<=15) {output_low(pin_a0);}
if (seg==16) {seg=0; star=0;}
}
}