User: alciro    User
 

Microcontroladores 8051

Share |

5.2. Estructura de un programa en ensamblador

El siguiente programa muestra la estructura básica de un programa en ensamblador.

;**********************************************************
; Ejemplo de estructura de un programa en ensamblador para
; los microcontroladores 8051.
;
; Programa para hacer parpadear todos los bits del puerto 0
; con un tiempo determinado.
;
; Autor: Rafa Aranda
; Fecha: 20-10-2009
; Versión: 1.0
;**********************************************************

$NOMOD51
$INCLUDE (REG51.INC)

		NAME	ESTRUCTURA
 
STACK	EQU	030H	;Dirección del puntero del stack

;*************************************
; Iniciar los vectores de interrupción
;*************************************

		USING	0

		ORG	0H		;Origen del código (Posición de la memoria ROM)

VECTOR:	        JMP	INICIO		;Reset

		ORG	VECTOR+3H	;INT0
         
		ORG	VECTOR+0BH	;Timer 0
          
		ORG	VECTOR+13H	;INT1

		ORG	VECTOR+1BH	;Timer 1

		ORG	VECTOR+23H	;Puerto serie RI + TI

		ORG	VECTOR+2BH	;Timer 2
        
;********************************
; Tareas iniciales de preparación
;********************************         

 		ORG	VECTOR+30H

INICIO:	        MOV	SP,#STACK-1	;Fijar el puntero del stack
         	MOV	PSW,#00000000B	;Selecciona el banco de registros 0
		MOV	P1,#0H		;Preparar el puerto	


;*******************
; Programa principal
;*******************

PROGRAMA:	MOV	P1,#0H		;Poner los bits del puerto 0 a 0
		CALL	RETARDO		;Realizar un retardo
		MOV	P1,#0FFH	;Poner los bits del puerto 0 a 1
		CALL	RETARDO		;Realizar un retardo
		JMP	PROGRAMA	;Reiterar de forma infinita

;***************************
; Subrutina de temporización
;***************************

RETARDO:	MOV	R2,#7FH
RET_3:		MOV	R1,#0FFH
RET_2:		MOV	R0,#0FFH
RET_1:		DJNZ	R0,RET_1	
		DJNZ	R1,RET_2
		DJNZ	R2,RET_3
		RET

	END

 

Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |