015384 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

おっさんのAVRアセンブラ活用術

おっさんのAVRアセンブラ活用術

PR

Keyword Search

▼キーワード検索

Profile

ひろゆき1369

ひろゆき1369

Rakuten Card

Calendar

Favorite Blog

まだ登録されていません

Comments

コメントに書き込みはありません。

Freepage List

Headline News

May 10, 2011
XML
カテゴリ:カテゴリ未分類
デバッグをしているとキャラクタ液晶だけじゃ情報量表示が足りなくなってしまうことがよくありますよね。
そういう時はシリアル通信を使いましょう。


単発送信と単発受信、連続送信が一個のパックになってます。
ペリフェラル0番を利用します、1番を使いたい場合は書き換えてください。


;割り込みベクタにラベルをセット
;USART240: 受信完了
;USART260: 送信バッファ空
;USART280: 送信完了


;.dsegに展開
;USART0_recv: .db 0x00 ;受信バイト用バッファ
;USART0_dat: .byte 0x20 ;送信配列バッファ


;UCSR0A:RXC0 TXC0 UDRE0 FE0 DOR0 UPE0 U2X0 MPCM0
;.EQU UCSR0A_ =0b00000000
;UCSR0B:RXCIE0 TXCIE0 UDRIE0 RXEN0 TXEN0 UCSZ02 RXB80 TXB80
;.EQU UCSR0B_ =0b10011000
;UCSR0C:UMSEL01 UMSEL00 UPM01 UPM00 USBS0 UCSZ01 UCSZ00 UCPOL0
;.EQU UCSR0C_ =0b00000110
;USARTボーレートレジスタH
;.EQU UBRR0H_ =0x00
;USARTボーレートレジスタL
;.EQU UBRR0L_ =0x81





USART0_set:;USART利用開始___________________________________________
ldi r16,UCSR0A_
sts UCSR0A,r16
ldi r16,UCSR0B_
sts UCSR0B,r16
ldi r16,UCSR0C_
sts UCSR0C,r16
ldi r16,UBRR0H_
sts UBRR0H,r16
ldi r16,UBRR0L_
sts UBRR0L,r16
ret
;__________________________________________________________________

;r16に1バイト
SENDUSART0:;1バイト送信_______________________________________________
push r16
push r17
sendusart00:
lds r17,UCSR0A
sbrs r17,5 ;送信バッファ空フラグ
JMP sendusart00
sts UDR0,r16
sendusart01:
lds r17,UCSR0A
sbrs r17,6 ;送信完了フラグ検査
jmp sendusart01 ;フラグ1の場合繰り返す
andi r17,0b11110111
ori r17,0b01100000
sts UCSR0A,r17
pop r17
pop r16
ret
;__________________________________________________________________
USART240:;24 USART 受信完了_________________________________________
push r16
lds r16,UDR0
sts USART0_recv,r16
pop r16
reti
;__________________________________________________________________


;Zポインタに送信先頭アドレス、0x00がエンドポイント_____________________________
STRUSART0:;連続文字列を送信
lds r17,UCSR0B ;送信バッファ空割り込み許可
ori r17,0b00100000
sts UCSR0B,r17
ret
;__________________________________________________________________

USART260:;26 USART 送信バッファ空______________________________________
push r10
push r16
push r17
in r10,sreg
ld r16,z+
cpi r16,0x00 ;デミリタ0x00の場合割り込み禁止で終了
breq USART2801
sts UDR0,r16 ;データレジスタに送信データストア
jmp USART2803
USART2801:
lds r17,UCSR0B ;送信バッファ空割り込み禁止
andi r17,0b11011111
sts UCSR0B,r17
USART2803:
out sreg,r10
pop r17
pop r16
pop r10
reti
;__________________________________________________________________

USART280:;28 USART 送信完了_________________________________________
push r10
pop r10
reti
;__________________________________________________________________







Last updated  May 10, 2011 11:38:55 PM
コメント(0) | コメントを書く



© Rakuten Group, Inc.