API UART: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 23: Riadok 23:
 
| align="center" width=300 | [[Súbor:uart_example_1.png | 300px]]
 
| align="center" width=300 | [[Súbor:uart_example_1.png | 300px]]
 
|-
 
|-
| align="center" width=300 | '''Vývojový diagram'''
+
| align="center" width=300 | '''Vývojový diagram príkladu'''
 
|}
 
|}
 
</center>
 
</center>
 
+
Zdrojový kód príkladu je uvedený nižšie. Program po inicializácii čaká v slučke na príchod znaku, po príchode znaku ho načíta z buffra UART a podľa významu znaku vykonáva predvolenú aktivitu. Po ukončení aktivity sa vráti do slučky čakania na príchod znaku.  
 
 
 
 
Zdrojový kód jednoduchého povelového interpreteru. Program prijíma znaky z UART a podľa ich významu vykonáva predvolené aktivity.  
 
 
 
 
<source lang="asm">
 
<source lang="asm">
 
_main:
 
_main:
Riadok 41: Riadok 37:
 
         and  A, UART_RX_COMPLETE     
 
         and  A, UART_RX_COMPLETE     
 
         jz    WaitForData         
 
         jz    WaitForData         
         call  UART_bReadRxData          ; nacitanie znaku    
+
         call  UART_bReadRxData          ; nacitanie znaku    
        call  UART_SendData            ; echo znaku 
 
 
      
 
      
 
  cmp A,'x'                      ; skok na aktivitu 'x'
 
  cmp A,'x'                      ; skok na aktivitu 'x'
Riadok 52: Riadok 47:
  
 
state_x:   
 
state_x:   
         .....                          ; implementacia aktivity 'x'
+
         ; implementacia aktivity 'x'
 
         jmp  WaitForData
 
         jmp  WaitForData
  
 
state_y:   
 
state_y:   
         .....                          ; implementacia aktivity 'y'
+
         ; implementacia aktivity 'y'
 
         jmp  WaitForData
 
         jmp  WaitForData
 
</source>
 
</source>

Verzia zo dňa a času 19:58, 29. máj 2010


Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

Aplikačné rozhranie bloku UART

  • UART_Start Enable user module and set parity.
  • UART_Stop Disable user module.
  • UART_EnableInt Enable both RX and TX interrupts.
  • UART_DisableInt Disable both RX and TX interrupts.
  • UART_SetTxIntMode Set the source of the Tx interrupt.
  • UART_SendData Send byte without checking TX status.
  • UART_bReadTxStatus Return status of TX Status register.
  • UART_bReadRxData Return data in RX Data register without checking status of character is valid.
  • UART_bReadRxStatus Check status of RX Status register.

Príklady použitia

Pre rôzne testy zariadení a overenie funkcionality častí programov často potrebujeme jednoduchý program, ktorý po príjme znaku zo sériového rozhrania vykoná naprogramovanú aktivitu. Na takýto program sa môžeme pozerať aj ako na primitívny udalosťami riadený operačný systém. Vývojový diagram takéhoto programu ukazuje nasledujúci obrázok.

Uart example 1.png
Vývojový diagram príkladu

Zdrojový kód príkladu je uvedený nižšie. Program po inicializácii čaká v slučke na príchod znaku, po príchode znaku ho načíta z buffra UART a podľa významu znaku vykonáva predvolenú aktivitu. Po ukončení aktivity sa vráti do slučky čakania na príchod znaku.

_main:	
        mov   A,UART_PARITY_NONE        ; inicializacia serioveho rozhrania  
        call  UART_Start         
	M8C_EnableGInt   

   WaitForData:                         ; cakanie na prichod znaku     
        call  UART_bReadRxStatus    
        and   A, UART_RX_COMPLETE    
        jz    WaitForData         
        call  UART_bReadRxData          ; nacitanie znaku      
    
 	cmp A,'x'                       ; skok na aktivitu 'x'
 	jz state_x
 	
 	cmp A,'y'			; skok na aktivitu 'y'
 	jz state_y
        jmp   WaitForData               ; navrat do slucky cakania na novy znak

state_x:   
        ; implementacia aktivity 'x'
        jmp   WaitForData

state_y:   
        ; implementacia aktivity 'y'
        jmp   WaitForData

Odkazy a literatúra