▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼ ブラウザで開いた時の文字化け防止日本語テキスト 夏目漱石 夢十夜より 第一夜  こんな夢を見た。  腕組をして枕元に坐《すわ》っていると、仰向《あおむき》に寝た女が、静かな声でもう死にますと云う。女は長い髪を枕に敷いて、輪郭《りんかく》の柔《やわ》らかな瓜実《うりざね》顔《がお》をその中に横たえている。真白な頬の底に温かい血の色がほどよく差して、唇《くちびる》の色は無論赤い。とうてい死にそうには見えない。しかし女は静かな声で、もう死にますと判然《はっきり》云った。自分も確《たしか》にこれは死ぬなと思った。そこで、そうかね、もう死ぬのかね、と上から覗《のぞ》き込むようにして聞いて見た。死にますとも、と云いながら、女はぱっちりと眼を開《あ》けた。大きな潤《うるおい》のある眼で、長い睫《まつげ》に包まれた中は、ただ一面に真黒であった。その真黒な眸《ひとみ》の奥に、自分の姿が鮮《あざやか》に浮かんでいる。  自分は透《す》き徹《とお》るほど深く見えるこの黒眼の色沢《つや》を眺めて、これでも死ぬのかと思った。それで、ねんごろに枕の傍《そば》へ口を付けて、死ぬんじゃなかろうね、大丈夫だろうね、とまた聞き返した。すると女は黒い眼を眠そうに※[#「浄」の「さんずい」の代わりに「めへん」、37-3]《みはっ》たまま、やっぱり静かな声で、でも、死ぬんですもの、仕方がないわと云った。  じゃ、私《わたし》の顔が見えるかいと一心《いっしん》に聞くと、見えるかいって、そら、そこに、写ってるじゃありませんかと、にこりと笑って見せた。自分は黙って、顔を枕から離した。腕組をしながら、どうしても死ぬのかなと思った。  しばらくして、女がまたこう云った。 「死んだら、埋《う》めて下さい。大きな真珠貝で穴を掘って。そうして天から落ちて来る星の破片《かけ》を墓標《はかじるし》に置いて下さい。そうして墓の傍に待っていて下さい。また逢《あ》いに来ますから」  自分は、いつ逢いに来るかねと聞いた。 「日が出るでしょう。それから日が沈むでしょう。それからまた出るでしょう、そうしてまた沈むでしょう。――赤い日が東から西へ、東から西へと落ちて行くうちに、――あなた、待っていられますか」  自分は黙って首肯《うなず》いた。女は静かな調子を一段張り上げて、 「百年待っていて下さい」と思い切った声で云った。 「百年、私の墓の傍《そば》に坐って待っていて下さい。きっと逢いに来ますから」  自分はただ待っていると答えた。すると、黒い眸《ひとみ》のなかに鮮《あざやか》に見えた自分の姿が、ぼうっと崩《くず》れて来た。静かな水が動いて写る影を乱したように、流れ出したと思ったら、女の眼がぱちりと閉じた。長い睫《まつげ》の間から涙が頬へ垂れた。――もう死んでいた。  自分はそれから庭へ下りて、真珠貝で穴を掘った。真珠貝は大きな滑《なめら》かな縁《ふち》の鋭《する》どい貝であった。土をすくうたびに、貝の裏に月の光が差してきらきらした。湿《しめ》った土の匂《におい》もした。穴はしばらくして掘れた。女をその中に入れた。そうして柔らかい土を、上からそっと掛けた。掛けるたびに真珠貝の裏に月の光が差した。  それから星の破片《かけ》の落ちたのを拾って来て、かろく土の上へ乗せた。星の破片は丸かった。長い間大空を落ちている間《ま》に、角《かど》が取れて滑《なめら》かになったんだろうと思った。抱《だ》き上《あ》げて土の上へ置くうちに、自分の胸と手が少し暖くなった。  自分は苔《こけ》の上に坐った。これから百年の間こうして待っているんだなと考えながら、腕組をして、丸い墓石《はかいし》を眺めていた。そのうちに、女の云った通り日が東から出た。大きな赤い日であった。それがまた女の云った通り、やがて西へ落ちた。赤いまんまでのっと落ちて行った。一つと自分は勘定《かんじょう》した。  しばらくするとまた唐紅《からくれない》の天道《てんとう》がのそりと上《のぼ》って来た。そうして黙って沈んでしまった。二つとまた勘定した。  自分はこう云う風に一つ二つと勘定して行くうちに、赤い日をいくつ見たか分らない。勘定しても、勘定しても、しつくせないほど赤い日が頭の上を通り越して行った。それでも百年がまだ来ない。しまいには、苔《こけ》の生《は》えた丸い石を眺めて、自分は女に欺《だま》されたのではなかろうかと思い出した。  すると石の下から斜《はす》に自分の方へ向いて青い茎《くき》が伸びて来た。見る間に長くなってちょうど自分の胸のあたりまで来て留まった。と思うと、すらりと揺《ゆら》ぐ茎《くき》の頂《いただき》に、心持首を傾《かたぶ》けていた細長い一輪の蕾《つぼみ》が、ふっくらと弁《はなびら》を開いた。真白な百合《ゆり》が鼻の先で骨に徹《こた》えるほど匂った。そこへ遥《はるか》の上から、ぽたりと露《つゆ》が落ちたので、花は自分の重みでふらふらと動いた。自分は首を前へ出して冷たい露の滴《したた》る、白い花弁《はなびら》に接吻《せっぷん》した。自分が百合から顔を離す拍子《ひょうし》に思わず、遠い空を見たら、暁《あかつき》の星がたった一つ瞬《またた》いていた。 「百年はもう来ていたんだな」とこの時始めて気がついた。 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲ ;内蔵オシレータは ;●Vcc=3V時にf=約350kHz T=2.8ns ;●Vcc=4V時にf=約700kHz T=1.4ns ;です。 ; .include "1200DEF.INC" ;▼▼▼▼▼レジスタ定義 .def a=r16 ;メインるーちん用 .def b=r17 ;メインるーちん用 .def c=r18 ;メインるーちん用 .def d=r19 ;サブるーちん用 .def e=r20 ;サブるーちん用 .def mode=r21 ;発光モード .def BattCounter=r22 ;これを300ms毎にdecしてNが立ったらバッテリーチェック .def BlinkCounter=r23;点滅等に使ってください。Timerにも使ってます。 .def function=r24 ;機能 .def PDa=r25 ; .def PDb=r26 ; .def flags=r27 ;0b0000 00xx ; |+---0=PDa,1=PDb ; +----0=TimerOff,1=TimerOn .def TCounterL=r28 .def TCounterH=r29 .def zero=r1 .def one=r2 ;▼▼▼▼▼割り込みベクトル rjmp Reset ;RESET reti ;INT0 reti ;TIMER0 reti ;ACMP Reset: ;▼▼▼▼▼初期化します cli ;割り込み禁止 ldi a,0 mov zero,a ldi a,1 mov one,a ldi a,0b00011100 out DDRB,a ;PB2/3/4は出力 ldi a,0b00011100 out PORTB,a ; ldi a,0b00111011 out DDRD,a ;PD6,PD2(INT0)だけ入力 ldi a,0b01111110 out PORTD,a ;PD6,PD2(INT0)プルアップ rcall Wait300ms ;スイッチ端子の劣化防止 cbi ACSR,5 ;アナログコンパレータ起動 ldi mode,0 ldi BattCounter,255 ;▼▼▼▼▼一周は2ms程度かとおもわれます。 Main: ;▼▼▼バッテリーにかんすること。 dec BattCounter ;BattCounter-- brne MM1 ;if Z=0 rcall CheckBatt ;else CheckBatt then... rjmp MM2 MM1: ldi d,238 ;wait 2ms MM3: nop ;1 nop ;1 nop ;1 dec d ;1 brne MM3 ;2 MM2: ;▼▼▼ボタンが押されてるかチェキ!!。 CheckModeButton: sbic PIND,6 ;if D6押した(D6=0) rjmp CMB1 ;else(D6=1) CMB1 inc mode ;then(D6=0) mode++ rcall ModeChange ; PDa,PDbを変更 rcall Wait300ms ; ちゃたりんぐは無視 CMB1: sbic PIND,2 ;if D2押した(D2=0) rjmp CMB3 ;else(D2=1) inc function ;then(D2=0) function++ rcall Wait300ms ; ちゃたりんぐは無視 CMB3: ;▼▼▼function cpi function,0 breq Normal cpi function,1 breq Timer60 cpi function,2 breq BlinkDuty5 cpi function,3 breq BlinkDuty50 rcall sleep ;▼function=4 rcall Wait300ms ;チャタリング rjmp FunctionEnd Normal: ;▼function=0 rcall PWM rjmp FunctionEnd Timer60: ;▼function=1 T1: bst flags,1 brts T2 set bld flags,1 ldi BlinkCounter,0 ldi TCounterL,0 ldi TCounterH,0 T2: add BlinkCounter,one adc TCounterL,zero adc TCounterH,zero cpi TCounterH,22 ;60x60/0.0025/256/256=22 brne TEnd ; rcall Sleep TEnd: rcall PWM rjmp FunctionEnd BlinkDuty5: ;▼function=2 clt ;T=0 bld flags,1 ;タイマ中フラグクリア inc BlinkCounter cpi BlinkCounter,13 brcc Boff ; rcall PWM ;OnDuty rjmp FunctionEnd ; BlinkDuty50: ;▼function=3 inc BlinkCounter cpi BlinkCounter,127 brcc Boff ; rcall PWM ;OnDuty rjmp FunctionEnd ; Boff: ;OffDuty ldi a,0b01111110 bst PDb,0 bld a,0 out PORTD,a FunctionEnd: rjmp Main ;▼▼▼PWMみたいに PWM: sbrc flags,0 rjmp PWM1 out PORTD,PDa ;▼if(flags(0)=0) set ;T=1 bld flags,0 ;flags(0)=1 rjmp PWM2 PWM1: out PORTD,PDb ;▼if(flags(0)=1) clt ;T=0 bld flags,0 ;flags(0)=0 PWM2: ret ;▼▼▼modeに応じてPDa,PDbを変更してください。 ; ldi PDx,0b01xxx1xx ; E---冷陰極管(正理論) ; ABC D ---LED(負理論) ModeChange: ;0111 1110 ldi PDa,0b01111110 ldi PDb,0b01011110 cpi mode,0 breq MC1 ldi PDa,0b01011110 ldi PDb,0b01011110 cpi mode,1 breq MC1 ldi PDa,0b01001110 ldi PDb,0b01001110 cpi mode,2 breq MC1 ldi PDa,0b01111110 ldi PDb,0b01000100 cpi mode,3 breq MC1 ldi PDa,0b01000100 ldi PDb,0b01000100 cpi mode,4 breq MC1 ldi PDa,0b01110100 ldi PDb,0b01110100 cpi mode,5 breq MC1 ldi PDa,0b01111111 ldi PDb,0b01111111 cpi mode,6 breq MC1 ldi PDa,0b01111111 ldi PDb,0b01011111 cpi mode,7 breq MC1 ldi PDa,0b01011111 ldi PDb,0b01011111 cpi mode,8 breq MC1 ldi PDa,0b01001111 ldi PDb,0b01001111 cpi mode,9 breq MC1 ldi PDa,0b01111111 ldi PDb,0b01000101 cpi mode,10 breq MC1 ldi PDa,0b01000101 ldi PDb,0b01000101 cpi mode,11 breq MC1 ldi PDa,0b01110101 ldi PDb,0b01110101 cpi mode,12 breq MC1 ldi mode,0 ;mode>=13のとき rjmp ModeChange MC1: ret ;▼▼▼300msほど休ませていただきます。 ;とりあえずクロックは700kHzを想定します。すると、1クロックは1.43nsです。 ;なので、209790クロック無駄にします。209790といいますと、256x256x3.20 ;209790/4/256=205 ,4x256x205x1.43ns=209920x1.43ns=300.2ms ;ちなみに、クロックが350kHzの時は2倍の600.4msになります。 Wait300ms: ldi d,204 W2: ldi e,255 W1: nop ;1 dec e ;1 brne W1 ;2 dec d ;1 brne W2 ;2 ret ;▼▼▼電池の電圧はだいじょうぶかぁ〜? CheckBatt: cbi PORTB,2 ;PB2=L cbi PORTB,3 ;PB3=L cbi PORTB,4 ;PB4=L ldi d,238 ;wait 2ms C1: nop ;1 nop ;1 nop ;1 dec d ;1 brne C1 ;2 sbic ACSR,5 ;if AIN1>AIN0 (AC0=0) rjmp Sleep ;else Sleep then... sbi PORTB,2 ;PB2=H sbi PORTB,3 ;PB3=H sbi PORTB,4 ;PB4=H ldi BattCounter,255 ;■256x2ms=512ms毎にチェック ret ;▼▼▼ねむいみゅ〜。 Sleep: ldi function,0 cbi PORTD,0 ;冷陰極管を先にoff rcall Wait300ms rcall Wait300ms ldi a,0b00000000 out DDRB,a ;全部入力 ldi a,0b00000000 out PORTB,a ;プルアップ解除 ldi a,0b00000000 out DDRD,a ;全部入力 ldi a,0b00000100 out PORTD,a ;PD2(INT0)だけプルアップ sbi ACSR,5 ;アナログコンパレータ停止 cli ;割り込み禁止 ldi a,0b01000000 out GIMSK,a ldi a,0b00110000 ; || ++----;INT0がLになると起きる。 ; ++--------;ぱわーだうんモード out MCUCR,a sei ;割り込み許可 sleep ;▼▼▼おはようございます。 Wake: cli ;割り込み禁止 clt ;T=0 bld flags,1 ;タイマ中フラグクリア ldi a,0b00011100 out DDRB,a ;PB2/3/4は出力 ldi a,0b00011100 out PORTB,a ; ldi a,0b00111011 out DDRD,a ;PD6,PD2(INT0)だけ入力 ldi a,0b01111110 out PORTD,a ;PD6,PD2(INT0)プルアップ rcall Wait300ms cbi ACSR,5 ;アナログコンパレータ起動 ret