counter.asm 011 /9/3-6 A/D converter INCLUDE "P16F819.INC" LIST =16F819 P コンフィグ クロック信号 HS パワーアップタイマのみオン CONFIG _HS_OSC& _WDT_OFF& _PWRTE _ON& _BODEN _OFF& _LVP_OFF& ファイルレジスタ定義 N EQU 0x0 N1 EQU 0x1 N EQU 0x N3 EQU 0x3 N4 EQU 0x4 NL EQU 0x5 NH EQU 0x6 T1 EQU 0x7 T EQU 0x8 T15 EQU 0x9 TMP EQU 0xA NLT EQU 0xB ORG 0 リセットベクタ GOTOSTART ORG 4 割込みベクタ START BANKSEL ADCON 1 MOVLWB10001110 AN0 のみA 入力 A/D クロック分割なし 右詰め 1 MOVLWB00001 RA0 を入力ポート RA1-RA4 を出力ポート MOVWFTRISA MOVLWB00000000 RB0-RB7 を出力ポート MOVWFTRISB BANKSEL ADCON 0 MOVLWB10000000 A/D OFF CH0 Fosc 3 0 CLRFN1 CLRFN CLRFN3 CLRFN4 BCF PORTA,3 INIT LCD イニシャライズ 5 15msec 待ち 5 5 MOVLWB00110000 BCF PORTA,1 RS=0 BSF PORTA, E=1 BCF PORTA, E=0 5 5msec 待ち MOVLWB00110000 BCF PORTA,1 RS=0 BSF PORTA, E=1 BCF PORTA, E=0 01 100usec 待ち MOVLWB00110000 BCF PORTA,1 RS=0 1 _CP_OFF
BSF PORTA BCF PORTA MOVLWB00111100 MOVLWB00001100 MOVLWB00000001 MOVLWB00000110, E=1, E=0 8 ビット 行表示 ディスプレイ制御 表示クリア エントリーモード CALLDSP MAIN BCF PORTA,3 RTMAIN MOVLWB10000001 A/D ON 0 15u BSF ADCON 0,GO LOOP 1 BTFSCADCON 0,GO GOTOLOOP 1 BANKSEL ADRESL MOVFADRESL BANKSEL NLT MOVWFNLT MOVFNLT ADDLW0xFB 5ch 以上 BTFSSTATUS,C GOTOMAIN MOVLWB10000001 A/D ON 0 15u BSF ADCON 0,GO LOOP BTFSCADCON 0,GO GOTOLOOP BANKSEL ADRESL MOVFADRESL BANKSEL NLT MOVWFNLT MOVFNLT ADDLW0xFB 5ch 以上 BTFSSTATUS,C GOTOMAIN MOVFNLT MOVWFNL LOOP MOVLWB10000001 A/D ON 0 15u BSF ADCON 0,GO LOOP 3 BTFSCADCON 0,GO GOTOLOOP 3 BANKSEL ADRESL MOVFADRESL BANKSEL NLT MOVWFNLT
MOVFNL SUBWFNLT ADDLW0xFB MOVFNLT GOTOEXLOOP MOVWFNL GOTO LOOP EXLOOP BSF PORTA,3 CALLBTOD CALLDSP CLRFN1 CLRFN CLRFN3 CLRFN4 GOTORTMAIN BTOD BANKSEL ADRESL MOVFADRESL BANKSEL NL MOVWFNL MOVFADRESH MOVWFNH BTFSSNL GOTONL0 ADDLW0x01 NL0 BTFSSNL,1 GOTONL1 ADDLW0x0 NL1 BTFSSNL, GOTONL ADDLW0x04 NL BTFSSNL,3 GOTONL3 ADDLW0x08 BTFSSTATUS,C GOTONL3 INCFN,1 NL3 BTFSSNL,4 GOTONL4 ADDLW0x06 増分が5ch 以上 ピークを検出 N1=N1+1(1) N1=N1+(3) N1=N1+4(7) N1=N1+8(15) N1=N1-10(5) N=N+1(1) N1=N1+6(11) 3
GOTONL3 INCFN,1 NL3 ADDLW0x01 NL4 MOVWFN BTFSSNL,5 GOTONL5 ADDLW0x0 GOTONL4 INCFN,1 NL4 ADDLW0x03 NL5 MOVWFN BTFSSNL,6 GOTONL6 ADDLW0x04 GOTONL5 INCFN,1 GOTONL5 NL5 ADDLW0x06 MOVWFN GOTONL6 NL6 BTFSSNL,7 GOTONL7 ADDLW0x08 N1=N1-10(1) N=N+1() N=N+1(3) N1=N1+(3) N1=N1-10 N=N+1 N=N+3(6) N1=N1+4(7) N1=N1-10 N=N+1 N=N-10 N3=N3+1 N=N+6(1) N=N-10() N3=N3+1(1) N1=N1+8(15) 4
GOTONL6 INCFN,1 GOTONL6 NL6 ADDLW0x0 MOVWFN GOTONL63 NL63 ADDLW0x01 NL7 MOVWFN3 BTFSSNH GOTONH0 ADDLW0x06 GOTONL7 INCFN,1 GOTONL7 NL7 ADDLW0x05 MOVWFN GOTONL73 NL73 ADDLW0x0 NH0 MOVWFN3 BTFSSNH,1 N1=N1-10(5) N=N+1(3) N=N-10 N3=N3+1 N=N+(5) N=N-10 N3=N3+1 N3=N3+1() N1=N1+6(11) N1=N1-10(1) N=N+1(6) N=N-10 N3=N3+1 N=N+5(11) N=N-10(1) N3=N3+1(3) N3=N3+(5) 5
GOTONH1 ADDLW0x0 GOTONH0 INCFN,1 GOTONH0 NH0 ADDLW0x01 MOVWFN GOTONH03 GOTONH03 SUBWFN3,1 INCFN4,1 NH03 ADDLW0x05 MOVWFN3 GOTONH1 SUBWFN3,1 NH1 CMD INCFN4,1 MOVWFTMP MOVFTMP BCF BSF BCF N1=N1+(3) N1=N1-10 N=N+1 N=N-10 N3=N3+1 N=N+1() N=N-10 N3=N3+1 N3=N3-10 N4=N4+1 N3=N3+5(10) PORTA,1 RS=0 PORTA, E=1 PORTA, E=0 N3=N3-10(0) N4=N4+1(1) 制御信号出力 6
DAT MOVWFTMP MOVFTMP BSF BSF BCF DSP データ出力 PORTA,1 RS=1 PORTA, E=1 PORTA, E=0 LCD にチャンネルを表示 MOVLWB00000001 表示クリア MOVWFN CALLLCD MOVWFN CALLLCD MOVWFN CALLLCD MOVWFN CALLLCD LCD MOVLWB10001000 1 行 9 桁目 MOVFN4 1000 位 MOVLWB10001001 1 行 10 桁目 100 位 MOVLWB10001010 1 行 11 桁目 10 位 MOVLWB10001011 1 行 1 桁目 1 位 MOVLWB10001101 1 行 14 桁目 MOVLWB01000011 C MOVLWB10001110 1 行 15 桁目 MOVLWB01001000 H MOVFN,1 SUBLW0x01 RETLWB00110000 0 RETLWB00110001 1 N をASCII に変換 7
SUBLW0x0 RETLWB00110010 SUBLW0x03 SUBLW0x04 SUBLW0x05 SUBLW0x06 SUBLW0x07 SUBLW0x08 SUBLW0x09 RETLWB00110011 3 RETLWB00110100 4 RETLWB00110101 5 RETLWB00110110 6 RETLWB00110111 7 RETLWB00111000 8 RETLWB00111001 9 RETLWB00101010 * WAIT 5 5msec 待ちサブルーチン MOVLW0x3 T=50(50*0.1m=5msec ) MOVWFT W5 01 DECFSZ T,1 GOTOW5 WAIT msec 待ちサブルーチン MOVLW0x14 T=0(0*0.1m=5msec ) MOVWFT W 01 DECFSZ T,1 GOTOW WAIT 01 0.1msec =100usec 待ちサブルーチン MOVLW0xA5 T1=165(165*0.u*3+0. u*5=100usec ) MOVWFT1 W01 DECFSZ T1,1 GOTOW01 WAIT 15u 15usec 待ちサブルーチン MOVLW0x18 T15=4(4*0.u*3+0. u*5=15.4 usec ) MOVWFT15 W15u DECFSZ T15,1 GOTOW15u 8
END 9