Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
#include "C:\trabajao de grado\Cyfon\main.h"
#include <LCD.C>
#include <math.h>
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#BYTE TRISd=0XF95
#BYTE PORTd=0XF83
#byte trisc=0XF94
#byte portd=0xf83
//#byte TXSTA= 0XFAC
//#byte baudcon =0XFB8
//#byte CSRC=(CSRC,1)
int i;
int16 lectura,lectura1;
float mm,calc,calc1,pulg,volt, portb,valorb;
void main()
{
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_tris_b(0x00);
set_tris_c(0b10000000);
set_tris_a(0x0f);
set_tris_d(0x00);
setup_adc_ports(AN0);
set_adc_channel(0);
lcd_init();
lcd_putc ('\f');
lcd_gotoxy(1,1);
for (i=0;i<1;i++)
{
printf(lcd_putc,"\f");
lcd_gotoxy(4,1);
printf(lcd_putc, "Bienvenido");
delay_ms(1000);
printf(lcd_putc,"\f");
lcd_gotoxy (4,1);
printf(lcd_putc,"Calibrador ");
lcd_gotoxy (5,2);
printf(lcd_putc,"UNEXPO");
delay_ms(1000);
}
while (TRUE)
{
if (input (pin_A3))
{
delay_ms(20);
lectura=read_adc();
putc (lectura); //envio de dato serial
delay_ms(20);
lectura1=lectura*0.4;
volt= 5.0*(lectura/255);
calc = volt /6 ;
calc1 = calc /2 ;
pulg = calc1 ;
mm = pulg*25.4;
delay_ms(10);
printf(lcd_putc,"\f"); // Borro la pantalla LCD
lcd_gotoxy(1,1);
portb=lectura; // Lo mando al puerto b
printf(lcd_putc,"Pulgadas = %2.2g ",pulg); // Mando a mostrar el valor del conversor en la LCD
delay_ms(500);
}
else
{
delay_ms(20);
lectura=read_adc();
putc (lectura); // envio de dato serial
delay_ms(20);
lectura1=lectura*0.4;
volt= 5.0*(lectura/255);
calc = volt /6 ;
calc1 = calc /2 ;
pulg = calc1;
mm = pulg*25.4;
delay_ms(10);
printf(lcd_putc,"\f"); // Borro la pantalla LCD
lcd_gotoxy(1,1);
portb=lectura; // Lo mando al puerto b
printf(lcd_putc,"Milimetros = %2.2g",mm);
delay_ms (500);
}
}
}
#include "C:\trabajao de grado\Cyfon\main2.h"
#include <LCD.C>
#include <math.h>
#use delay ()
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#BYTE TRISd=0XF95
#BYTE PORTd=0XF83
int16 lectura,lectura1,volt;
float mm,calc,calc1,pulg,portb;
//#INT_RDA
//RDA_isr()
//{
//lectura=GETC();
//}
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_4MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF);
lcd_init();
lcd_putc ('\f');
lcd_gotoxy(1,1);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
set_tris_b (0x00);
set_tris_c (0x00);
set_tris_a (0x0f);
set_tris_d(0xff);
lcd_init();
lcd_putc ('\f');
lcd_gotoxy(1,1);
while (true)
{
if (input (pin_A3))
{
lectura= getc();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
delay_ms(20);
lectura1=lectura*0.4;
volt= 5.0*(lectura/1023);
calc = volt /6 ;
calc1 = calc /2 ;
pulg = calc1;
mm = pulg*25.4;
delay_ms(10);
printf(lcd_putc,"\f"); // Borro la pantalla LCD
lcd_gotoxy(1,1);
portb=lectura; // Lo mando al puerto b
printf(lcd_putc,"pulgadas = %2.2g", pulg); // Mando a mostrar el valor del conversor en la LCD
delay_ms(500);
}
else
{
lectura= getc();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
delay_ms(20);
lectura1=lectura*0.4;
volt= 5.0*(lectura/255);
calc = volt /6 ;
calc1 = calc /2 ;
pulg = calc1;
mm = pulg*25.4;
delay_ms(10);
printf(lcd_putc,"\f"); // Borro la pantalla LCD
lcd_gotoxy(1,1);
portb=lectura; // Lo mando al puerto b
printf(lcd_putc,"Milimetros = %2.2g",mm);
delay_ms (500);
}
}
}
Prueba cambiando el modo de transmisión de datos.Hola a todos!
Quisiera pedirles ayuda, sucede que estoy tratando de enviar una cadena de caracteres desde un pic18f4550 usando el puerto serial, todo en proteus va bien pero al hacer pruebas ya con el ciruito armado me envía una serie de caracteres muy raros, realice pruebas con un pic16f877 y funciona correctamente, les menciono que he realizado los cambios pertinentes para compilar el 16f y el 18f, pienso que alguna configuración de fusibles o velocidad de reloj se me esté pasando, por favor necesito su ayuda!
Toda esa información la encuentras en el archivo P18F4550.INC y en el archivo 18F4550TEMP.ASMola compañeros de foro,.,.
la presente es para solicitar información de la programación de la velocidad de reloj del pic18f4550.,. como se configura en asembler,
es que estoy realizando comunicación serial entre dos de estos pics,, entre ellos funciona de maravilla, pero el incoveniente surge al querer utilizarlos con otros dispositivos como un xbee en este caso,.,..,
e intentado de todo, pero no veo incovenientes,, por lo cual mi sospecha radica en el manejo del cristal, ya que este pic tiene un pll y una variedad de formas para configurar la frecuencia del dispositivo,.,.,.
les agradezco su pronta respuesta,.,. no siendo mas me despido
Toda esa información la encuentras en el archivo P18F4550.INC y en el archivo 18F4550TEMP.ASM
if (valor<36 && valor>28)
{
PORTBbits.RB0=1;
PORTBbits.RB1=1;
}
if (valor<28)
{
LATBbits.LATB0 = PORTCbits.RC2;
CCPR1L=(valor-28)*(-9);
LATBbits.LATB1=0;
}
if (valor>36)
{
LATBbits.LATB1 = PORTCbits.RC2;
CCPR1L=(valor-36)*(9);
LATBbits.LATB0=0;
}