PROGRAMA DE COMUNICACION SERIAL EN ASSEMBLER PARA EL MICRONTROLADOR HC908GP32

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.

14 comentarios en «PROGRAMA DE COMUNICACION SERIAL EN ASSEMBLER PARA EL MICRONTROLADOR HC908GP32»

  1. hi buen documento solo me preguntava, si no sabria como inducir una letra minuscula desde el nasm de assembler con un procesador 8081

  2. BUen aporte..quisiera saber si me pueden ayudar necesito prender y apagar UN led mediante seriAL… QUE CODIGO UTILIZARIA YA SEA EN C(PREFERIBLEMENTE )O EN OTRO LENGUAJE GRACIAS

  3. Como utilizaría este código si lo requiero para un micro de Atmel ya sea para el ATmega8 o el ATMega16? te agradeceré la ayuda ya que lo necesito para enviar datos de manera seial. De nuevo gracias

  4. I simply couldn’t depart your web site before suggesting that I extremely enjoyed the usual info an individual provide to your guests? Is going to be back ceaselessly in order to inspect new posts

  5. como programar el puerto serial de una computadora con ensamblador y mandar la señal a un led atravez del puerto

  6. juan :
    como programar el puerto serial de una computadora con ensamblador y mandar la señal a un led atravez del puerto

    1. Recuerdo que cuando hacia esos experimentos usabamos hyperterminal con algunos comandos puedes hacer eso, pero la verdad ya eso fue hace tanto que no recuerdo.

  7. UN FAVOR APOYENME CON LA PROGRAMACION CON EMU8086 ,,,COMUNICACION DE PUERTO SERIAL DE PC A PC TRANSMICION Y RECEPCION ..

  8. mov AH,00; INICIALIZO PUERTO
    mov AL, 11100111b ;paramertos de puerto POR DEFAULT
    mov DX,00 ;puerto com1
    ; aqui te falta llamar la interrupcion 14h

    MOV AH,01; enviar datos por el puerto
    MOV AL, 52; caracter a ser enviado
    INT 14h

    ESO ES DE TRANSMICION NO SE SI ESTA BIEN FALTA DE RECEPCION ….AYUDENME POR FAVOR

Los comentarios están cerrados.