jueves, 5 de junio de 2014

Programacion en CCS

Directivas a incluir al inicio de los programas:

#include<16F877A.h> archivo donde se incluyen las definiciones de los registros del PIC.

#use delay (clock=4000000); directiva para el uso de retardos, entre  paréntesis tenemos que poner la frecuencia de reloj que vamos a  utilizar.

#use rs232 (baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) esta directiva es para la comunicación del PIC con otro dispositivo vía RS232, por ejemplo un ordenador, en ella se encuentran definidas los prototipos de las funciones de entrada y salida como printf().

#fuses XT,PUT,NOWDT esta directiva

#include <LCD.c>
lcd_init();
printf("Esto es una cadena\r"); 
\r
Retorno de carro
\t
Tabulador
\'
Comilla simple
\"
Comillas dobles
\\
Barra invertida
\?
Símbolo de interrogación
\0
Caracter nulo
\%
Símbolo Tanto por ciento
\b
Retroceder un caracter

Directivas del preprocesador:
Son extensiones del C estandard. Comienzan siempre por el carácter #. El compilador CCS admite que se inicie con PRAGMA para mantener la compatibilidad con otros compiladores.


(Las dos lineas son equivalentes)
#INLINE
#PRAGMA INLINE

Directivas de control de memoria:
#ASM
#END ASM
Las lineas incluidas entre estas dos directivas se tratan como código ensamblador. La variable _RETURN_ se puede usar para pasar un valor de retorno de la funcion.

#BIT identificador = x.y  
Crea un identificador ID que se puede usar como SHORT INT

#define


Declaración de variables:

tipo nombre_variable [valor];
int i;
int i=5;
int a,b,c,d,e;


const int Min=10, INTERVAL=15;
#define Min 10



Tipos de variables:



Operadores:

expresion = expresion1 operador expresion2
variable = variable + 5;
variable += 5;


Operadores aritméticos : 
OperadorDescripción
  +
Suma
  -
Resta
  *
Multiplicación
  /
División
  %
Módulo (Resto de una división entera)
  ++
Incrementa en uno el valor del operando
  --
Decrementa en uno el valor del operando


Operadores de asignacion: 
OperadorDescripción
  +=
Asignación de suma. x+=y es lo mismo que x=x+y
  -=
Asignación de resta. x-=y es lo mismo que x=x-y
  *=
Asignación de multiplicación. x*=y es lo mismo que x=x*y
  /=
Asignación de división. x/=y es lo mismo que x=x/y
  %=
Asignación de resto de división. x%=y es lo mismo que x=x%y
  <<=
Asignación de desplazamiento a la izquierda. x<<=y es lo mismo que x=x<<y
  >>=
Asignación de desplazamiento a la derecha. x>>=y es lo mismo que x=x>>y
  &=
Asignación de AND de bits. x&=y es lo mismo que x=x&y
  |=
Asignación de OR de bits. x|=y es lo mismo que x=x|y
  ^=
Asignación de OR exclusivo de bits (XOR). x^=y es lo mismo que x=x^y


Operadores relacionales:


OperadorDescripción
  <
Menor que
  >
Mayor que
  <=
Menor o igual que
  >=
Mayor o igual que
  ==
Igual a
  ¡=
Distinto de

Operadores Lógicos:
OperadorDescripción
  !
NO lógico
  &&
Y lógico
  ||
O lógico

Operadores de manejo de bits:
OperadorDescripción
  ~
Negación de bits (complemento a 1)
  &
Y de bits (AND)
  |
O de bits (OR)
  ^
O exclusivo de bits (XOR)
 >>
Desplazamiento a la derecha
 <<
Desplazamiento a la izquierda

Operadores de direccion (&) e indireccion (*) (punteros):
OperadorDescripción
  &
Operador de dirección
  *
Operador de inderección
  ->
Acceder a los miembros de una estructura por medio de punteros

int y,z; //declaración de las variables x e y de tipo entero:

int *x; //declaración de la variable puntero x que guardará la dirección de memoria de una variable de tipo entero.

x=&y; // a través del operador de dirección (&) le asigno al puntero x la dirección de memoria donde está guardada la variable y.

z=*x; //a través del operador de inderección (*) le asignamos a z el valor de la variable cuya dirección está almacenada en la variable puntero x.


Constantes:
12 - Decimal
o12 - Octal
0x12 - Hexadecimal
0b010010 - Binario
'x' - Caracter
'\010' - Caracter octal
'/x' - Caracter especial (n,t,b,r,f,',\d,v)
"abcdefg" - Cadena (caracter nulo al final"

Identificadores:
ABCDEfgh - Hasta 32 caracteres (no puede empezar por numero)
var[x] - Indice (x es un valor)
var[x][y] - Indice multiple
ID.ID - Referencia a una estructura o union
ID-->ID - Referencia a una estructura o union



Funciones de Salida (bit)
output_low(PIN_Xn) //pone a 0.
output_high(PIN_Xn) //pone a 1.
output_bit(PIN_Xn,valor) //pone el pin Xn a valor (0 ó 1). output_toggle (PIN_Xn) //complementa el valor del pin output_float (PIN_Xn) //Pin como entrada (simula d. ab.) 15

Funciones de E/S (bit)
output_low(PIN_A0);
output_high(PIN_B1);
output_bit(PIN_B3,0);
output_toggle (PIN_C6);
output_float (PIN_A2);
valor=input_state (PIN_B7);
valor=input(PIN_C3); 17

Funciones de E/S (byte)
output_X(valor)  à Escribe valor en el puerto X

valor= input_X() à Lee el valor del  puerto X

No hay comentarios :

Publicar un comentario