Autor Tema: Resolviendo los ejercicios en CCS (desde 0)  (Leído 7054 veces)

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

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #15 en: 18 de Diciembre de 2011, 03:37:21 »
Es igual de eficiente, mira cómo lo compila:

....................    byte dato; 
.................... 
....................    swap(dato);
012E:  BCF    03.6
012F:  SWAPF  27,F

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #16 en: 18 de Diciembre de 2011, 09:04:04 »
Gracias por sus aportes. Veo que lenguaje C en necesario ser muy eficientes ya que se cuenta con poca memoria.

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #17 en: 18 de Diciembre de 2011, 09:14:17 »
usando desplazamiento a la izquierda <<1  :) :)

ELEMENTAL_07:
Código: [Seleccionar]
//Por el Puerto B se obtiene el dato del Puerto A
//desplazando un bit hacia la derecha, por la izquierda
//entrara un 1.

#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4M)
#use fast_io(a)
#use fast_io(c)
#byte PORTA=5
#byte PORTC=7
#byte STATUS=3
void main()
            {
            set_tris_a(0x3F);
            set_tris_c(0x00);
            PORTC=0x00;
            while(true)
                        {
                        PORTC=(PORTA<<1)+1;
                        delay_ms(1);
                        }
            }

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #18 en: 18 de Diciembre de 2011, 09:16:14 »
Desplazar un bit  a la derecha >>1  :) :)

ELEMENTAL_08:
Código: [Seleccionar]
//Por el Puerto B se obtiene el dato del Puerto A
//desplazando un bit hacia la derecha, por la izquierda
//entrara un 0.

#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4M)
#use fast_io(a)
#use fast_io(c)
#byte PORTA=5
#byte PORTC=7

void main()
           {
           set_tris_a(0x3F);
           set_tris_c(0x00);
           PORTC=0x00;
           while(true)
                     {
                     PORTC=PORTA>>1;
                     delay_ms(1);
                     }
           }

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #19 en: 18 de Diciembre de 2011, 09:21:36 »
Con este terminamos con los elementales. :-/ :-/

ELEMENTAL_09:
Código: [Seleccionar]
//Por el Puerto C se obtiene el dato del Puerto A
//invirtiendo los bit pares. Los impares se dejan como en la entrada.

#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4M)
#use fast_io(a)
#use fast_io(c)
#byte PORTA=5
#byte PORTC=7

void main()
            {
            set_tris_a(0x3F);
            set_tris_c(0x00);
            PORTC=0x00;
            int impares;
            int pares;
            while(true)
                        {
                        impares=PORTA&0b10101010;  //me quedo con los impares
                        pares=(~PORTA)&0b01010101; //Complemento
                        PORTC=pares | impares;     //los muestro
                        delay_ms(1);
                        }
            }

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #20 en: 18 de Diciembre de 2011, 09:48:25 »
9.12 PRACTICAS DE LABORATORIO   

Aprendiendo a usar la condicional IF

SALTOS_01:

Código: [Seleccionar]
//El Puerto C,que acuta como salida es controlado
//por el bit 0 del Puerto A,que actua como entrada
//De tal manera que:
//Si el bit 0 del PORTA = 1, se encienden todos los leds.
//Sie el bit 0 del PORTA = 0, solo se encienden los leds del nible alto.

#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4M)
#use fast_io(a)
#use fast_io(c)

void main()
            {
            set_tris_a(0x3F);
            set_tris_c(0x00);
            output_c(0x00);
            while(true)
                        {
                        delay_ms(1);
                        output_c(0xF0);
                        if(input(pin_A0)==1)
                        output_c(0xFF);               
                        }
            }

Desconectado frozen

  • PIC12
  • **
  • Mensajes: 53
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #21 en: 18 de Diciembre de 2011, 09:50:59 »
Comparando un dato con lo que ingresa por el puerto.  :) :)
SALTO_2:

Código: [Seleccionar]
//Compara el dato del puerto de entrada PORTA con un numero
//por ejm 13. Puede darse dos posibilidades:
//Si PORTA = numero, se encienden todos los leds.
//Si PORTA diferente al numero se encienden los leds pares.

#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4M)
#use fast_io(a)
#use fast_io(c)
#byte PORTA=5
#byte PORTC=7
void main()
            {
            set_tris_a(0x3F);
            set_tris_c(0x00);
            PORTC=0x00;
            while(true)
                        {                       
                        if(PORTA==0x0D) PORTC=0xFF;
                        else            PORTC=0b01010101;
                        }
            }

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Resolviendo los ejercicios en CCS (desde 0)
« Respuesta #22 en: 18 de Diciembre de 2011, 12:06:54 »
Es igual de eficiente, mira cómo lo compila:

....................    byte dato; 
.................... 
....................    swap(dato);
012E:  BCF    03.6
012F:  SWAPF  27,F


Es bueno saberlo, ya estoy bastante alejado del CCS  :)


Saludos!
No contesto mensajes privados, las consultas en el foro