; list p=PIC12F675 ; ; Copyright 2003 Sugihara Toshio. ; All rights reserved. ; #include ; PIC12F675 ; Clock=Internal RC NO Clock 4MHz 1M order/s ; WDT=off, PowerUpTimer=on ; Protect=off, Oscllator=Internal RC ; GP3=Digital IO, BrownOutDetect=off count equ H'20' moji equ H'21' waith equ H'22' waitl equ H'23' showh equ H'24' showl equ H'25' waitz equ H'26' ;--Program start ;Always come to H'00' from POR or RESET or WdtTimeOut org H'00' boot ;bank 0 is selected ;Stop interrupt clrf INTCON ;I/O setup clrf GPIO movlw H'07' ;Set GP2,GP1,GP0 to movwf CMCON ;Digital I/O bsf STATUS,RP0 ;Select Bank 1 clrf ANSEL ;Select GP3-0 to Digital I/O movlw B'00011000' ;Set GP0-GP2, GP5 into outputs movwf TRISIO ;GP3 is only input movlw B'11010110' ;prescaler is for TMR0 and 128:1 movwf OPTION_REG ;Pull up is globally off clrf WPU ;Pull up is off by every pin bcf STATUS,RP0 ;Select Bank 0 clrf GPIO ;Set I/O stop mode ;Set tmr0 as zero clrf TMR0 ;TMR0 does overflow every 4 seconds bcf INTCON,2 ;clear TMR0 overflow bit ;Set initial values to variables clrf GPIO clrf count clrf moji Mainloop call SelectChar ;count is from 0 to 251. movwf moji incfsz moji,W ;moji == H'ff'? goto Mainp1 ;No. normal operation goto boot ;Yes. back to boot again Mainp1 ;Show moji for 800ms ;Generate data movf moji,W movwf showh andlw B'00000111' movwf showl rlf showh,F swapf showh,W andlw B'00000111' ;iorlw B'00100000' movwf showh ;Show them for 800ms ;Loop is 622 cycles ;1286 loops are required. ;movlw D'6' movlw D'5' ;Adjust for time loss of other routine movwf waith ;movlw D'6' movlw D'150' ;Adjust for time loss of other routine movwf waitl Mainp3 goto Mainp2 Mainp2 ;Show lower 1,2,3 movlw B'00100000' movwf GPIO clrf GPIO movf showl,W iorwf GPIO,F ;wait for 307 cycles movlw D'102' movwf waitz wz1 decfsz waitz,F goto wz1 ;Show higher 4,5,6 clrf GPIO bsf GPIO,5 movf showh,W iorwf GPIO,F ;wait for 301 cycles movlw D'100' movwf waitz wz2 decfsz waitz,F goto wz2 ;Check if loop is done. decfsz waitl,F goto Mainp3 decfsz waith,F goto Mainp2 ;Hide moji movlw B'00100000' movwf GPIO clrf GPIO ;If moji[7,6]=='00', wait for 200ms movf moji,W andlw B'11000000' btfsc STATUS,Z ;moji[7,6]=='00'? call Wait200ms ;Yes. wait for 200ms ;No. not wait ;Update character to show Updatecount incf count,F movlw D'252' xorwf count,W btfsc STATUS,Z ;count becomes 252? goto boot ;Yes. boot again. goto Mainloop ;No. Show next character. ;Wait for 200ms ;This routine consumes 199999 cycles Wait200ms movlw D'195' movwf waith movlw D'237' movwf waitl Wait200p1 nop decfsz waitl,F goto Wait200p1 decfsz waith,F goto Wait200p1 return ;Select character according to count value. ;count must be from 0 to 251 SelectChar org H'200' movlw H'02' movwf PCLATH movf count,W addwf PCL,F ; B'xx654321' retlw B'00000001' ;あ retlw B'00000011' ;い retlw B'00001001' ;う retlw B'00001011' ;え retlw B'00001010' ;お ;k ; B'xx654321' retlw B'00100001' ;か retlw B'00100011' ;き retlw B'00101001' ;く retlw B'00101011' ;け retlw B'00101010' ;こ ;s ; B'xx654321' retlw B'00110001' ;さ retlw B'00110011' ;し retlw B'00111001' ;す retlw B'00111011' ;せ retlw B'00111010' ;そ ;t ; B'xx654321' retlw B'00010101' ;た retlw B'00010111' ;ち retlw B'00011101' ;つ retlw B'00011111' ;て retlw B'00011110' ;と ;n ; B'xx654321' retlw B'00000101' ;な retlw B'00000111' ;に retlw B'00001101' ;ぬ retlw B'00001111' ;ね retlw B'00001110' ;の ;h ; B'xx654321' retlw B'00100101' ;は retlw B'00100111' ;ひ retlw B'00101101' ;ふ retlw B'00101111' ;へ retlw B'00101110' ;ほ ;m ; B'xx654321' retlw B'00110101' ;ま retlw B'00110111' ;み retlw B'00111101' ;む retlw B'00111111' ;め retlw B'00111110' ;も ;y ; B'xx654321' retlw B'00001100' ;や retlw B'00101100' ;ゆ retlw B'00011100' ;よ ;r ; B'xx654321' retlw B'00010001' ;ら retlw B'00010011' ;り retlw B'00011001' ;る retlw B'00011011' ;れ retlw B'00011010' ;ろ ;wa-wi-we-wo-n ; B'xx654321' retlw B'00000100' ;わ retlw B'00000110' ;ゐ retlw B'00010110' ;ゑ retlw B'00010100' ;を retlw B'00110100' ;ん ;- tt ; B'xx654321' retlw B'00010010' ;ー retlw B'00000010' ;っ ;Pause retlw B'00000000' ;Ga ; B'xx654321' retlw B'00010000' ;゛ retlw B'00100001' ;か retlw B'00010000' ;゛ retlw B'00100011' ;き retlw B'00010000' ;゛ retlw B'00101001' ;く retlw B'00010000' ;゛ retlw B'00101011' ;け retlw B'00010000' ;゛ retlw B'00101010' ;こ ;Za ; B'xx654321' retlw B'00010000' ;゛ retlw B'00110001' ;さ retlw B'00010000' ;゛ retlw B'00110011' ;し retlw B'00010000' ;゛ retlw B'00111001' ;す retlw B'00010000' ;゛ retlw B'00111011' ;せ retlw B'00010000' ;゛ retlw B'00111010' ;そ ;Da ; B'xx654321' retlw B'00010000' ;゛ retlw B'00010101' ;た retlw B'00010000' ;゛ retlw B'00010111' ;ち retlw B'00010000' ;゛ retlw B'00011101' ;つ retlw B'00010000' ;゛ retlw B'00011111' ;て retlw B'00010000' ;゛ retlw B'00011110' ;と ;Ba ; B'xx654321' retlw B'00010000' ;゛ retlw B'00100101' ;は retlw B'00010000' ;゛ retlw B'00100111' ;ひ retlw B'00010000' ;゛ retlw B'00101101' ;ふ retlw B'00010000' ;゛ retlw B'00101111' ;へ retlw B'00010000' ;゛ retlw B'00101110' ;ほ ;Pa ; B'xx654321' retlw B'00100000' ;゜ retlw B'00100101' ;は retlw B'00100000' ;゜ retlw B'00100111' ;ひ retlw B'00100000' ;゜ retlw B'00101101' ;ふ retlw B'00100000' ;゜ retlw B'00101111' ;へ retlw B'00100000' ;゜ retlw B'00101110' ;ほ ;Pause retlw B'00000000' ;Kya ; B'xx654321' retlw B'00001000' ;y retlw B'00100001' ;kaきゃ retlw B'00001000' ;y retlw B'00101001' ;kuきゅ retlw B'00001000' ;y retlw B'00101010' ;koきょ ;Gya ; B'xx654321' retlw B'00011000' ;y゛ retlw B'00100001' ;kaぎゃ retlw B'00011000' ;y゛ retlw B'00101001' ;kuぎゅ retlw B'00011000' ;y゛ retlw B'00101010' ;koぎょ ;Sha ; B'xx654321' retlw B'00001000' ;y retlw B'00110001' ;saしゃ retlw B'00001000' ;y retlw B'00111001' ;suしゅ retlw B'00001000' ;y retlw B'00111010' ;soしょ ;Zya ; B'xx654321' retlw B'00011000' ;y゛ retlw B'00110001' ;saじゃ retlw B'00011000' ;y゛ retlw B'00111001' ;suじゅ retlw B'00011000' ;y゛ retlw B'00111010' ;soじょ ;Cha ; B'xx654321' retlw B'00001000' ;y retlw B'00010101' ;taちゃ retlw B'00001000' ;y retlw B'00011101' ;tuちゅ retlw B'00001000' ;y retlw B'00011110' ;toちょ ;Dya ; B'xx654321' retlw B'00011000' ;y゛ retlw B'00010101' ;taぢゃ retlw B'00011000' ;y゛ retlw B'00011101' ;tuぢゅ retlw B'00011000' ;y゛ retlw B'00011110' ;toぢょ ;Nya ; B'xx654321' retlw B'00001000' ;y retlw B'00000101' ;naにゃ retlw B'00001000' ;y retlw B'00001101' ;nuにゅ retlw B'00001000' ;y retlw B'00001110' ;noにょ ;Hya ; B'xx654321' retlw B'00001000' ;y retlw B'00100101' ;haひゃ retlw B'00001000' ;y retlw B'00101101' ;huひゅ retlw B'00001000' ;y retlw B'00101110' ;hoひょ ;Bya ; B'xx654321' retlw B'00011000' ;y゛ retlw B'00100101' ;haびゃ retlw B'00011000' ;y゛ retlw B'00101101' ;huびゅ retlw B'00011000' ;y゛ retlw B'00101110' ;hoびょ ;Pya ; B'xx654321' retlw B'00101000' ;y゜ retlw B'00100101' ;haぴゃ retlw B'00101000' ;y゜ retlw B'00101101' ;huぴゅ retlw B'00101000' ;y゜ retlw B'00101110' ;hoぴょ ;Mya ; B'xx654321' retlw B'00001000' ;y retlw B'00110101' ;maみゃ retlw B'00001000' ;y retlw B'00111101' ;muみゅ retlw B'00001000' ;y retlw B'00111110' ;moみょ ;Rya ; B'xx654321' retlw B'00001000' ;y retlw B'00010001' ;raりゃ retlw B'00001000' ;y retlw B'00011001' ;ruりゅ retlw B'00001000' ;y retlw B'00011010' ;roりょ ;Fa ; B'xx654321' retlw B'00100010' ;特殊音(外来発音) retlw B'00100101' ;haふぁ retlw B'00100010' ;特殊音(外来発音) retlw B'00100111' ;hiふぃ retlw B'00100010' ;特殊音(外来発音) retlw B'00101111' ;heふぇ retlw B'00100010' ;特殊音(外来発音) retlw B'00101110' ;hoふぉ ;Pause retlw B'00000000' ;1234567890 ; B'xx654321' retlw B'00111100' ;数符 retlw B'00000001' ;1 retlw B'00000011' ;2 retlw B'00001001' ;3 retlw B'00011001' ;4 retlw B'00010001' ;5 retlw B'00001011' ;6 retlw B'00011011' ;7 retlw B'00010011' ;8 retlw B'00001010' ;9 retlw B'00011010' ;0 ;Pause retlw B'00000000' ;Se - Sa Ku ; B'xx654321' retlw B'00111011' ;せ retlw B'00010010' ;ー retlw B'00110001' ;さ retlw B'00101001' ;く retlw B'00000000' ;Pause ;Su Gi Ha Ra To Shi O ; B'xx654321' retlw B'00111001' ;す retlw B'00010000' ;゛ retlw B'00100011' ;き retlw B'00100101' ;は retlw B'00010001' ;ら retlw B'00000000' ;Pause retlw B'00011110' ;と retlw B'00110011' ;し retlw B'00001010' ;お ;2003ねん 9がつ 21にち ; B'xx654321' retlw B'00000000' ;Pause retlw B'00111100' ;数符 retlw B'00000011' ;2 retlw B'00011010' ;0 retlw B'00011010' ;0 retlw B'00001001' ;3 retlw B'00001111' ;ね retlw B'00110100' ;ん retlw B'00000000' ;Pause retlw B'00111100' ;数符 retlw B'00001010' ;9 retlw B'00010000' ;゛ retlw B'00100001' ;か retlw B'00011101' ;つ retlw B'00000000' ;Pause retlw B'00111100' ;数符 retlw B'00000011' ;2 retlw B'00000001' ;1 retlw B'00000111' ;に retlw B'00010111' ;ち ;Pause retlw B'00000000' ;Done retlw H'ff' end