;; USARTを用い、シリアル入力し、データをそのままPCに送り返す(echo) ;; ;; 1.UCSRC:8ビットデータ選択, パリティ無し ;; 2.UBRRH,UBRRL:ボーレートをセット9600bps UBRRH=0, UBRRL=25 ;; 3.シフトレジスタが初期化するまで待つ ;; 4.UCSRA:割り込み無し(RXCIE,TXCIE,UDRIE=0),受信・送信許可(RXEN,TXEN=1) ;; ;; シリアル入力(PD0) ;; シリアル出力(PD1) ;; ;*************************************************************** ;*  デバイスの定義ファイルのインクルード * ;*************************************************************** ; .include "m88def.inc" ; ;*************************************************************** ;*  シンボルをレジスターにシンボル名を定義 * ;*************************************************************** ; .def temp =r16 ;テンポラリ .def cnt =r17 ;ディレイルーチンで使用する変数 .def us_data =r18 ;USART 送受信データ ; .equ BRH =0 ;BRH=0, BRL=25 -> ボーレート = 9600bps .equ BRL =51 ; ; ;*************************************************************** ;* ベクトルエリア * ;*************************************************************** .cseg rjmp reset ; reset vector reti ; INT0 vector reti ; INT1 vector reti ; PCINT0 reti ; PCINT1 reti ; PCINT2 reti ; WDT reti ; Timer2 COMPA reti ; Timer2 COMPB reti ; Timer2 overflow reti ; Timer1 capture reti ; Timer1 COMPA reti ; Timer1 COMPB reti ; Timer1 overflow reti ; Timer0 COMPA reti ; Timer0 COMPB reti ; Timer0 overflow reti ; SPI STC reti ; USART/Rx complete reti ; USART/ Data register empty reti ; USART/Tx complete reti ; ADC reti ; EEPROM EE_RDY reti ; Analog comparator reti ; TWI reti ; SPM_RDY ; ; ;*************************************************************** ;* リセットルーチン             * ;*************************************************************** reset: ldi temp,high(RAMEND) out SPH,temp ; set stuck pointer ldi temp,low(RAMEND) out SPL,temp ; set stuck pointer ldi temp,BRH ; ボーレート9800に設定 sts UBRR0H,temp ldi temp,BRL sts UBRR0L,temp ldi temp,0b00000110 ; Stop Bit 1, Data 8 bit sts UCSR0C,temp ; Parity disable ldi temp,(1<