Diferencia entre revisiones de «Ejemplo SCI Recepción por encuesta»
De Wikitronica
(Página creada con «Categoría: EC2721 - Arquitectura del Computador 1 Categoría: EC3731 - Arquitectura del Computador 2 Categoría:MC9S08QE128 El siguiente es un ejemplo de Trans...») |
|||
Línea 2: | Línea 2: | ||
[[Categoría: EC3731 - Arquitectura del Computador 2]] | [[Categoría: EC3731 - Arquitectura del Computador 2]] | ||
[[Categoría:MC9S08QE128]] | [[Categoría:MC9S08QE128]] | ||
− | El siguiente es un ejemplo de | + | El siguiente es un ejemplo de Recepción de datos por puerto serial usando el método de encuesta. Los datos recibidos son mostrados por los LEDS de la tarjeta de desarrollo DEMOQE128. |
<syntaxhighlight lang="asm"> | <syntaxhighlight lang="asm"> |
Revisión del 13:25 5 mar 2013
El siguiente es un ejemplo de Recepción de datos por puerto serial usando el método de encuesta. Los datos recibidos son mostrados por los LEDS de la tarjeta de desarrollo DEMOQE128.
;*******************************************************************
;* Ejemplo de recepción serial por encuesta
;* Se pregunta contiuamente por la bandera de recepción
;* y se muestra el dato recibido por los LEDS del DEMOQE128
;*******************************************************************
; Include derivative-specific definitions
INCLUDE 'derivative.inc'
;
; export symbols
;
XDEF _Startup
ABSENTRY _Startup
;
; variable/data section
;
ORG RAMStart ; Insert your data definition here
DatoSerial: DS.B 1
;
; code section
;
ORG ROMStart
_Startup:
LDHX #RAMEnd+1 ; initialize the stack pointer
TXS
LDA #%00000011
STA SOPT1 ;Disable Watch Dog, Enable BKGND debugging
BSR InitGPIO
BSR InitSerial
CLI ; enable interrupts
mainLoop:
; Insert your code here
BSR RecepcionSerial
BSR MostrarDato
BRA mainLoop
;**************************************************************
;* Rutinas de inicializacion *
;**************************************************************
InitGPIO: ;Se configuran los LEDS del DEMOQE como salida
LDA #$3F ;Pines 0:5 del Puerto C y 6:7 del Puerto E como salida
STA PTCDD
STA PTCD
LDA #$C0
STA PTEDD
STA PTED
RTS
InitSerial:
LDA #$00
STA SCI1BDH
LDA #$1A ;/* Pre-escaler ajustado: [SBR12:SBR0] = 4Mhz/(16*9600) =~ 26,04d= 1A (hex)*/
STA SCI1BDL ;/*Baud Rate = 9600bps para un clock de 4MHZ*/
LDA #$00
STA SCI1C1 ;/*Transmisión y recepción normal de 8 bits sin paridad*/
LDA #%00000100
STA SCI1C2 ;/*Habilita solo el receptor sin interrupciones*/
RTS
;**************************************************************
;* Rutina de recepción serial por encuesta *
;**************************************************************
RecepcionSerial:
BRCLR SCI1S1_RDRF,SCI1S1,* ;Revisamos si se levanta la bandera de recepcion
LDA SCI1S1 ;Primer paso para limpiar la bandera
LDA SCI1D ;Segundo paso para limpiar la bandera. Se lee el dato recibido
STA DatoSerial ;Se coloca el valor del acumulador en la variable DatoSerial.
RTS ;Se sale de la sub rutina y vuelve al PC+1 de donde fue Llamada.
;**************************************************************
;* Rutina para mostrar el dato por el puerto *
;**************************************************************
MostrarDato:
LDA DatoSerial
;Mostramos los pines 0:5 del PTC
LDA #%00111111 ;Mascara de bits
AND DatoSerial
COMA ;Logica negada en los leds
STA PTCD
;Mostramos los pines 6:7 del PTE
LDA #%11000000 ;Mascara de bits superiores
AND DatoSerial
COMA ;Logica negada en los leds
STA PTED
RTS ;Se sale de la sub rutina y vuelve al PC+1 de donde fue Llamada.
;**************************************************************
;* spurious - Spurious Interrupt Service Routine. *
;* (unwanted interrupt) *
;**************************************************************
spurious: ; placed here so that security value
NOP ; does not change all the time.
RTI
;**************************************************************
;* Interrupt Vectors *
;**************************************************************
ORG $FFFA
DC.W spurious ;
DC.W spurious ; SWI
DC.W _Startup ; Reset