Ejemplo SCI Transmisión por Interrupciones

De Wikitronica
Revisión del 01:13 27 feb 2013 de Racuna (Discusión | contribuciones) (Página creada con «El siguiente es un ejemplo de Transmisión de una Tabla de caractares ASCII por puerto Serial para la tarjeta DEMOQE128. <syntaxhighlight lang="asm"> ;****************...»)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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