Programas hechos en MPLAB

hola, revise tu proyecto y esta muy interesanre, pero como me falta un poco de experiencia en programacion quisiera a ver si me puedes mandar el codigo fuente del este progama, y que compilador usaste? te lo agradeceria mucho, mi mail
NoLeíLasPolíticasDelForoYPorEsoMeEditaronElMensaje@ForosDeElectrónica.Com

Use el compilador CCS C compiler....para mayor infrmacion pedes acceder a su paginas..
www.ccsinfo.com
o busca informacion en google...hay un monton de info en google...
a que te refieres con el codigo fuente....el archivo .hex?
 
primero programamaste en ccs, ese archivo esta en .c , despues compilaste y te resulto un archivo .hex, el codigo al que me refiero es el programa antes de compilar pero en visual, con el cual mandas los comandos para el transmisor, ese es el codigo que me gustaria revisar....
^_^
 
primero programamaste en ccs, ese archivo esta en .c , despues compilaste y te resulto un archivo .hex, el codigo al que me refiero es el programa antes de compilar pero en visual, con el cual mandas los comandos para el transmisor, ese es el codigo que me gustaria revisar....
^_^

ok ok!!! bueno deja cheko en mis documentos si es que un tengo la hoja de proyecto donde esta escrito el codigo.
mañana sin falta te lo envio...ok!

primero programamaste en ccs, ese archivo esta en .c , despues compilaste y te resulto un archivo .hex, el codigo al que me refiero es el programa antes de compilar pero en visual, con el cual mandas los comandos para el transmisor, ese es el codigo que me gustaria revisar....
^_^

Te mando el codigo fuente del control!!!

Espero que te ayude

Bueno Subo un buen manual para quienes ya entraron al mundo de programacion en C. Contiene en otro archivo .zip las simulaciones.

Y tambien subo un programa que recien he hecho que es un OSCILOSCOPIO via232, con una entrada analoga mides el voltaje y te lo proyecta a una grafica.

Al bajar el archivo contiene un texto para saber como funciona y con su respectivo codigo del Micro. Espero que les funciones ya que yo lo probe fisicamente y funciona al 99.99% ya que nada es perfecto en la vida.

Código:
///////////////////////////////////////
//AUTOR:JORGE ARTURO RODRIGUEZ HERNANDEZ
//TITLE;Enviar datos
//DATE:28/AGOSTO/'09
///////////////////////////////////////

//CONFIGURACION///////////////////
#include<16F886.h>
#device ADC=10
#fuses INTRC_IO,NOWDT,NOLVP,MCLR,NOPROTECT
#use delay(clock=8000000)
#use rs232(uart1,baud=2400)

float VALOR;
float VOLTAJE;

void config(void){
    set_tris_a(0x01);
    set_tris_c(0x80);
    setup_adc(ADC_CLOCK_INTERNAL|VSS_VDD);
    setup_adc_ports(sAN0);
    setup_comparator(NC_NC_NC_NC);
}

void main(void){
    config();

    do{
        delay_ms(10);
        VALOR=read_adc();
        VOLTAJE=(VALOR*5)/1023; //Transformamos a volatge
        printf("%.3f\n",VOLTAJE);
    }while(TRUE);
}
 

Adjuntos

  • CONTROL DE ROBOT MOVIL.zip
    62.3 KB · Visitas: 303
  • Imagen del Proyecto.rar
    141.8 KB · Visitas: 284
  • OSCILOSCOPIO SIMPLE.zip
    289.9 KB · Visitas: 311
  • Curso de MCU_PROTEUS.zip
    1.5 MB · Visitas: 340
  • Curso de MCU_Proteus_Programas.zip
    596.4 KB · Visitas: 344
Última edición:
Este es un manual para aquellos que quieren hacer aplicaciones por USB modo BULK transfer te menciona paso por paso para la contruccion de software en C# 2008.

Ademas un extra agrego. uin CALCULADOR DE TIMERS.

este programa te ayuda a calcular los timer0,1,2 para pic10/12/16/18
aveces necesitamos calcular el timer para cada cuando quiere que se produsca una interrupcion y todo lo demas...

espero que les ayude...

<------------------------------Espero sus comentarios-------------------------->
 

Adjuntos

  • USB_BULK TRANSFER_CURSO.zip
    1.4 MB · Visitas: 385
  • USB_BULK_TRANSFER.zip
    360.3 KB · Visitas: 310
hola!! yo programo en c18 pics 18 pero ahora quiero programar pic12 y 16 en c, y queria saber si con el ccs puedo programar tambien por registros, es decir, configurar los registros adcon adcon1 etc, es que todos los programas que he visto lo hacen con instrucciones que no conozco y que realmente no se lo que se ejecuta por detras. . . y tambien me podria evitar los fuses haciendolo como en c18, con los #pragma config que es al fin y al cabo como esta en el datasheet!! gracias!!
 
