elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Introduccion a la programacion de PICS en lenguaje C (CCS)
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Ir Abajo Respuesta Imprimir
Autor Tema: Introduccion a la programacion de PICS en lenguaje C (CCS)  (Leído 616,508 veces)
rober_gv

Desconectado Desconectado

Mensajes: 1


Ver Perfil
16f84 + ccs + proteus + rs232 + lcd
« Respuesta #80 en: 22 Mayo 2008, 22:29 pm »

Es una mala combinacion, tengo un problema con la simulación en proteus de un programa que me funciona grabado en el PIC. Envio caracteres desde el teclado del ordenador a un LCD en 4bit atraves del puerto rs 232. El problema esta en el puerto ya que la visualización en el LCD funciona. Me imagino que me falta algun retardo como los que hay que poner en .asm para que simule bien. Alguna idea???
 
                                       :rolleyes:


En línea

mvelez

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #81 en: 23 Mayo 2008, 04:30 am »

Hola soy nuevo en el foro y quisiera saber si alguien me podria ayudar sobre como utilizar en timer1 en CCS, para un proyecto en el cual necesito leer una señal IR de un control remoto. gracias


En línea

M@ndo31

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #82 en: 26 Mayo 2008, 03:22 am »

Que tal mi duda es sobre como se configuran las interrupciones se que se pueden hacer por el timer 0 y timer 1 y se que hay interrupciones externas, lo que deseo hacer para el proyecto que tengo es que cuando haya una interrupcion externa el pic deje de estar en modo sleep y a tienda lo que tiene programado para despues volver a sleep, pero pues si pueden explicarme un poco de interrupciones y no solo de la interrupcion externa seria de gran ayuda, para aprender.

   Gracias ;D
En línea

mvelez

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #83 en: 26 Mayo 2008, 22:06 pm »

hola este programa que hice no me lee bien la frecuencias del protocolo NEC y por eso cada vez que oprimo una misma tecla del control, me muestra numeros diferentes por el I2C. no se si es que tenga que usar un receptor infrarrojo (estoy usando el SFH 5110-40 de 40kHz, este se encuntra en RB0) distinto o si es problema del programa. si alguin me pudira ayudar se lo agradeceria. gracias.


#INCLUDE <16F877A.h>
#INCLUDE <MATH.H>
#USE delay(clock=20000000)
#FUSES HS,NOPROTECT,NOWDT,NOBROWNOUT,NOPUT,NOLVP
#USE I2C(master,SDA=PIN_C4,SCL=PIN_C3,slow)
#BYTE PORT_B= 6
#BYTE PORT_C= 7

LONG     TT,T,TTI;
INT1     START=0,DAT[32],HAYDAT;
INT      CDAT,I,CONTROL,CONT,AUX;

VOID LIMPIAR(VOID)
{
 FOR(I=0;I<32;I++)
 {
    DAT=0;
 }
  CDAT=0;
}

#INT_EXT
VOID LEER()
{
   TT = GET_TIMER1();
   T = TT-TTI;
   TTI= TT;
 
  IF(START==1)
   {
      IF(T>1375 && T<1420)
      {
      DAT[CDAT]=1;
      CDAT++;
      }
      IF(T>686 && T<708)
      {
      DAT[CDAT]=0;
      CDAT++;
      }
      IF(CDAT==32)
      {
         HAYDAT=1;
      }
   }
   IF(T>8375 && T<8500)
   {
      START=1;
      LIMPIAR();
   }
}

VOID CONVERTIR()
{
   FOR(CONT=16;CONT<=23;CONT++)
   {
      IF(DAT[CONT]==1)
      {
         AUX=POW(2,CONT-16);
         CONTROL=AUX+CONTROL;
      }
   }
}

VOID MAIN()
{
SET_TRIS_B(0B11111111);
SET_TRIS_C(0B11100111);
EXT_INT_EDGE(H_TO_L);     // Configuro captura de 1er flanco de subida
ENABLE_INTERRUPTS(INT_EXT); // Habilito las interrupciones necesarias
ENABLE_INTERRUPTS(GLOBAL);
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8);
START=0;
HAYDAT=0;
LIMPIAR();


WHILE(TRUE)
{
   IF(HAYDAT==1)
   {
      HAYDAT=0;
      CONVERTIR();
      I2C_START();
      I2C_WRITE(0X40);
      I2C_WRITE(CONTROL);
      I2C_STOP();
   }

}

}
En línea

Hellhole

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #84 en: 3 Junio 2008, 19:03 pm »

Para hacer un contador asdencente y descendente en ensamblador, que te valla contando asta 10 en un display de 7 segmentos de 0-9 y que ademas cuando llegue al nueve hacer que se encienda un led rojo y mientras no llegue a nueve este encendido uno verde. Estaria bien esto?

SENAB          BTFSC       PORTA,1;Explora porta si cambia salto incondicional a INC
                   GOTO         INC
                   BTFSC        PORTA,2 ;Idem, pero con DEC             
                   GOTO         DEC
INC             ADDWF       AUXILIAR ;suma 1 a auxiliar
                   CLRF          PORTB     ;borra el portb
                   MOVLW       AUXILIAR; mueve auxiliar a W
                   MOVWF       PORTB    ;W a portb
                   BTFSC        B'01110011' ;si en el diplay marca 9 salto a LEDR
                   GOTO         LEDR
DEC             SUBWF       AUXILIAR  ;resta 1 a auxiliar
                   CLRF          PORTB       ;borra el portb
                   MOVLW      AUXILIAR   ;mueve auxiliar a W
                   MOVWF      PORTB       ;mueve W al portb
                   BTFSC       B'01111111' ;si marca 8 en el display salto a LEDV
                   GOTO        LEDV
LEDR            BSF          PORTA,0    ; enciende led rojo apaga led verde
                   CLRF         PORTA,3
                   GOTO        INICIO
LEDV            BSF          PORTA,3   ;enciende led verde apaga led rojo.
                   CLRF         PORTA,0
                   GOTO        INICIO
                   END
En línea

MARCO_RECARGADO

Desconectado Desconectado

Mensajes: 75


Mas recargado que nunca


Ver Perfil WWW
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #85 en: 4 Junio 2008, 04:19 am »

Hola a todos!!!

Tengo un problemilla y no se resolverlo a ver si ustedes que veo que teneis bastante experiencia me podeis ayudar.

Estoy intentando hacer que con el pic16f84, se encienda como el coche fantastico una serie de leds. Hasta hay todo correcto y funcionando. Mi problema viene que le he añadido un pulsador para que cuando yo lo pulse el led que este encendido parpadee durante un tiempo, y no se como leer la pulsacion del pulsador.

Gracias de antemano!!!!



primero debes de saber que pin quieres yo te recomendaria el portb por tener resistencias de pull up

primero tienes que configurar el porb como entrada

set_tris_b(0xff);

ahora testeas el puerto si es cero o uno dependiendo de lo que desees

if(pin_b0==0)   
{

y aqui metes todo lo que desees hacer cuando se pulse el boton

}


dato
En línea

"Desde muy chico tuve que interrumpir mis estudios para ir a la escuela"  Gabriel García Márquez
MARCO_RECARGADO

Desconectado Desconectado

Mensajes: 75


Mas recargado que nunca


Ver Perfil WWW
Practica 6 Reloj de tiempo real con LCD
« Respuesta #86 en: 4 Junio 2008, 04:50 am »

Gracias MaARCO_RECARGADO si me sirve esa libreria...

 pero otra cosita podrias ayudarme a poder pasar de los displays de 7 segmentos a un lcd el proyecto que tu posteaste del reloj en tiempo real es que en verdad me urge gracias


claro este es el programa

P.D. Contesto tan rapido como me lo permite mi trabajo disculpa





