All pastes #757424 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-11-01 10:22 UTC
rendered paste body
;**************************************************************
;* Ukol c.1 pro laboratore IMP
;* Pro monitor mode je BUSCLK = 2,4576 Mhz
;**************************************************************

 
; export symbols
            XDEF Entry        ; exportuj 'Entry' symbol
            ABSENTRY Entry    ; navesti, kde zacina aplikace
           
; prihrej definice zvoleneho mikrokontroleru 
            Include 'derivative.inc'

VectorStart EQU  $FFDA  ; zacatek tabulky prerusovacich vektoru

; Misto pro promenne a data
            ORG RAMStart

text	  ds.b	64

; Misto pro program
            ORG ROMStart


;**************************************************************
;* Entry - Tady se zacne provadet kod po resetu procesoru     *
;*                                                            *
;**************************************************************
Entry:
       rsp
       clra                ; Inicializace A,X
       clrx
       clrh

       mov #$01,CONFIG1    ; Vypnout COP
       jsr Init_SCI        ; Inicializace SCI
       cli                 ; Povoleni preruseni

;hlavni smycka programu		

main_loop:

;Sem doplnte kod, ktery bude cist znaky z SCI. Kazdy precteny
;znak posle zpet po SCI do PC (echo) a ulozi do pameti RAM
;(do vyse nadefinovaneho pole "text". Jakmile prijde
;znak "Esc" (ASCII kod $1B), prestane se cist a skoci se na
;navesti "kon", kde program pokracuje pipanim

  jsr   Send_char
  cmp   #$1B
  beq   kon
  jsr   Receive_char
  sta   text, X
  incx
  bra   main_loop

kon:

       bset    1,DDRA         ; PTA1 vystup (pipatko)
beep_loop:
       ldx     #$FF
dela1:
       nop
       nop
       nop
       nop
       dbnzx   dela1
       lda     #2
       eor     PTA            ; beep je potreba generovat frekvenci cca 1kHz
       sta     PTA
       brclr   5,SCS1,beep_loop ; prisel znak z SCI?
       lda     SCDR           ; precteni 
       bclr    1,DDRA         ; PTA1 vstup (a je klid)

idle:	bra	idle


;*********************************
;* Init_SCI - inicializuj SCI    *
;*********************************
Init_SCI:
       mov   #$A2,SCBR       ; Baud Rate = 9600 @ 2,45MHZ-BUS CLK
       mov   #$40,SCC1       ; povol SCI periferii
       mov   #$0C,SCC2       ; povol SCI prijimac a vysilac
       clr   SCC3            
       rts

;**************************************************************
;* Receive_char - prijmi znak z SCI vstupu a uloz jej do A    *
;**************************************************************
Receive_char:
;Zde doplnte kod pro prijem znaku z SCI.
;Rutinka bude cekat, dokud se v datovem registru SCI neobjevi
;novy znak. Pak vrati tento znak v registru A.
        brclr   5,SCS1,*
        lda     SCDR
        rts

;**************************************************************
; Send_char - znak z A posli na SCI vystup		      *
;**************************************************************
Send_char:
        brclr   7,SCS1,*        ; vysila SCI znak(y)?
        sta     SCDR            ; ne -> muzeme poslat nas znak
        rts

;**************************************************************
;* spurious - obsluha pro nevyuzivana preruseni		      *
;**************************************************************
spurious:		
            NOP		
            RTI

;**************************************************************
;*                 tabulka prerusovacich vektoru              *
;**************************************************************
        ORG  VectorStart
        ; routine	  ; popis vektoru           	;adresa vektoru
        fdb  spurious     ; Real-time Clock Vector   	;$FFDA
        fdb  spurious     ; ADC Conversion Complete  	;$FFDC
        fdb  spurious     ; Keyboard Vector		;$FFDE
        fdb  spurious     ; SCI Transmit Vector		;$FFE0
        fdb  spurious     ; SCI Receive Vector		;$FFE2
        fdb  spurious     ; SCI Error Vector		;$FFE4
        fdb  spurious     ; SPI Receive Vector		;$FFE6
        fdb  spurious     ; SPI Transmit Vector		;$FFE8
        fdb  spurious	    ; TIM2 Overflow Vector	;$FFEA
        fdb  spurious     ; TIM2 Channel 1 Vector	;$FFEC
        fdb  spurious     ; TIM2 Channel 0 Vector	;$FFEE
        fdb  spurious     ; TIM1 Overflow Vector	;$FFF0
        fdb  spurious     ; TIM1 Channel 1 Vector	;$FFF2
        fdb  spurious     ; TIM1 Channel 0 Vector	;$FFF4
        fdb  spurious     ; PLL Vector			;$FFF6
        fdb  spurious     ; LVI Vector			;$FFF8
        fdb  spurious     ; ~IRQ1 Vector		;$FFFA
        fdb  spurious     ; SWI Vector			;$FFFC
        fdb  Entry        ; Reset Vector		;$FFFE