; Copyright 2005 Doi Shigeki ;list0806.asm PIC16F873Aテスト・プログラム ; LED点滅,スイッチのエコー list p=16F873A #INCLUDE P16F873A.INC ;コンフィグレーション・ワード __CONFIG _BODEN_OFF & _WDT_OFF & _HS_OSC ; _CP_OFF,_DEBUG_OFF,_WRT_PROTECT_OFF,_CPD_OFF,_LVP_ON,_MCLR_ON,_PWRTE_OFFはデフォルト CNT0 EQU 20H ;カウンタ0 CNT1 EQU 21H ;カウンタ1 CNT2 EQU 22H ;カウンタ2 CNT3 EQU 23H ;カウンタ3 ORG 0 ;0番地より展開 MAIN NOP ;割り込みの場合も再スタート NOP NOP NOP BSF STATUS, RP0 ;bank1に切り替え MOVLW B'00000000' ;Aポートはすべて出力 MOVWF TRISA MOVLW B'11001111' ;Cポート7(RX),6(TX),3,2,1,0ビットは入力 MOVWF TRISC BCF STATUS, RP0 ;bank0に切り替え MOVLW D'10' ;10回点滅 MOVWF CNT3 LOOP MOVLW B'00001111' ;点灯 MOVWF PORTA CALL WAIT500 ;0.5sec待ち MOVLW B'00000000' ;消灯 MOVWF PORTA CALL WAIT500 ;0.5sec待ち DECFSZ CNT3,F GOTO LOOP LOOP2 MOVF PORTC,W ;スイッチのLEDへのエコー MOVWF PORTA GOTO LOOP2 ; ;時間待ち 0.2ミリ秒/20MHzクロック ; 全体で999サイクル WAIT02 MOVLW D'249' ;249回 MOVWF CNT0 ;2サイクル WAIT022 NOP DECFSZ CNT0,F GOTO WAIT022 ;4*248+3サイクル RETURN ;999サイクル(2+995+2) ; ;時間待ち 50ミリ秒/20MHzクロック ; WAIT50 MOVLW D'250' ;250回 MOVWF CNT1 WAIT502 CALL WAIT02 ;0.2ms待ち DECFSZ CNT1,F GOTO WAIT502 RETURN ; ;時間待ち 0.5秒/20MHzクロック ; WAIT500 MOVLW D'10' ;5回 MOVWF CNT2 WAIT5002 CALL WAIT50 ;50ms待ち DECFSZ CNT2,F GOTO WAIT5002 RETURN END