TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: PABLOHAAA en 04 de Junio de 2006, 16:09:37
-
hola ke tal como soy nuevo, en sto solo pido una orientacion de como empesar hacer el programa tengo ke poner 4 push boton en el portA y las salidas en el portb hasia el display¡¡
-
Hola PABLOHAAA :mrgreen:, primeramente preguntas basicas
¿Que lenguaje de programacion utilizas o has utilizado?
Saludos LabPIC
-
hola grasias por contestar pues es lenguaje con instrucciones del pic 16f84a bsf,bcf,movlw etc solo he utilisado ese se ke el pic cuenta en hexa y batallo algo para entender como hacerle para ke se prenda el nuemero correspondiente en el display cuando le mete las valores en binario por el porta si alguien me puede ayudar se aceptan comentarios y de todo grasias
-
Ah ok entiendo es lenguaje ensamblador el que empiezas a utilizar, una pregunta
¿Tienes el programa con el cual estas batallando?, si es así sería de mucha ayuda que lo subieras para que se te pueda ayudar y resolver algunas de tus dudas.
Saludos LabPIC :mrgreen:
-
KE TAL, LA VDD ENCONTRE ESTE PROGRAMA QUE CREO QUE ME PUEDE AYUDAR, PERO MI PRINCIPAL DUDA ES SOBRE LA TABLA RETLW, QUIERO ENTENDER SU LOGICA ;************************************ Display_01.asm
LA TABLA APARESE EN STA PARTE DEL FORO http://www.todopic.com.ar/foros/index.php?topic=9134.0
-
Bueno la instruccion RETLW, el registro W es cargado con una literal K de 8 bits el contador de programa es cargado desde la parte mas alta del stack (retorno de direccion).
Por ejemplo cargas el valor a extraer de la tabla en W, luego el PCL lo que hace es saltar tantas instrucciones adelante hasta haber saltado el numero de instrucciones adelante igual a W, si te das cuenta en el inicio de la tabla en la primera linea aparece lo siguiente ADDWF PCL,1. Posterioemente el RETLW carga el valor deseado a W que sera posteriormente mostrado en el display y retorna a la siguiente instruccion despues de haber saltado a la tabla.
Espero y mi pobre explicacion te sirva de algo, y si no pues de nuevo a preguntar.
Saludos LabPIC :mrgreen:
-
ok¡¡ grasias por la asesoria voy a seguir estudiando para lograr sacar esa practica byee¡¡
-
Hola, este es el que yo tengo hecho, solamente llega del 0 al 9.
LIST P=16f84a ;El pic 16f84a se define como microcontrolador que se va a programar.
;Este programa muestra el código binario introducido por las puertas a0, a1, a2 y a3
;en un display de 7 segmentos a través de la puerta B en código decimal. Los números
; van del 0 al 9.
;Se definen las diferentes variables.
ESTADO EQU 03 ;El registro 3 del registro específico
PUERTAA EQU 05 ;El registro 5 del registro específico. Se define la puerta A.
PUERTAB EQU 06 ;El registro 6 del registro específico. Se define la puerta B.
PCL EQU 02 ;El registro 2 del registro específico. Los 8 bits de menos peso del contador PC.
RP0 EQU 05 ;Se define el bit 5 del registro específico 3, sirve para cambiar de banco en
;la memoria RAM.
W EQU 00 ;Se define como cero, para referirse al registro de trabajo W.
F EQU 01 ;se define como uno, para cuando hay que referirse al parámetro uno.
ORG 0 ;Se indica la dirección en la que hay que poner la primera instrucción.
CONFIGURACION bsf ESTADO,RP0 ;Se cambia al 2º banco de la memoria Ram.
movlw b'01111' ;Se define los 4 bits de menos peso como entrada y el 5º como salida
movwf PUERTAA
movlw b'00000000' ;Se define la puerta B como salida.
movwf PUERTAB
bcf ESTADO,RP0 ;se vuelve al banco 1
INICIO movf PUERTAA,W ;Se carga los datos de la puerta A al registro de trabajo W.
call DISPLAY ;Se llama a la subrutina de transformación de binario a decimal
movwf PUERTAB ;Se carga los datos del registro de trabajo W en la puerta B y se visualiza en
;el display.
goto INICIO ;Se vuelve a la etiqueta INICIO para volver a leer la puerta A.
DISPLAY addwf PCL,F ;Se le suma los datos del registro W, proveniente de la puerta A y se vuelve a
;guardar en el mismo registro PCL.
retlw 3F ;Se define el cero para ser mostrado en el display.
retlw 06 ;Se define el uno.
retlw 5B ;Se define el dos.
retlw 4F ;Se define el tres.
retlw 66 ;Se define el cuatro.
retlw 6D ;Se define el cinco.
retlw 7D ;Se define el seis.
retlw 07 ;Se define el siete.
retlw 7F ;Se define el ocho.
retlw 6F ;Se define el nueve.
END ;Se finaliza el programa.
Gracias y saludos.
-
hola que tal 1000¡ grasias por el programa anterior , solo tengo una duda es ke estoy empesando y hasta aHORA SOLO LLEVABA ECHA PRACTIKAS DE RRECORRIDO DE LETS Y ETC , CON ESTA LA DEL DISPLAY SI TENIA MIS DUDAS PERO PUES YA¡¡ SOLAMENTE UNAS CUANTAS PREGUNTAS QUE LA VDD NO ENTIENDO SON 1- QUE ES EL CONTYADOR PC? Y COMO SE HACE UNA TABLA DE TRANSFORMACION DE BINARIO A DECIMAL POR QUE VEO 3F,06,5B Y LA VERDAD NO SE DE DONDE SALIERON ....¡¡
-
OK envío un imagen adjunta para ver la forma de codificación de los datos Decimales, sus respectivos valores binarios, y hexadecimales. En realidad de cualquiera de estos 3 formatos numericos se pueden cargar en el programa.
Observación: Una manera más cómoda de escribir la lista de instrucciones RETLW al final del programa anterior puede lograrse usando la directiva DT (Define Table) del ensamblador, la cual nos permite definir una tabla de datos que será sustituida por una lista de instrucciones RETLW; así, la lista mostrada en la imagen puede quedar de la siguiente manera:
DT 0x01,0x4F,0x12,0x06,0x4C,0x24,0x3F,0x0F,0x00,0x04
Espero y te sea de ayuda :)
Saludos LabPIC :mrgreen:
-
Hola, el contador de programa o PC, es un registro donde se carga la dirección de la instrucción a ejecutar del programa de instrucciones. En el 16f84a, tan sólo se utilizan los 10 bits de menos peso, ya que utilizan 1024 direcciones distintas, pero se podría direccionar hasta 8 k, ya que el contador de programa o PC, puede direccionar hasta direcciones de 13 bits. Para ver el contenido del PC de la dirección de la instrucción a ejecutar, se utilizan dos registros específicos. que son el PCL, donde se almacena los 8 bits de menos pesos y el PCLAHT, donde se almacena los 5 bits de mayor peso.
En cuanto, a la representación de los datos en el display, lo que pasa es que están representado en código héxadecimal, pero lo podrías haber puesto en binario o en decimal. Para representar un número en un display de 7 segmentos, tienes que saber los segmentos a iluminar, por ejemplo, para representar el 1, habría que iluminar el segmento b y c, que en binario sería 0000110, por lo tanto en decimal sería 6 y en hesdecimal sería 06.
Gracias y saludos.