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.
quisiera informacion de el programa en assembler realizado
hi buen documento solo me preguntava, si no sabria como inducir una letra minuscula desde el nasm de assembler con un procesador 8081
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
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
Fantasy 🙂
And where logic?
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
como programar el puerto serial de una computadora con ensamblador y mandar la señal a un led atravez del puerto
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.
UN FAVOR APOYENME CON LA PROGRAMACION CON EMU8086 ,,,COMUNICACION DE PUERTO SERIAL DE PC A PC TRANSMICION Y RECEPCION ..
Pudiste realizarlo?
Amigo eso fue cuando estaba en la U hace año que no toco microcontroladores, si no te sirve la info que esta ahí no puedo ayudarte mas, lo siento!
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