sábado, 29 de septiembre de 2007

GENERACIÓN DE CÓDIGOS : Ej.- JOHNSON

Este programa usa una tabla que tiene grabada en la EEPROM interna, esa tabla para este ejemplo es el código johnson, pero puede modificarse para cualquier otra tabla, generando cualquier otro código por lo tanto muy útil. El manejo de tablas en el microcontrolador es vital para la realización de proyectos, pues suelen ser nuestras constantes en los programas, como por ejemplo un mensaje ante un determinado evento o un valor determinado. Por ejemplo el mensaje en un LCD o el código en un Display o matriz de leds ETC.

DIAGRAMA DEL CIRCUITO





CÓDIGO FUENTE DEL PROGRAMA

; * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* CODIGO JOHNSON DE 8 BITS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * *
; Descripcion:
; Este codigo muestra por el puerto denominado P1
; el codigo johnson de 8 bits con un retardo
; calculado de aproximadamente 1 segundo para un
; cristal de 11.0592Mhz
; - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Autor :
; Raul Alejandro Quispe Larico
; Cel: 72097633
; Email: raulalejandroql@yahoo.es
; http://es.geocities.com/raulalejandroql
; - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;---------------------------------------------------------
; Programa Principal
;---------------------------------------------------------
org 0000h ; direccion del reseteo
ajmp inicio
org 0050h ; inicio de programa
inicio:
mov DPTR,#johnson ; carga al data pointer
; puntero de datos con la
; direccion de la tabla
; codigo johnson
mov r0,#0 ; inicio de puntero para
; la tabla en cero
bucle:
mov a,r0 ; pasa la direcion de la tabla
; para sacar el dato de johnson
movc a,@a+DPTR ; saca el dato al acumulador
mov p1,a ; mostrando por el puerto
acall retardo ; retardo para visualizar en los
; leds (llamado a sub programa)
inc r0 ; se incrementa el siguiente dato
; a sacar en la tabla
cjne r0,#10h,bucle ; se consulta para saber cuantos
; datos de la tabal se sacaron
ajmp inicio ; reinicia el programa
;---------------------------------------------------------
; Retardo para 1 segundo con cristal = 11.0592Mhz;
;---------------------------------------------------------
retardo:
mov r3,#0aeh
sal0: mov r4,#0aeh
sal1: mov r5,#007h
sal2: djnz r5,sal2
djnz r4,sal1
djnz r3,sal0
ret
;---------------------------------------------------------
; Tabla de datos de codigo johnson
;---------------------------------------------------------
johnson:
db 00000000b ; datos en binario
db 00000001b
db 00000011b
db 00000111b
db 00001111b
db 00011111b
db 00111111b
db 01111111b
db 11111111b
db 11111110b
db 11111100b
db 11111000b
db 11110000b
db 11100000b
db 11000000b
db 10000000b
end

Para cualquier consulta escriba a raulalejandroql@gmail.com y visite nuestro FORO-Microcontroladores para poder intercambiar opiniones y dudas al respecto.

2 comentarios:

Anónimo dijo...

Muy bueno realmente lo estaba necesitando que bien

Anónimo dijo...

raul no mames ese codigo no funciona publica el que si funciona