hola!! yo programo en c18 pics 18 pero ahora quiero programar pic12 y 16 en c, y queria saber si con el ccs puedo programar tambien por registros, es decir, configurar los registros adcon adcon1 etc, es que todos los programas que he visto lo hacen con instrucciones que no conozco y que realmente no se lo que se ejecuta por detras. . . y tambien me podria evitar los fuses haciendolo como en c18, con los #pragma config que es al fin y al cabo como esta en el datasheet!! gracias!!

debes de usar esto:

#byte TRISB=0x86
#byte PORTB=0x06

entonces despues del main:

void main(void){
TRISB=0x00; //TODAS SALIDAS
PORTB=0x00;
}
y asi...solo hay definirlos con #byte al principio del programa
 
el archivo
#include¨16F628A.H¨ // POR EJEMPLO

esa no viene los registros como tu te lo sabes, sino viene por ejemplo
en lugar de TRISB.

viene SET_TRIS_B(0x00); que es igual a TRISB=0x00;

pero debes de definir el TRISB ve como te explique arriba
 
george.manson.69.
FELICITACIONES POR TU TRABAJA Y APORTES.
Quisiera preguntarte, estoy trabajando usb en modo HID, con algunos ejemplos de C CCS.
Pero solo logro que al oprimir determinada letra me envie algun mensaje al terminal virtual..
Quiero hacerlo trabajar en modo eco, que reciba los caracteres y los
imprima directamente al terminal.Como te digo soy nuevo en esto, si pudieras ayudarme
te lo agradeceria...

Amigo george.manson.69.:)
Exelente labor..:apreton:
Este foro me agrada mucho..
Felicitaciones de nuevo, este es el lugar para aprender..:aplauso:

george.manson.69.
estoy tratando de simular tus ejemplos de usb,,pero no funcionan en mi pc..
abren los ejecutables arranca la simulacion, pero no logro integrar, por ejemplo
el terminal virtual del sensor de temperatura para que muestre los valores
leidos desde la simulacion..
AYUUUUDAA POR FAVOR.:unsure::confused:
 
Última edición:
george.manson.69.
FELICITACIONES POR TU TRABAJA Y APORTES.
Quisiera preguntarte, estoy trabajando usb en modo HID, con algunos ejemplos de C CCS.
Pero solo logro que al oprimir determinada letra me envie algun mensaje al terminal virtual..
Quiero hacerlo trabajar en modo eco, que reciba los caracteres y los
imprima directamente al terminal.Como te digo soy nuevo en esto, si pudieras ayudarme
te lo agradeceria...

Amigo george.manson.69.:)
Exelente labor..:apreton:
Este foro me agrada mucho..
Felicitaciones de nuevo, este es el lugar para aprender..:aplauso:

george.manson.69.
estoy tratando de simular tus ejemplos de usb,,pero no funcionan en mi pc..
abren los ejecutables arranca la simulacion, pero no logro integrar, por ejemplo
el terminal virtual del sensor de temperatura para que muestre los valores
leidos desde la simulacion..
AYUUUUDAA POR FAVOR.:unsure::confused:

Acual es el programa exactamente es el que estas usando(osea el que bajaste de aqui). Esque tengo varios de USB de temperatura y no se cual sera...si puedes decirme cual es!! para poder ayudarte...

Nota los programas pueden funciar pefectamente de Window Xp.
Mientras el programa que contiene el Micro...los he calado y me han funcionado de maravilla...asegurate que funcione bien al conectar el USB a la compu que te lo detecte.

Muy bueno el post amigo me sirve de mucho es excelente


Gracias caponero!!! y espera mas proyectos, en este caso se termino la comunicacion serial va hacer proyectos con USB en modo BULK TRANSFER...
y otra vez gracias..y saludos!!!
 
Última edición:
Acual es el programa exactamente es el que estas usando(osea el que bajaste de aqui). Esque tengo varios de USB de temperatura y no se cual sera...si puedes decirme cual es!! para poder ayudarte...

Nota los programas pueden funciar pefectamente de Window Xp.
Mientras el programa que contiene el Micro...los he calado y me han funcionado de maravilla...asegurate que funcione bien al conectar el USB a la compu que te lo detecte.




Gracias caponero!!! y espera mas proyectos, en este caso se termino la comunicacion serial va hacer proyectos con USB en modo BULK TRANSFER...
y otra vez gracias..y saludos!!!

El programa es aquel, en el cual se digita la tecla "a" o "x" y sale el mensaje respectivo
lo que yo quiero es que al oprimir cualquier tecla se vea reflejada en la terminal virtual.
como trabajar el rs232 en modo eco,pero con el usb..:rolleyes:, gracias por tu ayuda.
 
