; Copyright 2005 Doi Shigeki ;list0801.asm PIC16F88テストプログラム ; MPASMWIN v4.01 仕様 : LED点滅,スイッチのエコー list p=16F88 #INCLUDE P16F88.INC ;コンフィグレーション・ワード 1 __CONFIG _CONFIG1, _BODEN_OFF & _WDT_OFF & _INTRC_IO ; _CP_OFF,_CCP1_RB0,_DEBUG_OFF,_WRT_PROTECT_OFF,_CPD_OFF,_LVP_ON,_MCLR_ON,_PWRTE_OFFはデフォルト ;コンフィグレーション・ワード 2 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_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'01110000' ;内蔵OSCを8MHzに設定 MOVWF OSCCON MOVLW B'00000000' ;Aポートはすべて出力 MOVWF TRISA MOVLW B'00010011' ;Bポートは4,1,0入力 MOVWF TRISB BCF STATUS, RP0 ;bank0に切り替え MOVLW D'10' ;10回点滅 MOVWF CNT3 LOOP MOVLW B'00001111' ;点灯 MOVWF PORTA CALL WAIT500 ;0.5秒待ち MOVLW B'00000000' ;消灯 MOVWF PORTA CALL WAIT500 ;0.5秒待ち DECFSZ CNT3,F GOTO LOOP LOOP2 MOVF PORTB,W ;スイッチのLEDへのエコー MOVWF PORTA GOTO LOOP2 ; ;時間待ち 0.5ミリ秒/8MHzクロック ; 全体で999サイクル WAIT05 MOVLW D'249' ;249回 MOVWF CNT0 ;2サイクル WAIT052 NOP DECFSZ CNT0,F GOTO WAIT052 ;4*248+3サイクル RETURN ;999サイクル(2+995+2) ; ;時間待ち 100ミリ秒/8MHzクロック ; WAIT100 MOVLW D'200' ;200回 MOVWF CNT1 WAIT1002 CALL WAIT05 ;0.5ミリ秒待ち DECFSZ CNT1,F GOTO WAIT1002 RETURN ; ;時間待ち 0.5秒/8MHzクロック ; WAIT500 MOVLW D'5' ;5回 MOVWF CNT2 WAIT5002 CALL WAIT100 ;100ミリ秒待ち DECFSZ CNT2,F GOTO WAIT5002 RETURN END