////////////////////////////////////////////////////////////////////////////////
////////////ESTE PROGRAMA UTILZA EL CIRCUITO DS1307 PARA MOSTRAR LA ////////////
//////////HORA EN TIEMPO REAL A TRAVEZ DE UN UNA LCD DE 2 POR 16 CARACTERES/////
//////////////////////////PARA FORO ELHACKER.NET////////////////////////////////

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=8000000)          ///   declara  la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#include <ds1307.c>
#include <lcd.c>


#use fast_io(A)
#use fast_io(B)
#use fast_io(C)                     ///   con esta instruccion evitamos que
#use fast_io(D)                     ///   se este configurando cada vez que usamos
#use fast_io(E)                     ///   alguna instruccion de entrada o salida


#byte portc = 7                     /// se definen direcciones de memoria
#byte portd = 8

int sec;
int min;
int hrs;
int  day;
int  month;
int  yr;
int  dow;


////////////////////////////////////////////////////////////////////////////////
//////////////////////Comienzo de la funcion principal//////////////////////////
////////////////////////////////////////////////////////////////////////////////
void main()
{

   ds1307_init(0);                          ///se inicializa el ds1307
   
   set_tris_a(0xff);
   set_tris_d(0x00);
   set_tris_b(0x00);
   set_tris_c(0x04);
   set_tris_e(0x01);
   port_b_pullups(true);
 
 
  lcd_init();                               /// inicializamos lcd
 
 
 
  // Set date for -> 15 June 2005 Tuesday
  // Set time for -> 15:20:55 (9:49:00 am)
 
  ds1307_set_date_time(8,11,7,2,9,49,00);   /// se escribe en el displositivo
                                            /// el tiempo deseado
  while(1)
  {
 
    delay_ms(100);
   
  ds1307_get_date(day,month,yr,dow);        /// se obtiene la fecha 
  ds1307_get_time(hrs,min,sec);             /// se obtiene la hora
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%02d:%02d:%02d          ",hrs,min,sec);   ///se despliegan los datos
 
  lcd_gotoxy(1,1);
  lcd_putc("WWW.ELHACKER.NET");
       
  }
}






archivos de simulacion

http://rapidshare.com/files/119934508/reloj_tiempo_real_con_lcd.DSN.html
http://rapidshare.com/files/119934581/RELOJ_TIEMPO_REAL_CON_LCD.c.html
En línea

"Desde muy chico tuve que interrumpir mis estudios para ir a la escuela"  Gabriel García Márquez
MARCO_RECARGADO

Desconectado Desconectado

Mensajes: 75


Mas recargado que nunca


Ver Perfil WWW
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #87 en: 4 Junio 2008, 04:55 am »

Hi!!!
        Quisiera ver si me pueden ayudar, estoy programando un PIC16F628A y trato de configurar los puestos analogicos digital con las instruciones de
setup_adc(), setup_adc_ports(), etc y el ccs me marca una serie de errores relacionados con todas las instrucciones del adc, los erroes son los siguentes:

 Undefined identifier setup_adc_ports
 Undefined identifier setup_adc
 Undefined identifier setup_adc_channel
 Undefined identifier read_adc

No se si se necesite una libreria especial para este tipo de pic ya que con el 16F627A tbm marca los mismos errores o se nececte definir algo antes de incluirlas.

Espero y me puedan ayudar ya que es para utilizarlo en un proyecto final.
    De antemano GRACIAS. ;D










sera porque en la libreria del ccs no tiene declarado que el pic tiene puertos anologos?









//////// Standard Header file for the PIC16F628A device ////////////////
#device PIC16F628A
#nolist
//////// Program memory: 2048x14  Data RAM: 223  Stack: 8
//////// I/O: 16   Analog Pins: 0
//////// Data EEPROM: 128
//////// C Scratch area: 77   ID Location: 2000
//////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,NOPUT,PUT,PROTECT,NOPROTECT
//////// Fuses: BROWNOUT,NOBROWNOUT,NOMCLR,MCLR,NOLVP,LVP,INTRC,RC_IO
//////// Fuses: INTRC_IO,RC,NOCPD,CPD
////////
////////////////////////////////////////////////////////////////// I/O
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
//                         PORT_x_PULLUPS(), INPUT(),
//                         OUTPUT_LOW(), OUTPUT_HIGH(),
//                         OUTPUT_FLOAT(), OUTPUT_BIT()
// Constants used to identify pins in the above are:

#define PIN_A0  40
#define PIN_A1  41
#define PIN_A2  42
#define PIN_A3  43
#define PIN_A4  44
#define PIN_A5  45
#define PIN_A6  46
#define PIN_A7  47

#define PIN_B0  48
#define PIN_B1  49
#define PIN_B2  50
#define PIN_B3  51
#define PIN_B4  52
#define PIN_B5  53
#define PIN_B6  54
#define PIN_B7  55

////////////////////////////////////////////////////////////////// Useful defines
#define FALSE 0
#define TRUE 1

#define BYTE int8
#define BOOLEAN int1

#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts

////////////////////////////////////////////////////////////////// Control
// Control Functions:  RESET_CPU(), SLEEP(), RESTART_CAUSE()
// Constants returned from RESTART_CAUSE() are:
#define WDT_FROM_SLEEP  3     
#define WDT_TIMEOUT     11   
#define MCLR_FROM_SLEEP 19   
#define MCLR_FROM_RUN   27   
#define NORMAL_POWER_UP 25   
#define BROWNOUT_RESTART 26   


////////////////////////////////////////////////////////////////// Timer 0
// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER_0(),
//                              SET_TIMER0() or SET_RTCC(),
//                              GET_TIMER0() or GET_RTCC()
// Constants used for SETUP_TIMER_0() are:
#define RTCC_INTERNAL   0
#define RTCC_EXT_L_TO_H 32
#define RTCC_EXT_H_TO_L 48

#define RTCC_DIV_1      8
#define RTCC_DIV_2      0
#define RTCC_DIV_4      1
#define RTCC_DIV_8      2
#define RTCC_DIV_16     3
#define RTCC_DIV_32     4
#define RTCC_DIV_64     5
#define RTCC_DIV_128    6
#define RTCC_DIV_256    7


#define RTCC_8_BIT      0     

// Constants used for SETUP_COUNTERS() are the above
// constants for the 1st param and the following for
// the 2nd param:

////////////////////////////////////////////////////////////////// WDT
// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)
//                            RESTART_WDT()
// WDT base is 18ms
//

#define WDT_18MS        0x8008   
#define WDT_36MS        9   
#define WDT_72MS       10   
#define WDT_144MS      11   
#define WDT_288MS      12   
#define WDT_576MS      13   
#define WDT_1152MS     14   
#define WDT_2304MS     15   

////////////////////////////////////////////////////////////////// Timer 1
// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1
// Constants used for SETUP_TIMER_1() are:
//      (or (via |) together constants from each group)
#define T1_DISABLED         0
#define T1_INTERNAL         0x85
#define T1_EXTERNAL         0x87
#define T1_EXTERNAL_SYNC    0x83

#define T1_CLK_OUT          8

#define T1_DIV_BY_1         0
#define T1_DIV_BY_2         0x10
#define T1_DIV_BY_4         0x20
#define T1_DIV_BY_8         0x30

////////////////////////////////////////////////////////////////// Timer 2
// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2
// Constants used for SETUP_TIMER_2() are:
#define T2_DISABLED         0
#define T2_DIV_BY_1         4
#define T2_DIV_BY_4         5
#define T2_DIV_BY_16        6