Ya pude resolver lo de la simulacion de los circuitos en proteus.
Casi me saco un ojo con eso..
solo fue reinstalar las librerias usb de proteus, algo por ahy me estaba fallando.
 
Amigo george..:aplauso:
A proposito de tu CURSO DE MCU Y PROTEUS,,
Trate como propones de hacer desplazar la palabra HOLA del pequeño publik que pones como ejemplo de derecha a izquierda, y despues de tanto matarme la cabeza y no lograrlo
decidi cambiar la conexion de las matrices, para que las columnas fueran barridas de derecha a izquierda, segun la perspectiva de vista del monitor de mi pc; y encontre que la letra "L" salia invertida, lo cual me obligo a invertir la posicion de esos bytes en la tabla.
A mi manera de pensar, esa no es la forma; me podrias colaborar con eso y regalandome una explicacion detallada de como funciona el codigo para estas matrices..Te agradesco
y perdon la molestia..:oops:
 
Este pequeña guia solo te menciona como hacer un enlaze en labview para que te detecte la conexion del usb con el VID&PID asignado al micro.
Y como no salirme del tema tambien se encuetra el programa que debe de ir al micro, que es hecho en CCS. cosa que igual al manual de USB modo bulk transfer.(arriba)

Amigo george..:aplauso:
A proposito de tu CURSO DE MCU Y PROTEUS,,
Trate como propones de hacer desplazar la palabra HOLA del pequeño publik que pones como ejemplo de derecha a izquierda, y despues de tanto matarme la cabeza y no lograrlo
decidi cambiar la conexion de las matrices, para que las columnas fueran barridas de derecha a izquierda, segun la perspectiva de vista del monitor de mi pc; y encontre que la letra "L" salia invertida, lo cual me obligo a invertir la posicion de esos bytes en la tabla.
A mi manera de pensar, esa no es la forma; me podrias colaborar con eso y regalandome una explicacion detallada de como funciona el codigo para estas matrices..Te agradesco
y perdon la molestia..:oops:

Intentaste poner las palabras al reves por ejemplo:

en el arreglo donde estan las variables que se usan para vizualizar las letras

0x00,0xx00,0x00,0x00//H
0x00,0x00,0x00,0x00//O
0x00,0xx00,0x00,0x00//L
0x00,0x00,0x00,0x00//A

por ejemplo cambia las letras en lugar de que empieze el arreglo de arriba a bajo,
que empieze de abajo a arriba.

0x00,0x00,0x00,0x00//A
0x00,0xx00,0x00,0x00//L
0x00,0x00,0x00,0x00//O
0x00,0xx00,0x00,0x00//H

y cambia el "for" que empieze desde 7 a 0. lo subo despues ya que no traigo nada ahorita sobre el curso de mcu.
 

Adjuntos

  • USB&Labview.pdf
    1.1 MB · Visitas: 235
Última edición:
Hola george, tengo una inquietud, me gustaría hacer este mismo tipo de comunicacion pero entre un PIC12F629 como transmisor y un PIC16F628A como receptor, ya lo he intentado y no me ha dado resultados... adjunto te mando los codigos que desarrolle con el compilador c ccs y con la ayuda del libro COMPILADOR C CCS Y SIMULADOR PROTEUS PARA MICROCONTROLADORES... Cualquier tipo de ayuda sería de gran aporte, ya que llevo varios días intentándolo...Gracias. La lógica que quiero desarrollar es muy parecida a la que haces en tus ejemplos...
 

Adjuntos

  • Tx.txt
    751 bytes · Visitas: 104
  • Rx.txt
    980 bytes · Visitas: 82
Hola a todos disculpen estoy programando una lcd de 4bits en un pic 18f8720 a 20 Mhz en la simulacion me sale correctamente pero en la practica no me sale... quiera ver quien me puede ayudar porque la verdad no encuentro el error... por cierto la patita rw esta a tierra....
 
ok pero me dijeron que podia ser por los tiempos ustedes saben algo de eso... como es a 20Mhz o tambien porque no he desactivado alguna funcion que este haciendo ese puerto... agradeceria mucho su ayuda...

aqui esta el .h

Código:
#include <18F8720.h>
#device adc=8

#FUSES NOWDT                 	//No Watch Dog Timer
#FUSES WDT128                	//Watch Dog Timer uses 1:128 Postscale
#FUSES EC                    	//External clock with CLKOUT
#FUSES NOPROTECT             	//Code not protected from reading
#FUSES NOOSCSEN              	//Oscillator switching is disabled, main oscillator is source
#FUSES BROWNOUT              	//Reset when brownout detected
#FUSES BORV25                	//Brownout reset at 2.5V
#FUSES NOPUT                 	//No Power Up Timer
#FUSES NOCPD                 	//No EE protection
#FUSES STVREN                	//Stack full/underflow will cause reset
#FUSES NODEBUG               	//No Debug mode for ICD
#FUSES LVP                   	//Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOWRT                 	//Program memory not write protected
#FUSES NOWRTD                	//Data EEPROM not write protected
#FUSES NOWAIT                	//Wait selections unavailable for Table Reads or Table Writes
#FUSES MCU                   	//Microcontroller Mode
#FUSES NOWRTC                	//configuration not registers write protected
#FUSES NOWRTB                	//Boot block not write protected
#FUSES NOEBTR                	//Memory not protected from table reads
#FUSES NOEBTRB               	//Boot block not protected from table reads
#FUSES NOCPB                 	//No Boot Block code protection

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3)

