Diferencia entre revisiones de «Ejemplo SCI Recepción por encuesta»

De Wikitronica
Saltar a: navegación, buscar
(Sin diferencias)

Revisión del 13:22 5 mar 2013

El siguiente es un ejemplo de Transmisión de una Tabla de caractares ASCII por puerto Serial para la tarjeta 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

Contributors

Racuna