comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[CCS] Programando un PIC (I/O)

  • 0 Respuestas
  • 2781 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kal23

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Enero 27, 2014, 07:29:58 pm »
Programa desarrollado en CCS PCWH Compiler. Consiste en demostrar en funcionamiento de básico de entradas y salidas. Se demostrara mediante un pulsador. Almacenaremos las veces que se ha pulsado en una variable y luego usaremos esa variable para encender dos led de acuerdo a la cantidad de pulsos, con el tercer pulso la variable volverá a 0.

Código: C
  1. #include <16f690.h>  //librería de microcontrolador 16f690
  2. #fuses HS, NOWDT, INTRC_IO //Configuración de fusibles, al final dejaré una tabla con los fusibles validos para este micro y para que son.
  3. #USE delay(Clock=4000000)  //velocidad del cristal que usaremos.
  4. #byte portc=0x07 //Uso de puerto C
  5. #byte porta=0x05 //Uso de puerto A
  6.  
  7.  
  8. void main()
  9. {  
  10.    
  11.    set_tris_c(0x00); //Puerto C como Salidas en Hexadecimal
  12.    set_tris_a(0b00011111); //Puerto A como entradas y salidas en Hexdecimal es 0x1F
  13.    porta=0x00; //Inicializamos el puerto A en 0
  14.    portc=0x00; //Inicializamos el puerto C en 0
  15.    int a; //Variable unsigned "a" de 8 bits donde almacenaremos los pulsos.
  16.    a=0; //Le asignamos el valor 0 para iniciar.
  17.    
  18.  
  19.    for(;;) //Bucle infinito, estaremos leyendo constantemente el bucle.
  20.    {  
  21.      
  22.       if (input(pin_a4)==1) //Si presionamos el pulsador, que estará conectado en el Pin A4.
  23.       {
  24.          a=a+1; //Sumaremos 1 a la variable "a"
  25.       }
  26.  
  27.       switch(a)  //sentencia de selección
  28.       {
  29.          case 1:  //en caso que "a" sea 1
  30.                   delay_ms(200); //Esperamos 200 milisegundos (Anti rebote del pulsador)
  31.                   portc=0x01; //Daremos un High en el Pin C0 (1 lógico = 5 Volt)
  32.                   break;  //continúa la ejecución de las instrucciones que le sigue
  33.          case 2:  //en caso que "a" sea 2
  34.                   portc=0x02; //Daremos un High en el Pin C1 (1 lógico = 5 Volt)
  35.                   delay_ms(200); //Esperamos 200 milisegundos (Anti rebote del pulsador)
  36.                   break; //continúa la ejecución de las instrucciones que le sigue
  37.          case 3: //en caso que "a" sea 3
  38.                   portc=0x00; //Volvemos a 0 todo el puerto C (0 lógico = 0 Volt)
  39.                   delay_ms(200); //Esperamos 200 milisegundos (Anti rebote del pulsador)
  40.                   break;  //continúa la ejecución de las instrucciones que le sigue
  41.          default: //Si el valor que toma "a" no coincide con los valores especificados, se realizarán las acciones definidas en la etiqueta default
  42.                   a=0; // la variable "a" vuelve a 0.
  43.                  
  44.       }
  45.      
  46.    }
  47.  
  48. }
  49.  

Lista de fusibles validos para PIC 16f690

1.00   LP   Low power osc < 200 khz
1.00   XT   Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
1.00   HS   High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
1.00   EC_IO   External clock
1.00   INTRC_IO   Internal RC Osc, no CLKOUT
1.00   INTRC   Internal RC Osc
1.00   RC_IO   Resistor/Capacitor Osc
1.00   RC   Resistor/Capacitor Osc with CLKOUT
1.03   WDT   Watch Dog Timer
1.03   NOWDT   No Watch Dog Timer
1.04   PUT   Power Up Timer
1.04   NOPUT   No Power Up Timer
1.05   MCLR   Master Clear pin enabled
1.05   NOMCLR   Master Clear pin used for I/O
1.06   PROTECT   Code protected from reads
1.06   NOPROTECT   Code not protected from reading
1.07   CPD   Data EEPROM Code Protected
1.07   NOCPD   No EE protection
1.08   NOBROWNOUT   No brownout reset
1.08   BROWNOUT   Reset when brownout detected
1.08   BROWNOUT_NOSL   Brownout enabled during operation, disabled during SLEEP
1.08   BROWNOUT_SW   Brownout controlled by configuration bit in special file register
1.10   IESO   Internal External Switch Over mode enabled
1.10   NOIESO   Internal External Switch Over mode disabled
1.11   NOFCMEN   Fail-safe clock monitor disabled
1.11   FCMEN   Fail-safe clock monitor enabled

Diagrama electrónico en proteus.

.

link de descarga del proyecto: https://mega.co.nz/#!ksd11JKB!jsqX_U5Di6Qdxpe2sT9MMZtcNnRychQYrtbVm_aoUFg

 

¿Te gustó el post? COMPARTILO!



[ASM] Programando un PIC (Control motor paso a paso)

Iniciado por kal23

Respuestas: 0
Vistas: 7095
Último mensaje Enero 23, 2014, 05:52:00 pm
por kal23
[ASM] Programando un PIC (Conversión Análogo/Digital 8 bits)

Iniciado por kal23

Respuestas: 0
Vistas: 3416
Último mensaje Enero 24, 2014, 06:17:56 pm
por kal23
[ASM] Programando un PIC (Contador 999 con display 7 segmentos)

Iniciado por kal23

Respuestas: 3
Vistas: 11507
Último mensaje Diciembre 11, 2014, 05:54:52 pm
por mauroe83
[ASM] Programando un PIC (Uso de Timer0)

Iniciado por kal23

Respuestas: 0
Vistas: 1975
Último mensaje Enero 24, 2014, 08:20:44 pm
por kal23
[ASM] Programando un PIC

Iniciado por mr.blood

Respuestas: 2
Vistas: 2738
Último mensaje Mayo 13, 2013, 10:30:41 pm
por Stuxnet