aqui esta el .c

#include "D:\Pruebas1\Nueva carpeta\PRUEBALCD.h"
#include "D:\Pruebas1\Nueva carpeta\lcdnuevo.c"


void main()
{
   #byte PORTE=0xF84
   #byte lcd = 0xF84  // Direccion de la estructura "lcd".
//#byte lcd = 9      // Direccion del puerto d

  setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_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_timer_4(T4_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   lcd_init();
      lcd_putc("hola mundo");
   delay_ms(10000);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab

   // TODO: USER CODE!!

}

aqui esta la libreria lcd

///////////////////////////////////////////////////////////////////////////
// LCD                                   
///////////////////////////////////////////////////////////////////////////
//     E0  RS
//     E1  ENABLE
//     E4  D4
//     E5  D5
//     E6  D6
//     E7  D7
//   (Sin 'RW')
//
// Funciones soportadas:
//                         lcd_init()
//                         lcd_gotoxy( BYTE col, BYTE fila)
//                         lcd_putc( char c)
//                              \f  Clear display                             
//                              \n  Go to start of second line                
//                              \b  Move back one position
//
///////////////////////////////////////////////////////////////////////////
#define use_porte_lcd TRUE  //LCD conectado al puerto b.
//
struct lcd_pin_map {
   BOOLEAN rs;       // RE0
   BOOLEAN enable;   // RE1
   BOOLEAN unused1;  // RE2
   BOOLEAN unused2;  // RE3
   int data : 4;     // RE4-RE7
} lcd;
//
#byte lcd = 0xF84  // Direccion de la estructura "lcd".

#define set_tris_lcd(x) set_tris_e(x)
#define lcd_type 2           // Tipo de LCD: 0=5x7, 1=5x10, 2=2 lineas
#define lcd_line_two 0x40    // Dirección de la LCD RAM para la 2da. linea
//
//Defino la cadena de inicializacion del LCD.
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
//
//Configuro el estado de cada pin para lectura y escritura:
struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // Escribir.
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // Leer.
//
//Funciones:
BYTE lcd_read_byte() {
      BYTE low,high;
      set_tris_lcd(LCD_READ);
      delay_cycles(1);
      lcd.enable = 1;
      delay_cycles(1);
      high = lcd.data;
      lcd.enable = 0;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(1);
      low = lcd.data;
      lcd.enable = 0;
      set_tris_lcd(LCD_WRITE);
      return( (high<<4) | low);
}
//
void lcd_send_nibble( BYTE n ) {
      lcd.data = n;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(2);
      lcd.enable = 0;
}
//
void lcd_send_byte( BYTE address, BYTE n ) {
      lcd.rs = 0;
      while ( bit_test(lcd_read_byte(),7) ) ;
      lcd.rs = address;
      delay_cycles(1);
      delay_cycles(1);
      lcd.enable = 0;
      lcd_send_nibble(n >> 4);
      lcd_send_nibble(n & 0xf);
}
//
void lcd_init() {
    BYTE i;
    set_tris_lcd(LCD_WRITE);
    lcd.rs = 0;
    lcd.enable = 0;
    delay_us(180);
    for(i=1;i<=3;++i) {
       lcd_send_nibble(3);
       delay_us(60);
    }
    lcd_send_nibble(2);
    for(i=0;i<=3;++i)
       lcd_send_byte(0,LCD_INIT_STRING[i]);
}
//
void lcd_gotoxy( BYTE x, BYTE y) {
   BYTE address;
   if(y!=1)
     address=lcd_line_two;
   else
     address=0;
     address+=x-1;
     lcd_send_byte(0,0x80|address);
}
//
void lcd_putc( char c) {
   switch (c) {
     case '\f'   : lcd_send_byte(0,1);
                   delay_ms(2);
                                           break;
     case '\n'   : lcd_gotoxy(1,2);        break;
     case '\b'   : lcd_send_byte(0,0x10);  break;
     default     : lcd_send_byte(1,c);     break;
   }
}

y aqui esta el esquema... noc como ingresarlo... me sale error... bueno si me pueden ayudar con esto seria chevere... igual esta conectado al puerto e
 
Última edición por un moderador:
Atrás
Arriba