Hola muy buen dia, he estado probando un codigo que realmente no me sale, estoy intentando transformar una variable string (ejemplo char valor[5]
a una variable entera tipo int16 duty, se que la funcion es duty=atol(valor); pero no me sale nada. Ayuda porfavor se los agradecere
, os dejo el codigo:
#include <18f4550.h>
#fuses INTRC,PUT,BROWNOUT
#use delay(INTERNAL=4M)
#use RS232 (BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7, PARITY=N,BITS=8)
#include <lcd.c>
#include <stdlib.h>
char valor[9];
int16 duty;
#INT_RDA
void serial_isr()
{
fgets(valor);
delay_ms(50);
puts(valor);
duty = atol(valor);
printf(lcd_putc,"%Lu",duty);
}
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
set_tris_c(0x00);
//CONFIGURACION PARA EL PWM, FRECUENCIA DE MOTOR A 1 KHz
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(0);
//INICIAR PRESENTACION
lcd_init();
lcd_gotoxy(3,1);
printf(lcd_putc,"PIC18F4550");
lcd_gotoxy(1,2);
printf(lcd_putc,"PWM: PIC_LabVIEW");
delay_ms(2000);
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"VALOR DEL DUTY:");
lcd_gotoxy(1,2);
while(TRUE)
{
}
}