Diferencia entre revisiones de «Ejemplo SCI Transmisión por Interrupciones»

De Wikitronica
Saltar a: navegación, buscar
 
(No se muestra una edición intermedia del mismo usuario)
Línea 1: Línea 1:
 
+
[[Categoría: EC2721 - Arquitectura del Computador 1]]
 +
[[Categoría: EC3731 - Arquitectura del Computador 2]]
 +
[[Categoría:MC9S08QE128]]
 
El siguiente es un ejemplo de Transmisión de una Tabla de caractares ASCII por puerto Serial para la tarjeta DEMOQE128.
 
El siguiente es un ejemplo de Transmisión de una Tabla de caractares ASCII por puerto Serial para la tarjeta DEMOQE128.
  

Revisión actual del 01:18 27 feb 2013

El siguiente es un ejemplo de Transmisión de una Tabla de caractares ASCII por puerto Serial para la tarjeta DEMOQE128.

;*******************************************************************
;Ejemplo de Transmision Serial de una tabla por interrupciones     *
;*******************************************************************

; Include derivative-specific definitions
            INCLUDE 'derivative.inc'
;
; export symbols
;
            XDEF _Startup
            ABSENTRY _Startup
ROMTable:      EQU     $3000  ;Lugar donde definimos la Tabla
;
; variable/data section
;
            ORG    RAMStart         ; Insert your data definition here
Apuntador: DS.B   1                 ; Apuntador al Byte que se va a mandar
;
; code section
;
            ORG    ROMStart
_Startup:
            LDHX   #RAMEnd+1        ; initialize the stack pointer
            TXS
            LDA #$00
            STA SCI1BDH   ;/* Tasa alta de transmisión deshabilitada (Baud high disabled)*/
            LDA #$1A      ;/* Pre-escaler ajustado: [SBR12:SBR0] = 4Mhz/(16*9600) =~ 26,04d= 1A (hex)*/ 
            STA SCI1BDL   ;/*Baud Rate = 9600bps*/
            LDA #$00
            STA SCI1C1    ;/*Transmisión y recepción normal de 8 bits sin paridad*/
            LDA #$AC
            STA SCI1C2    ;/*Habilita transmisor y receptor y habilita interrupciones*/
            LDHX #$0
            LDA #$0
            STA Apuntador ;Apuntador a la Tabla 
            CLI           ; enable interrupts
            
mainLoop:
            ; Insert your code here
            NOP
            feed_watchdog
            BRA    mainLoop
;**************************************************************
;* spurious - Spurious Interrupt Service Routine.             *
;*             (unwanted interrupt)                           *
;**************************************************************

spurious:                           ; placed here so that security value
            NOP                     ; does not change all the time.
            RTI

Transmite: PSHH           ; La interrupción no guarda H (la guardamos nosotros)
           LDA SCI1S1     ; Se baja la bandera de transmisión            
           CLRH
           LDX Apuntador       
           LDA Tabla,X
           CMP #$0        ;Comparamos si llegamos al final de la tabla
           BEQ FinTrans   ;Si es el final apagamos el SCI
                                 
           STA SCI1D      ;Mandamos el siguiente valor de la tabla
           
           LDA Apuntador  ;Incrementamos el Apuntador 
           INCA
           STA Apuntador
           PULH           ; Retornamos H
           RTI
           
FinTrans:  MOV #$00, SCI1C2 ; Deshabilitamos completamente el SCI
           PULH             ; Retornamos H
           RTI          
;**************************************************************
;*                 Tabla en ROM                               *
;**************************************************************
       ORG     ROMTable
Tabla: DC.B    'H'
       DC.B    'O'
       DC.B    'L'
       DC.B    'A'
       DC.B    0
;**************************************************************
;*                 Interrupt Vectors                          *
;**************************************************************
            ORG   $FFDE ; Posición en memoria donde se encuentra el vector de interrupción   
            DC.W  Transmite     ; Rutina de Transmisión
            
            ORG   $FFFA 
            DC.W  spurious          ;
            DC.W  spurious          ; SWI
            DC.W  _Startup          ; Reset

Contributors

Racuna