; Copyright 2005 Satoshi Goda title TEST LED list p=16f84A,R=DEC,f=inhx32 #include ; ;config: FOSC=RC WDTE=Dis ; org 0ch datapa res 1 ;PORT-A out data datapb res 1 ;PORT-B out data dcnt1 res 1 dcnt2 res 1 org 00h ;reset vector goto Start org 10h movlw "1" ;REV. status 2004/8/8 Start ; ; PORT -A initial I/O setting x x x O 0 0 0 0 bsf STATUS,RP0 ;bank 1 movlw B'00000000' ; movwf TRISA ; PORT -B Initial I/O Setting O O O O O O O O movlw B'00000000'; movwf TRISB bcf STATUS,RP0 ;bank 0 ; clear Port-A/B data bit clrf PORTA clrf PORTB clrf datapa MOVLW 1h ; LEDループ初期データ MOVWF datapb ; ; LOOP bcf STATUS,C ;キャリ・ビットをクリア rlf datapb,F ;ポートBデータを左シフト、保存 ;桁あふれはCビットに、Cビットは次のシフトへPORT-Aデータの最下位へ rlf datapa,F ;PORT-Aデータを左シフト、保存 btfsc datapa,4 ;桁あふれか? (RA4) bsf datapb,0 ;YES 桁あふれデータをPORT-Bデータの最下位へ movf datapa,W ;PORT-AデータをWレジスタへ movwf PORTA ;PORT-Aへ出力 movf datapb,W ;PORT-Bデータを movwf PORTB ;PORT-Bへ出力 ; call delay ; 時間稼ぎ goto LOOP ; ; 発振RC=約1.2MHz 命令あたりの時間=3.3uSディレイ・ルーチン ; delay clrf dcnt2 dloop2 clrf dcnt1 dloop1 incfsz dcnt1,F ;3.3us*3*256=2534us goto dloop1 incfsz dcnt2,F ;(2534+12)*256=652ms goto dloop2 return end