Archivo de 18/08/08

h1

PROGRAMA DE COMUNICACION SERIAL EN ASSEMBLER PARA EL MICRONTROLADOR HC908GP32

Agosto 18, 2008

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.