////////////////////////////////////////////////////////////////// CCP
// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY
// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH
// Constants used for SETUP_CCPx() are:
#define CCP_OFF                         0
#define CCP_CAPTURE_FE                  4
#define CCP_CAPTURE_RE                  5
#define CCP_CAPTURE_DIV_4               6
#define CCP_CAPTURE_DIV_16              7
#define CCP_COMPARE_SET_ON_MATCH        8
#define CCP_COMPARE_CLR_ON_MATCH        9
#define CCP_COMPARE_INT                 0xA
#define CCP_COMPARE_RESET_TIMER         0xB
#define CCP_PWM                         0xC
#define CCP_PWM_PLUS_1                  0x1c
#define CCP_PWM_PLUS_2                  0x2c
#define CCP_PWM_PLUS_3                  0x3c
long CCP_1;
#byte   CCP_1    =                      0x15         
#byte   CCP_1_LOW=                      0x15         
#byte   CCP_1_HIGH=                     0x16         
////////////////////////////////////////////////////////////////// UART
// Constants used in setup_uart() are:
// FALSE - Turn UART off
// TRUE  - Turn UART on
#define UART_ADDRESS           2
#define UART_DATA              4
////////////////////////////////////////////////////////////////// COMP
// Comparator Variables: C1OUT, C2OUT
// Constants used in setup_comparator() are:
#define A0_A3_A1_A2  0xfff04
#define A0_A2_A1_A2  0x7ff03
#define NC_NC_A1_A2  0x6ff05
#define NC_NC_NC_NC  0x0ff07
#define A0_VR_A1_VR  0x3ff02
#define A3_VR_A2_VR  0xcff0A
#define A0_A2_A1_A2_OUT_ON_A3_A4 0x7e706
#define A3_A2_A1_A2  0xeff09
#define CP1_INVERT   0x00010
#define CP2_INVERT   0x00020

#bit C1OUT = 0x1f.6
#bit C2OUT = 0x1f.7

////////////////////////////////////////////////////////////////// VREF
// Constants used in setup_vref() are:
//
#define VREF_LOW  0xa0
#define VREF_HIGH 0x80
// Or (with |) the above with a number 0-15
#define VREF_A2   0x40

////////////////////////////////////////////////////////////////// INTERNAL RC
// Constants used in setup_oscillator() are:
#define OSC_48KHZ   0
#define OSC_4MHZ    8

////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
//                      CLEAR_INTERRUPT(), INTERRUPT_ACTIVE(),
//                      EXT_INT_EDGE()
//
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H              0x40
#define H_TO_L                 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL                    0x0BC0
#define INT_RTCC                  0x0B20
#define INT_RB                    0xFF0B08
#define INT_EXT                   0x0B10
#define INT_TBE                   0x8C10
#define INT_RDA                   0x8C20
#define INT_TIMER1                0x8C01
#define INT_TIMER2                0x8C02
#define INT_CCP1                  0x8C04
#define INT_COMP                  0x8C40
#define INT_TIMER0                0x0B20
#define INT_EEPROM                0x8C80

#list

fuente CCS ldevices
En línea

"Desde muy chico tuve que interrumpir mis estudios para ir a la escuela"  Gabriel García Márquez
M@ndo31

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #88 en: 7 Junio 2008, 19:35 pm »

Muchas gracias Marco_Recargado se te agradece tu ayuda  ;D ;) :D
En línea

dieguete

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #89 en: 24 Julio 2008, 18:38 pm »

Hola. Necesito saber como leer desde una entrada del PIC 16F84A(p.e. RA0), añadiéndole además un interruptor, botón o algo similar.
Lo he intentado con las funciones input pero no hay manera

Gracias
En línea

Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
introduccion ala programacion
Electrónica
cldo 0 3,256 Último mensaje 23 Marzo 2006, 00:59 am
por cldo
Programacion de PICS
Electrónica
Zeroql 7 12,912 Último mensaje 16 Octubre 2011, 00:24 am
por CCStuamigo
Introducción al Lenguaje PERL
Scripting
Dr.SysCrack 0 3,080 Último mensaje 19 Noviembre 2007, 03:04 am
por Dr.SysCrack
Introducción a la programación
Programación General
Meta 1 3,046 Último mensaje 23 Agosto 2010, 13:48 pm
por forever77
Introducción a la programación en Ruby
Scripting
peib0l 1 2,741 Último mensaje 8 Agosto 2010, 19:19 pm
por Novlucker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines