Ejemplo SCI Recepción por encuesta

De Wikitronica
Saltar a: navegación, buscar

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

Contributors

Racuna