Kalábovi

Kalábovic wikina

Uživatelské nástroje

Nástroje pro tento web


pitel:imp:lab1

Základy tvorby aplikací pro HC08 v prostředí CodeWarrior, komunikace přes SCI

;**************************************************************
;* Ukol c.1 pro laboratore IMP
;**************************************************************
 
 
; 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 zpracujte a provedte prislusne akce dle pokynu v zadani 
  bsr Receive_char
    sta text,X
    incx
    cbeqx #64, kon ;precetl jsem 64 znaku
    cbeqa #27, kon ;ESC
    cmp #97 ;a
      bge toupper
    cmp #90 ;Z
      ble tolower
 
  ;bsr Send_char
  ;bra kon
	bra		main_loop
 
toupper:
  sub #32
  bsr Send_char
  bra main_loop
 
tolower:
  add #32
  bsr Send_char
  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 @ 9,8MHZ-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,*        ; cekej dokud je SCI vysilac busy
        sta     SCDR            ; neni -> 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
/var/www/wiki/data/pages/pitel/imp/lab1.txt · Poslední úprava: 03. 07. 2012, 13.53:35 (upraveno mimo DokuWiki)