Autor
|
Tema: Introduccion a la programacion de PICS en lenguaje C (CCS) (Leído 617,930 veces)
|
Sourraund
Desconectado
Mensajes: 1.247
The Lord of the World
|
Hay algunas lecciones del post en los que no se pueden ver las imagenes de la simulación en el Proteus, hay algún modo de poder visualizarlas?
Saludos.
|
|
« Última modificación: 22 Febrero 2010, 11:49 am por Sourraund »
|
En línea
|
|
|
|
Sourraund
Desconectado
Mensajes: 1.247
The Lord of the World
|
Cuando quiero usar un lcd, sea el ejemplo que sea, siempre me sale este error: "DSIM model LCDALPHA.DLL failed to authorize - Missing or invalid Customer Key"
¿Alguien sabe como puedo solucionarlo?
Saludos y gracias.
|
|
|
En línea
|
|
|
|
elektronische
Desconectado
Mensajes: 1
|
Tengo un problema tratando de conectar un teclado de 4x3 a una LCD mediante un PIC 16F877A, no logro hacer que obtenga los datos del teclado, ajunto el código y el diagrama en ISIS, tal vez me puedan ayudar. #include <16f877a.h> //PIC utilizado #fuses HS,NOWDT,NOPROTECT,NOLVP //Configuramos los fuses #use delay (clock=4000000) //Oscilador a 4Mhz #INCLUDE "lcd.c" //Incluyo LCD.C #INCLUDE "kbd.c" void lcd_mostrar(void); char a; #byte PORTD=0xF81 #define use_portb_kbd TRUE void main(void) { port_b_pullups(TRUE); kbd_init(); lcd_init(); lcd_mostrar(); } void lcd_mostrar(void) { a=kbd_getc(); lcd_putc(a); }
|
|
|
En línea
|
|
|
|
dNnYaU~
Desconectado
Mensajes: 3
|
Buen día, antes que nada, me agrada este foro, recién lo he encontrado y hay mucha información valiosa gracias a los que se dan el tiempo de ayudar. aunque yo no cuento con suficiente tiempo si me gustaría aportar de lo poco que he hecho con PICs en CCS. Bueno... por lo pronto quisiera comentarle aqui al colega y para todos aquellos que tengan el mismo problema o simplemente quieran agilizar el tiempo de programación con un LCD, me agradaría adjuntarles una librería que en lo personal no me ha dado problemas. Así que aquí viene mi primer pregunta: ¿Como adjunto un archivo en este foro para compartir información? Cuando quiero usar un lcd, sea el ejemplo que sea, siempre me sale este error: "DSIM model LCDALPHA.DLL failed to authorize - Missing or invalid Customer Key"
¿Alguien sabe como puedo solucionarlo?
Saludos y gracias.
|
|
|
En línea
|
INSPIRACION, MOTIVACION, RENOVACION, ACTITUD, CONFRONTACION, CONCENTRACION, CONOCIMIENTO... RESPIRA... "LO DE MAS... ES LO DE MENOS"- ~'dnny@u '~
|
|
|
tercules
Desconectado
Mensajes: 1
|
hola amigos quisiera que me den una mano con este codigo cual sera el problema con el copilador: codigo: #include <16F876.H> #fuses HS,XT,NOPUT,NOPROTECT,NOWDT #use delay(clock=8M) #include <Flex_lcd.c>
#use fast_io(a) #use fast_io(b) #use fast_io(c
///**** DEFINIMOS NOMBRES A PUERTOS ****/// #bit CENTENAS = 0x06.4 #bit UNIDADES = 0x06.5 #bit SPEEDUP = 0x06.6 #bit SPEEDDOWN = 0x06.7
///**** VARIABLES GLOBALES ***/// int contador,stop,Duty,FlagRamp, mil,cen,dec,uni, uni2,dec2,cen2,mil2;
void reset() { mil=0; dec=0; cen=0; uni=0; uni2=0; dec2=0; cen2=0; mil2=0; contador=0; output_b(0x00); output_c(0x00); output_a(0x00); Stop=0; FlagRamp=0; Duty=0; set_pwm1_duty(0); //Borra la pantalla LCD } ///**** FUNCIÓN PANTALLA DE ARRANQUE ****/// void inicial() { lcd_gotoxy(2,1); lcd_putc("BOBINADORA 3.0"); lcd_gotoxy(2,2); lcd_putc("INOXSTEEL 2009"); delay_ms(3000); lcd_putc("\f"); }
///**** FUNCIÓN FIN DE BOBINADO ****/// void Fin() { int i; for (i=0;i<5;i++) { lcd_putc("\f"); delay_ms(300); lcd_gotoxy(5,1); lcd_putc("BOBINADO"); lcd_gotoxy(4,2); lcd_putc("FINALIZADO"); delay_ms(300); } lcd_putc("\f"); reset(); }
///**** INTERRUPCIÓN TIMER0 ****/// /// TIMER0 EN MODO CONTADOR /// /// LLEVA EL CONTEO POR SENSOR EXTERNO ///
#int_TIMER0 Void TIMER0_isr(void) { contador=1; set_timer0(255); clear_interrupt(int_TIMER0); } ///**** INTERRUPCIÓN RB0 ****/// /// PUESTA EN MARCHA SI HAY CANTIDAD INTRODUCIDA ///
#int_EXT
void Start_isr(void) { if (uni!=0 || cen!=0) {lcd_putc("\f"); Stop=1;} clear_interrupt(int_EXT); }
///**** INTERRUPCIÓN RB4-RB7 ****/// /// TOMA LOS DATOS RECIBIDOS EN LOS PULSADORES /// /// CENTENAS, UNIDADES, VELOCIDAD + Y - ///
#int_RB Void Pulsadores_isr() { if (SPEEDUP==1) if (duty<82) Duty+=4; if (SPEEDDOWN==1)if (duty>2) Duty-=4; if (CENTENAS==1) cen++; if (UNIDADES==1) uni++; if (uni>9) {dec++; uni=0;} if (dec>9) dec=0; if (cen>9) {mil++; cen=0;} if (mil>9) mil=0;
clear_interrupt(int_RB); } ///**** INTERRUPCIÓN TIMER1 ****/// /// SE ENCARGA DEL ARRANQUE SUAVE DEL MOTOR /// /// AL INICIAR EL BOBINADO - DE 0% A 50% VEL. ///
#int_TIMER1 Void SoftStart() { if (stop==1 && Duty<42 && FlagRamp==0) {Duty+=2; set_timer1(50000);} if (Duty==42) FlagRamp=1; }
///****FUNCIÓN PRINCIPAL****///
Void Main(Void) { int16 speed; speed=0; set_tris_a(0b110000); set_tris_b(0b11110001); set_tris_c(0b00000000);
///**** HABILITACIÓN Y AJUSTE DE INTERRUPCIONES****/// enable_interrupts(int_EXT); enable_interrupts(int_TIMER0); enable_interrupts(int_TIMER1); enable_interrupts(int_RB); enable_interrupts(global);
ext_int_edge(L_TO_H); setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1); setup_timer_2(T2_DIV_BY_16,82,1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); setup_ccp1(CCP_PWM);
clear_interrupt(int_RB); clear_interrupt(int_EXT); clear_interrupt(int_RTCC); clear_interrupt(int_ccp1);
reset();
lcd_init();
inicial();
while (true) { ///****BLOQUE PRINCIPAL DE PRESELECCIÓN****/// if (stop==0) { lcd_gotoxy(1,1); lcd_putc("INTRODUCE EL N"); lcd_gotoxy(15,1); lcd_putc(223); lcd_gotoxy(1,2); lcd_putc("DE ESPIRAS"); lcd_gotoxy(12,2); printf(lcd_putc,"%u",mil); lcd_gotoxy(13,2); printf(lcd_putc,"%u",cen); lcd_gotoxy(14,2); printf(lcd_putc,"%u",dec); lcd_gotoxy(15,2); printf(lcd_putc,"%u",uni); }
///****BLOQUE EN FUNCIONAMIENTO****///
if (Stop==1) { lcd_gotoxy( 1,1); lcd_putc("BOBINANDO"); delay_ms(20); lcd_gotoxy(11,1); printf(lcd_putc,"V.%03Lu",Speed); lcd_gotoxy(16,1); lcd_putc("%"); lcd_gotoxy( 1,2); lcd_putc("ESPIRAS N"); lcd_gotoxy(10,2); lcd_putc(223); lcd_gotoxy( 1,1); lcd_putc(" "); delay_ms(20); lcd_gotoxy(12,2); printf(lcd_putc,"%u",mil2); lcd_gotoxy(13,2); printf(lcd_putc,"%u",cen2); lcd_gotoxy(14,2); printf(lcd_putc,"%u",dec2); lcd_gotoxy(15,2); printf(lcd_putc,"%u",uni2); set_pwm1_duty(duty); //PWM para control de velocidad
Speed = Duty; //Variable de % de velocidad en pantalla Speed = (( Speed * 100) / 82 );
if (contador==1) {uni2++; contador=0;} if (uni2>9) {dec2++; uni2=0;} if (dec2>9) {cen2++; dec2=0;} if (cen2>9) {mil2++; cen2=0;}
if (mil2==mil && dec2==dec && cen2==cen && uni2==uni) {Stop=0; lcd_putc("\f"); fin();} } } }
|
|
|
En línea
|
|
|
|
samael.sys
Desconectado
Mensajes: 1
|
Hola Amigos he probado parte de lo q aki se habla de los PIC, yo estoy usando el 16f877 con algo de lo q aki hay, por el momento solo quiero encender un led, al parcer el programa esta bien; pero cuando lo simulo en proteus no me funciona, aki les dejo el codigo : //#include "C:\pruebas pic\control_motores.h" #include <16F877.h> #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES RC //Resistor/Capacitor Osc with CLKOUT #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES BROWNOUT //Reset when brownout detected #FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18) #FUSES NOCPD //No EE protection #FUSES NOWRT //Program memory not write protected #FUSES NODEBUG //No Debug mode for ICD #use delay(clock=4000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #byte port_b=0x06 void main() { port_b_pullups(TRUE); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); // TODO: USER CODE!! set_tris_b (0x00); // Declaramos puerto B como salida set_tris_a (0x1F); port_b=0; output_high(PIN_B0); //delay_ms (10); // esperamos 10 ms } GRACIAS!!!!
|
|
|
En línea
|
|
|
|
INVINCIBLE
Desconectado
Mensajes: 1
|
Buenas noches colegillasª!!
Mi pregunta es la siguiente...una vez que tengo compilado el codigo en c en el CCS y me simula ese codigo en el Proteus ...cual es el paso a seguir para poder grabar el contenido a la PIC respectiva suponienod que use la f1684a? Tengo entendido que primero debo generar un .ASM y luego el .HEX ... Por favor espero su gentil respuesta ..
Gracias
|
|
|
En línea
|
|
|
|
JCCC
Desconectado
Mensajes: 17
|
tienes el programa compilando y corriendo... ya tienes generado el .HEX, con el winpinc800, icprog o cualquier otro programa lo programas (con un programador de PICs) no es necesario el ASM. posdata: al menos pasate un rato por san google....
|
|
|
En línea
|
|
|
|
Tokes
Desconectado
Mensajes: 140
|
samael:
He compilado tu código exactamente como lo pusiste y si funciona (al menos en mi máquina).
Es todo.
|
|
|
En línea
|
|
|
|
osmar6
Desconectado
Mensajes: 1
|
hola!! soy nuevo en esto de programar pic C y me gustaria saber si es posible grabar en el pic con el programa CCS?? disculpen la ignoracia, pero como dije soy nuevo en esto.. desde ya muchas gracias..
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
introduccion ala programacion
Electrónica
|
cldo
|
0
|
3,285
|
23 Marzo 2006, 00:59 am
por cldo
|
|
|
Programacion de PICS
Electrónica
|
Zeroql
|
7
|
12,955
|
16 Octubre 2011, 00:24 am
por CCStuamigo
|
|
|
Introducción al Lenguaje PERL
Scripting
|
Dr.SysCrack
|
0
|
3,118
|
19 Noviembre 2007, 03:04 am
por Dr.SysCrack
|
|
|
Introducción a la programación
Programación General
|
Meta
|
1
|
3,075
|
23 Agosto 2010, 13:48 pm
por forever77
|
|
|
Introducción a la programación en Ruby
Scripting
|
peib0l
|
1
|
2,776
|
8 Agosto 2010, 19:19 pm
por Novlucker
|
|