; Copyright 2005 Doi Shigeki ;list0903.asm ATtiny2313テスト・プログラム3 ; LED点滅,スイッチのエコー ; 内部8MHzクロックを想定 .include "tn2313def.inc" .org 0x0 ;割り込みは使用しないので ;ベクトル省略 reset: LDI R16,LOW(RAMEND) ;スタック・ポインタの設定 OUT SPL,R16 LDI R16,0b00000000 ;ポートBを入力に設定 OUT DDRB,R16 LDI R16,0b11111111 ;ポートDを出力に設定 OUT DDRD,R16 LDI R16,0 ;9600ボー/8MHzクロック OUT UBRRH,R16 LDI R16,51 OUT UBRRL,R16 LDI R16,0b00011000 ;送受信イネーブル OUT UCSRB,R16 LDI R16,0b00000110 ;8ビット,パリティなし,ストップ・ビット1 OUT UCSRC,R16 ;PCから受信,LEDへエコー check: SBIS UCSRA,RXC ;RXC=1なら受信あり,スキップ RJMP check IN R16,UDR ;受信レジスタからデータ取り出し MOV R17,R16 LSL R17 LSL R17 OUT PORTD,R17 ;LEDへ出力 ;PCへエコー check2: SBIS UCSRA,UDRE ;UDRE=1なら送信レジスタ空き,スキップ RJMP check2 OUT UDR,R16 ;PCへ送信 IN R16,PINB ;スイッチ読み込み ANDI R16,0b00001111 ;データを数字に ORI R16,0x30 ;スイッチの状態をPCへ送信 check3: SBIS UCSRA,UDRE ;UDRE=1なら送信レジスタ空き,スキップ RJMP check3 OUT UDR,R16 ;PCへ送信 RJMP check