;********************************************************* ;なんか余計なものがごちゃごちゃしてますが ;あまり時間がないのでそのままです、ごめんなさい。 ;********************************************************* ;**** インクルードファイルの指定 **** .include "2313DEF.INC" ;**** 定数設定 **** ;**** 汎用レジスタの指定 **** .def tempA = r16 ; 一時使用用 .def x = r17 ; シフトレジスタ座標 .def stack = r18 ; フラグ退避用 .def n = r19 ; 一時使用用(主に還り値) .def scrollH = r20 ; .def scrollL = r21 ; .def tempB = r22 ; 一時使用用 .def tempC = r23 ; 一時使用用 .def scroll = r24 ; .def scrollBH = r25 ; .def scrollBL = r26 ; ;r30(ZL),r31(ZH)の使用は要注意 ;**** リセットベクトルと割り込みベクトルの指定 **** rjmp RESET reti reti reti reti rjmp tim_ovf1 ;Timer 1 overflow handle rjmp tim_ovf0 ;Timer 0 overflow handle reti reti reti reti ;************************************************* ;****************** 初期化 ********************* ;************************************************* RESET: ldi tempA,low(RAMEND) ; スタックポインタ設定 out SPL,tempA ; PORTのイニシャライズ ldi tempA,0xFF ; ポートDを出力に設定 out DDRD,tempA ldi tempA,0xff ; ポートBの入出力を設定 out DDRB,tempA ldi tempA,0xff ;ポートBのプルアップ設定 out portB,tempA ; タイマー0割込みのイニシャライズ(走査用) ldi tempA,0b011 ;カウンタ入力クロックを1/64に設定 out TCCR0,tempA ldi tempA,250 ;カウンタ初期値 out TCNT0,tempA ; タイマー1割込みのイニシャライズ(スクロール用) ldi tempA,0 out TCCR1A,tempA ldi tempA,(0<= DataLength then ; ldi scroll,0 ;初期値 SDisOver: add scrollL,scroll adc scrollH,tempA ldi scrollBL,low(dataB*2) ;データアドレス ldi scrollBH,high(dataB*2) ;データアドレス ldi tempA,0 add scrollBL,scroll adc scrollBH,tempA rjmp exit_ovf1 ; ldi scrollL,low(data*2) ;データアドレス ; ldi scrollH,high(data*2) ;データアドレス ; ldi tempA,0 ; dec scroll ; add scrollL,scroll ; adc scrollH,tempA ; ; ldi scrollBL,low(dataB*2) ;データアドレス ; ldi scrollBH,high(dataB*2) ;データアドレス ; ldi tempA,0 ; add scrollBL,scroll ; adc scrollBH,tempA ; rjmp exit_ovf1 ; inc scrollL ; ldi tempA,0 ; adc scrollH,tempA ; cpi scrollL,low(dataEnd*2) ;データ開始アドレスと比較(下位ビット) ; brne exit_ovf1 ; 不一致なら割り込み終了 ; cpi scrollH,high(dataEnd*2) ; データ開始アドレスと比較(上位ビット) ; brne exit_ovf1 ; 不一致なら割り込み終了 ; ldi scrollL,low(data*2) ;    データ最終アドレス ; ldi scrollH,high(data*2) ;    データ最終アドレス ; rjmp exit_ovf1 ; ; dec scrollL ;下位ビット減算 ; brpl ScrollDisN ;下位ビットが負なら ; dec scrollH ;  上位ビット減算 ; ldi scrollL,0xff ;  下位ビットリセット ;ScrollDisN: ; cpi scrollL,low(data*2) ;データ開始アドレスと比較(下位ビット) ; brne exit_ovf1 ; 不一致なら割り込み終了 ; cpi scrollH,high(data*2) ; データ開始アドレスと比較(上位ビット) ; brne exit_ovf1 ; 不一致なら割り込み終了 ; ldi scrollL,low(dataEnd*2) ;    データ最終アドレス ; ldi scrollH,high(dataEnd*2) ;    データ最終アドレス exit_ovf1: OUT sreg,stack ;flagレジスタを復元 RETI ;割り込みルーチンから復帰 ;▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼ ;EEPROM読み出し ; n =result data byte ; tempA =address to read from EERead: sbic EECR,EEWE ;if EEWE not clear rjmp EERead ; wait more out EEAR,tempA ;output address sbi EECR,EERE ;set EEPROM Read strobe ;This instruction takes 4 clock cycles since ;it halts the CPU for two clock cycles sbi EECR,EERE ;set EEPROM Read strobe 2nd time ;This instruction takes 4 clock cycles since ;it halts the CPU for two clock cycles in n,EEDR ;get data ret data: .db 0x00,0x10,0x7F,0x55,0x75,0x55,0x55,0x55,0x5F,0x10 ;最 .db 0x00,0x24,0x72,0x09,0x20,0x72,0x6D,0x64,0x32,0x60 ;後 .db 0x00,0x00,0x7F,0x05,0x25,0x25,0x75,0x55,0x45,0x07 ;尾 .db 0x00,0x00,0x08,0x48,0x28,0x28,0x1B,0x1B ;で .db 0x00,0x7E,0x00,0x08,0x48,0x7E,0x48,0x08 ;は .db 0x00,0x44,0x24,0x7C,0x16,0x74,0x14,0x24,0x40 ;あ .db 0x00,0x00,0x3E,0x10,0x00,0x00,0x7E ;り .db 0x00,0x00,0x14,0x14,0x14,0x7E,0x14,0x14 ;ま .db 0x00,0x20,0x7C,0x10,0x10,0x10,0x7C,0x10 ;せ .db 0x00,0x00,0x40,0x30,0x2C,0x42,0x00,0x00,0x40 ;ん .db 0x00,0x09,0x12,0x00,0x11,0x11,0x7F,0x11,0x11,0x10 ;汗 .db 0x00,0x4C,0x4C ;; .db 0,0,0 .db 0x00,0x10,0x7F,0x55,0x75,0x55,0x55,0x55,0x5F,0x10 ;最 .db 0x00,0x24,0x72,0x09,0x20,0x72,0x6D,0x64,0x32,0x60 ;後 .db 0x00,0x00,0x7F,0x05,0x25,0x25,0x75,0x55,0x45,0x07 ;尾 .db 0x00,0x00,0x08,0x48,0x28,0x28,0x1B,0x1B ;で .db 0x00,0x7E,0x00,0x08,0x48,0x7E,0x48,0x08 ;は .db 0x00,0x44,0x24,0x7C,0x16,0x74,0x14,0x24,0x40 ;あ .db 0x00,0x00,0x3E,0x10,0x00,0x00,0x7E ;り .db 0x00,0x00,0x14,0x14,0x14,0x7E,0x14,0x14 ;ま .db 0x00,0x20,0x7C,0x10,0x10,0x10,0x7C,0x10 ;せ .db 0x00,0x00,0x40,0x30,0x2C,0x42,0x00,0x00,0x40 ;ん .db 0x00,0x09,0x12,0x00,0x11,0x11,0x7F,0x11,0x11,0x10 ;汗 .db 0x00,0x4C,0x4C ;; .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dataEnd: dataB: .db 0x00,0x02,0x03,0x02,0x07,0x00,0x05,0x02,0x05,0x00 ;最 .db 0x00,0x00,0x07,0x00,0x05,0x05,0x02,0x05,0x04,0x00 ;後 .db 0x00,0x04,0x03,0x00,0x01,0x01,0x07,0x04,0x04,0x06 ;尾 .db 0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x00 ;で .db 0x00,0x03,0x00,0x03,0x02,0x01,0x00,0x03 ;は .db 0x00,0x03,0x04,0x04,0x03,0x01,0x04,0x04,0x03 ;あ .db 0x00,0x00,0x00,0x04,0x04,0x02,0x01 ;り .db 0x00,0x00,0x02,0x05,0x05,0x03,0x02,0x04 ;ま .db 0x00,0x00,0x03,0x04,0x04,0x05,0x05,0x04 ;せ .db 0x00,0x06,0x01,0x00,0x00,0x03,0x04,0x04,0x03 ;ん .db 0x00,0x04,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00 ;汗 .db 0x00,0x05,0x03 ;; .db 0,0,0 .db 0x00,0x02,0x03,0x02,0x07,0x00,0x05,0x02,0x05,0x00 ;最 .db 0x00,0x00,0x07,0x00,0x05,0x05,0x02,0x05,0x04,0x00 ;後 .db 0x00,0x04,0x03,0x00,0x01,0x01,0x07,0x04,0x04,0x06 ;尾 .db 0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x00 ;で .db 0x00,0x03,0x00,0x03,0x02,0x01,0x00,0x03 ;は .db 0x00,0x03,0x04,0x04,0x03,0x01,0x04,0x04,0x03 ;あ .db 0x00,0x00,0x00,0x04,0x04,0x02,0x01 ;り .db 0x00,0x00,0x02,0x05,0x05,0x03,0x02,0x04 ;ま .db 0x00,0x00,0x03,0x04,0x04,0x05,0x05,0x04 ;せ .db 0x00,0x06,0x01,0x00,0x00,0x03,0x04,0x04,0x03 ;ん .db 0x00,0x04,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00 ;汗 .db 0x00,0x05,0x03 ;; .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dtaBEnd: