Está en la página 1de 3

DIRECCIONES DE MEMORIA pic 16f84A

MANEJO DE LOS PUERTOS Hay dos formas: A TRAVES DE LA RAM Se declaran los registros TRISX y PORTX como bytes y se sitan en la posicin correspondiente de la memoria RAM. La directiva a usar es #BYTE: #BYTE variable=constante; Ejem: #BYTE TRISA=0x85 //define TRISA en la posicin 85h #BYTE PORTB=0x06//define PORTB en la posicin 06h Luego de definidas se pueden manipular los puertos Para asignarles valores de entrada o salida. TRISA = 0xFF; //8 terminales de entrada TRISB = 0b00001111;//4 de entrada y 4 de salida Escritura de los puertos: PORTC=0x0A; //salida de datos 00001010 en el puerto C. Lectura de los puertos: Valor=PORTA;//asigna el dato del puerto A a la variable valor. MANEJO DE BITS bit_clear(var,bit); //pone a 0 el bit especifico de la variable. bit_set(var,bit); //pone a 1 el bit especifico de la variable. bit_test(var,bit); //muestra el valor del bit especifico. swap(var); //intercambia los bits de mayor peso con los de //menor. DECLARAR UN BIT COMO VARIABLE #BIT nombre=posicin.bit #BIT RB4 = 0x06.4//define RB4 como el bit 4 del puerto B RB4=1; A TRAVES DE DIRECCTIVAS Utilizando las directivas especificas del compilador (#se fast_io, #use fixed_io, #use standars_io). Las funciones predefinidas son:

VARIABLES

CONSTANTES

Con sufijo

Operadores

output_X(valor); //saca por puerto X el valor(0 a 255). input_X(valor); //se obtiene el valor en el puerto X. set_tris_X(valor); //carga TRISX con el valor(0 a 255). port_x_pullups(valor); //habilita o deshabilita las resistencias //pull-up en el puerto x si valor= 1 o 0. get_trisX(); //devuelve el valor del registro TRISX. Las funciones para de trabajo asociadas a un PIN. Xn . X= puerto A,B,C,ect. n=bit (0 a 7). (A0,B1,C3,etc). output_low(pin_Xn); //pone a 0 el pin Xn. output_high(pin_Xn); //pone a 1 el pin Xn. output_bit(Xn,valor); //el pin Xn a valor especificado. output_toggle(Xn); //complementa el valor del pin Xn. output_float(Xn); //pin de entrada, queda a tensin flotante. input_state(Xn); //lee el valor del pin sin cambiar el sentido del //terminal; input(Xn); //lee el valor del pin. Las funciones output_x() e input_x() dependen de la directiva #use _io que se active. #USE FAST_IO(puerto) Con la funcin output_x() e input_x() se saca o lee el valor del puerto sin modificar el registro TRIS. Los registros TRIS deben estar definidos correctamente. #USE STANDARD_IO(puerto) Con la funcin output_x() e input_x() se saca o lee el valor del puerto modificando previamente el valor del TRIS correspondiente. #USE FIXED_IO(puerto_outputs=pin_Xn,) El compilador se encarga de generar el codigo para definir los puertos de acuerdo con la informacin que indica la directiva, donde solo se indican los terminales de salida, sin tener en cuenta si la operacin es de entrada o de salida. LCD #include<lcd.c> //librera que se debe indicar luego del clock lcd_init(); //Primera funcin que debe ser llamada lcd_gotoxy(X,Y); //mueve a la posicin X,Y en la pantalla lcd_getc(X,Y); //lee el carcter en la posicin X,Y lcd_putc(char s); Esta funcin escribe la variable en la posicin correspondiente. Adems si se indica:

\f se limpia el LCD. \n el cursor va a la siguiente lnea. \b el cursor retrocede una posicin.

printf(cadena de caracteres); O tambin: printf( fname, cstring, values); String es una cadena o un array de caracteres, values es una lista de variables separadas por comas y fname es una funcin(lcd_putc()). El formato es %nt, donde n es opcional y puede ser: 1-9: para indicar cuantos caracteres se deben especificar. 01-09: para indicar la cantidad de ceros a la izquierda. 1.1-9.9: para coma flotante. T puede indicar c= carcter. s=cadena o carcter u=entero sin signo d=entero con signo Lu=entero largo sin signo Ld=Entero largo con signo x=Entero Hexadecimal en minsculas X=Entero hexadecimal en maysculas Lx=Entero largo hexadecimal en minsculas LX=Entero largo hexadecimal en maysculas f=flotante con truncado g=flotante con redondeo e=flotante en formato exponencial w=entero sin signo con decimales insertados. La primera cifra indica el total, la 2da el numero en decimales.

TECLADO NUMERICO #include<kbd.c> //librera a incluir kbd_init(); // inicializa el sistema, debe ser la primera funcin kbd_getc(); //devuelve el valor de la tecla pulsada en funcin de //la tabla que tiene programada en kbd.c

CONVERSOR ADC Hay funciones para controlar el ADC setup_adc(modo); Para la configuracin del modulo conversor ADC correspondientes a lo bits 7:6 del ADCON0. Esto configura la frecuencia de conversin del modulo, es decir cada cuanto tiempo toma una nueva lectura.

Valor tiene un tamao de 8, 10, 11 o 16 bits dependiendo del pic y la configuracin #device que se escoja: #device adc=8// 8 bits #device adc=10// 10 bits #device adc=11// 11 bits #device adc=16// 16 bits Los pics de gama media tienen una resolucion de 10 bits, y esta viene dada por:

Vin=mximo voltaje de entrada. N: seleccin del #deviceadc Tiempo de conversin.-Segn el tipo de modo usado: Para una conversin A/D correcta se recomienda un tiempo minimo de 1.6us.

setup_adc_ports(puertos); . Define los puertos que se van a usar como A/D. Los valores que puede tomar son los de la figura pero varia de acuerdo al pic que se use.

set_adc_channel(canal); Selecciona el canla que se usara y puede ser: 0 (AN0), 1(AN1), 2(AN2),3(AN3), 4(AN4), 5(AN5), 6(AN6), 7 (AN7). Valor=read_adc(); Funcion de lectura en la que Valor en una variable de almacenamiento definida previamente.

También podría gustarte