;********************************************************************** ;WAIT TEST 2002.01.28 ;DEVICE : PIC16F84A ;CLOCK : 20MHz ; ;********************************************************************** list p=16F84A #include __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC TCNT EQU 0CH ;********************************************************************** ORG 00H ; processor reset vector GOTO MAIN ; go to beginning of program MAIN BSF STATUS,RP0 ;メモリーバンクを1にセット CLRF TRISB ;TRISBをクリア PORT-Bを出力にセット MOVLW 080H ;Wレジスタに80Hをセット MOVWF OPTION_REG ;OPTION_REGに80Hをセット PORT-B PULL UPなし BCF STATUS,RP0 ;メモリーバンクを0にセット ;*********************************************************************** LOOP MOVLW 0AAH ;WレジスタにAAHをセット MOVWF PORTB ;PORTBにAAHを出力 CALL WAIT ;サブルーチンWAITの呼び出し MOVLW 055H ;Wレジスタに55Hをセット MOVWF PORTB ;PORTBに55Hを出力 CALL WAIT ;サブルーチンWAITの呼び出し GOTO LOOP ;ラベルLOOPにジャンプ ;*********************************************************************** ;20uSのタイマ ;20MHz 1サイクル 0.2uS ;100サイクルx0.2uS = 20uS ;*********************************************************************** WAIT MOVLW 0FFH ;1 Wレジスタに20H(32)をセット MOVWF TCNT ;1 TCNT変数に20Hをセット NOP ;1 TLOOP DECFSZ TCNT ;1x31+2 TCNT-1を行い0になったら次の命令ジャンプ GOTO TLOOP ;2x31 ラベルTLOOPに戻る RETURN ;2 戻る END