Archivo

Archive for 18 agosto 2008

PROGRAMA DE COMUNICACION SERIAL EN ASSEMBLER PARA EL MICRONTROLADOR HC908GP32

agosto 18, 2008 12 comentarios

El siguiente es un código empleado para establecer una comunicación serial entre un computador y un microcontrolador de la marca Motorola de referencia HC908GP32.

El condigo consiste en enviar caracteres desde teclado de un computador conectado por el puerto serial hasta el microcontrolador, este a su vez tiene conectado por su puerto PTB un display de 7 segmentos de la siguiente manera:

Display de 7 segmentos —————— Microcontrolador ———————PC

El microcontrolador recibe los caracteres desde el PC si son numero desde 0 hasta 9 entonces los muestra en el display de la contrario muestra la letra E indicando error.

El siguiente es el código que se debe quemar en el microcontrolador explicado paso a paso.

FLS      EQU $8000 ; se iniciará en la posición 8000 de la memoria

RST      EQU $FFFE

CONFIG1  EQU $1F

PTB      EQU $01 ;se inicia el Puerto B

DDRB     EQU $05 ;se configura el DRRB

SCDR     EQU $0018

TC       EQU $06

SCISR    EQU $0016

SCRF     EQU $05

CONT     EQU $60 ;se crea apuntador en la posición 60 de nombre CONT

DATO     EQU $61 ;se crea apuntador en la posición 61 de nombre DATO

VAR      EQU $62 ;se crea apuntador en la posición 62 de nombre VAR

SCC1     EQU $0013

SCC2     EQU $0014

SCBR     EQU $0019

ORG   FLS ;se configura como punto de partida del programa FLS

MAIN:    BSET  0,CONFIG1 ; de deshabilita el COP

;Se configura todo el sistema para establecer la comunicación

MOV   #$03,SCBR

BSET  6,SCC1

BSET  2,SCC2

BSET  3,SCC2

MOV   #$FF,DDRB ; configure todo el Puerto B como salida

INICIO:  MOV   #$00,PTB ; apaga todo el puerto

LDHX  #MSG ;carga el mensaje “INGRESE UN NUMERO”

TX:      LDA   ,X

CMP   #$FF

BEQ   PRINT

BRCLR TC,SCISR,* ; Espera que se envié un dato al micro

STA   SCDR

AIX   #$01

BRA   TX

PRINT:   BSR   DELAY

BRCLR SCRF,SCISR,*

LDA   SCDR

CMP   #$39

BGT   ERROR

CMP   #$30

BLO   ERROR

SUB   #$30

STA   DATO

LDHX  #TABLA ;carga el número correspondiente en la tabla

TXA

ADD   DATO

TAX

LDA   ,X

EOR   #$80

STA   PTB ; envía el número correspondiente al display

BSR   DELAY

BRA   INICIO

ERROR:

MOV   #$F9,PTB ; envía la letra E al display

BSR   DELAY ; va a la subrutina para esperar un tiempo

BRA   INICIO ; vuelve al inicio del programa

; genera una rutina temporizadora con la variable VAR

DELAY:   MOV   #$00,CONT

SIGA:    CLR   VAR

LAZO:    NOP

NOP

NOP

NOP

NOP

DEC   VAR

BNE   LAZO

DEC   CONT

BNE   SIGA

RTS

; envía un mensaje al computador “INGRESE UN NUMERO”

MSG:     DB    “INGRESE UN NUMERO”,$FF

TABLA:   DB    3F ;tabla de los número del 0 al 9

DB    06

DB    5B

DB    4F

DB    66

DB    6D

DB    7D

DB    07

DB    7F

DB    67

ORG   RST

DW    MAIN ; regresa al comienzo del programa

END ;termina el programa

Agradeciemientos a Monica Ovadia Cardona

Alguna duda o sugerencia por favor pongan el comentario.

Gracias.

Anuncios