8va Clace
Posteado por Raul Alejandro QL
El presente capitulo muestra el manejo de tablas de datos en la memoria de programa, ojo no en la memoria de datos.
Este capitulo se ha puesto aparte por variada utilizacion en programacion con el microcontrolador.
El dptr (puntero de datos), nos sirve para manipular datos de la memoria de programa, como puntero de dato sse le debe indicar la direccion de memoria de datos de programa donde se encuentra la tabla a manipular.
la instruccion movc, (mover constante) se utiliza junto a dptr para manipular los datos en al memoria de programa, por lo general esta instruccion obtiene el dato al que apunta el puntero de datos (dptr) en el acumular a
org 0000h mov a,#0 inicio: mov dptr, #tabla ; dptr = direccion de la "tabla" movc a,@a+dptr ; a = dato[a + DPTR] tabla: ; esta es la direccion inicial de tabla db 26h,24h,31h,44h ; este es el contenido de la tabla end
Bien es simple, primero se carga el dptr con la direccion de la tabla que para este caso se llama "tabla" a traves de la instruccion mov dptr,#tabla, a continuacion se optiene el dato al cual apunta el dptr y se suma al valor del acumulador, si el acumulador vale cero, se saca el primer datos, si vale uno el segundo y asi sucesivamente.
A continuacion una modificacion del codigo muestra como desplegar todos los datos de una tabla de datos para desplegarla por el puerto cero
org 0000h mov r7,#5 mov dptr, #tabla ; dptr = direccion de la "tabla" inicio: mov a,r7 ; cargar al acumulador A,
; la direccion del dato a obtener movc a,@a+dptr ; a = dato[a + DPTR] mov p0,a djnz r7,inicio ; cantidad de datos a desplegar tabla: ; esta es la direccion inicial de tabla db 26h,24h,31h,44h ; este es el contenido de la tabla db 36h,44h,51h,64h ; este es el contenido de la tabla end
Este codigo es simple se despliega una cantidad de datos por el pueto cero P0, la cantidad de datos esta definida por el r7.
Vídeo Simulación
Visitas
Calificar y compartir
Comentar
Descargar