ラベル
- 12F1822 (2)
- A/D変換 (3)
- Arduino (7)
- Nikon D40 リモコン インターバルタイマー (6)
- Nゲージ 自動往復運転コントローラ (5)
- Nゲージの運転コントローラ (3)
- PICマイコンツール (5)
- XC8 (1)
- サーボモーター (1)
- プログラム (15)
- 赤外線リモコン送信 (1)
- 赤外線リモコン送信 キャリア波(38kHzか40kHz)の作成 (2)
- 電子部品/キット/輸入品 (26)
2011/11/29
A/D変換とマイク
A/D変換とマイク
PIC12F675 2CH AD変換を比較し、LEDを電灯する。
AN2に入力した電圧はAN3に設定した電圧より高く場合、LEDが
電灯します。
LIST P=12F675
INCLUDE P12F675.INC
CB = _CPD_OFF ;データ保護しない
CB &= _CP_OFF ;コード保護しない
CB &= _BODEN_ON ;ブラウンアウトリセット
CB &= _MCLRE_OFF ;GP3/MCLR デジタルI/O
CB &= _PWRTE_ON ;パワーアップタイマを使用する
CB &= _WDT_OFF ;ウォッチドッグタイマをOFF
CB &= _INTRC_OSC_NOCLKOUT ;内部クロックを利用、RA4ピンI/Oピン
__CONFIG CB ;設定
;--
CBLOCK H'20'
CONT1 ;LED点滅カウント
SCONT1 ;タイマカウント
SCONT2
HAN3
LAN3
HAN2
LAN2
EEA ;EEPROM書き込み時のアドレス
EED ;EEPROM書き込み時のデータ
ENDC
;--
ORG H'0'
GOTO INIT
;ORG H'04'
;GOTO H04
;--
INIT ;デバイス初期化
BCF STATUS,RP0 ;0バンク選択
MOVLW B'00000111' ;コンパレータOFF
MOVWF CMCON ;コンパレータOFF
BCF INTCON,PEIE ;周辺割り込みOFF
BSF STATUS,RP0 ;1バンク選択
CALL 0x3FF ;
MOVWF OSCCAL
MOVLW B'00010110' ;RP1,2,4入力用設定
MOVWF TRISIO ;RP1,2,4入力用設定
MOVLW B'00010100' ;Fosc/8,GP2,4アナログ
MOVWF ANSEL ;Fosc/8,GP2,4アナログ
BCF STATUS,RP0 ;0バンク戻る
CALL S1TIME
;-----------------------------------------------------------
MAIN ;
BTFSC GPIO,1
GOTO ADCL
;ADH---------------------------
MOVLW B'00001100' ;ADFM=0,VDD電圧,AN3-GP4
MOVWF ADCON0 ;
CALL ADCMAIN
MOVF ADRESH,W
MOVWF HAN3 ;
BSF STATUS,RP0
MOVF ADRESL,W
BCF STATUS,RP0
MOVWF LAN3 ;
MOVLW B'00001000' ;ADFM=0,VDD電圧,AN2-GP2
MOVWF ADCON0
CALL ADCMAIN
MOVF ADRESH,W
MOVWF HAN2 ;
BSF STATUS,RP0
MOVF ADRESL,W
BCF STATUS,RP0
MOVWF LAN2 ;
CALL EPCHK
MOVF HAN3,W ;A
SUBWF HAN2,W ;B
BTFSS STATUS,C ;IF BF-HAN3>AW-HAN2 C=1
GOTO HLEDON
BCF GPIO,5
GOTO MAIN
HLEDON
BSF GPIO,5
CALL S2TIME
GOTO MAIN
;ADL--------------------------
ADCL
MOVLW B'10001100' ;ADFM=1,VDD電圧,AN3-GP4
MOVWF ADCON0 ;
CALL ADCMAIN
BSF STATUS,RP0
MOVF ADRESL,W
BCF STATUS,RP0
MOVWF LAN3 ;
MOVLW B'10001000' ;ADFM=1,VDD電圧,AN2-GP2
MOVWF ADCON0
CALL ADCMAIN
BSF STATUS,RP0
MOVF ADRESL,W
BCF STATUS,RP0
MOVWF LAN2 ;
CALL EPCHK
MOVF LAN3,W ;A
SUBWF LAN2,W ;B
BTFSS STATUS,C ;IF BF-HAN3>AW-HAN2 C=1
GOTO LLEDON
BCF GPIO,5
GOTO MAIN
LLEDON
BSF GPIO,5
;CALL S2TIME
GOTO MAIN
;--------------------------------------------------------------
;EEPRO CHECK
EPCHK
MOVF HAN3,W
MOVWF EED
MOVLW 0X00
MOVWF EEA
CALL EEPROM
MOVF LAN3,W
MOVWF EED
MOVLW 0X01
MOVWF EEA
CALL EEPROM
MOVF HAN2,W
MOVWF EED
MOVLW 0X02
MOVWF EEA
CALL EEPROM
MOVF LAN2,W
MOVWF EED
MOVLW 0X03
MOVWF EEA
CALL EEPROM
RETURN
;------------------------------------------------------------
;AD開始
ADCMAIN
BSF ADCON0,ADON ;ADC変換ON
CALL ADCLK32 ;充電時間約30μs
BSF ADCON0,GO ;ADC変換
ENDAC
BTFSC ADCON0,GO ;ADC変換完了待ち
GOTO ENDAC ;ADC変換完了待ち
BCF ADCON0,ADON ;ADC変換OFF
RETURN
;充電時間
ADCLK32
MOVLW D'17' ;1 7x4+4=32μs
MOVWF SCONT1 ;
ADCLK32LOOP
NOP ;1
DECFSZ SCONT1,F ;1
GOTO ADCLK32LOOP ;2
RETURN ;2
;充電時間完了
;AD完了
;--------------------------------------------------
;時間タイマ
S2TIME
MOVLW D'11'
MOVWF SCONT2
S2LOP
CALL S1TIME
DECFSZ SCONT2,F
GOTO S2LOP
RETURN
S1TIME ;1000μS、1mS
MOVLW D'249' ;1 249X4+4=1000
MOVWF SCONT1 ;1
S1LOP
NOP ;1
DECFSZ SCONT1,F ;1
GOTO S1LOP ;2
RETURN ;2
;--------------------------------------------------------
;EEPROM書き込み
EEPROM
BSF STATUS,RP0
MOVF EEA,W ;書き込みアドレス
MOVWF EEADR
MOVF EED,W ;書き込みデータ
MOVWF EEDATA
BSF EECON1,WREN ;書き込み許可
MOVLW 0X55 ;書き込み手順
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR ;書き込み
RWC
BTFSC EECON1,WR
GOTO RWC
BCF STATUS,RP0 ;書き込み完了後、バイク0に戻る
RETURN ;戻る
;---
EEND
END
2011/11/26
ステッピングモータSPG20-1362
ステッピングモータSPG20-1362
http://akizukidenshi.com/catalog/g/gP-04241/
;-----------------------------------------------------------
MAIN
MOVLW D'90'
MOVWF DO
L
MOVLW B'00010001'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000011'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000110'
MOVWF GPIO
CALL S2TIME
MOVLW B'00010100'
MOVWF GPIO
CALL S2TIME
DECFSZ DO,F
GOTO L
CALL S3TIME
MOVLW D'90'
MOVWF DO
R
MOVLW B'00010100'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000110'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000011'
MOVWF GPIO
CALL S2TIME
MOVLW B'00010001'
MOVWF GPIO
CALL S2TIME
DECFSZ DO,F
GOTO R
CALL S3TIME
GOTO MAIN
;--------------------------------------------------------------
end
MAIN
MOVLW D'90'
MOVWF DO
L
MOVLW B'00010001'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000011'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000110'
MOVWF GPIO
CALL S2TIME
MOVLW B'00010100'
MOVWF GPIO
CALL S2TIME
DECFSZ DO,F
GOTO L
CALL S3TIME
MOVLW D'90'
MOVWF DO
R
MOVLW B'00010100'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000110'
MOVWF GPIO
CALL S2TIME
MOVLW B'00000011'
MOVWF GPIO
CALL S2TIME
MOVLW B'00010001'
MOVWF GPIO
CALL S2TIME
DECFSZ DO,F
GOTO R
CALL S3TIME
GOTO MAIN
;--------------------------------------------------------------
end
2011/11/20
大小比較 SUBWF SUBLW
大小比較 1(W>F)
MOVF W,0
SUBWF F,0 ;F-W
大小比較 2(W≦F)
大小比較 3(W≦数値)
MOVF W,0
SUBLW D'128' ;K-W
W <D'128' C=1
W =D'128' C=1
W >D'128' C=0
MOVF W,0
SUBWF F,0 ;F-W
W <F C=1
W =F C=1
W >F C=0
大小比較 2(W≦F)
MOVF W,0
SUBWF B,0 ;F-W
W <F C=1
SUBWF B,0 ;F-W
W <F C=1
W =F C=1
W >F C=0
MOVF W,0
SUBLW D'128' ;K-W
W <D'128' C=1
W =D'128' C=1
W >D'128' C=0
高輝度赤外線LED OSI5FU5111C-40
高輝度赤外線LED OSI5FU5111C-40
http://akizukidenshi.com/download/OSI5FU5111C-40.pdf
順電圧:1.35V typ @100mA
http://akizukidenshi.com/download/OSI5FU5111C-40.pdf
順電圧:1.35V typ @100mA
電圧5V、36.5Ω抵抗を追加
赤外線リモコン受信モジュール PL-IRM2161-C438
赤外線リモコン受信モジュール PL-IRM2161-C438
http://akizukidenshi.com/catalog/g/gI-03292/
http://akizukidenshi.com/download/PL-IRM2161-C438.pdf
http://akizukidenshi.com/catalog/g/gI-03292/
http://akizukidenshi.com/download/PL-IRM2161-C438.pdf
実際の動作確認
VDD → 5.15V
H → =VDD
L → 5.0mV
2011/11/19
赤外線リモコン送信 キャリア波(38kHzか40kHz)の作成
;赤外線リモコン送信 キャリア波(38kHzか40kHz)の作成
;1秒間4万回点滅させる方法
;1. PIC12F629
;2. ロック 4MHz
; 4Mhz 1クロック=0.00000025S = 0.25μS
; 4Mhz 1サイクル=1μS
;3. 40kHz 1秒/40000回=0.000025S=0.025mS=25μS
; 38kHz 1秒/38000回=0.000026S=0.026mS=26μS
;4. 40kHz 方形波=12.5μS ON + 12.5μS OFF
; 38kHz 方形波=13 μS ON + 13 μS OFF
;5. 600μs事にHiかLowを出力します。
; 600μS/25=24回
; 600μS/26=23回
;
;--
LIST P=12F629
INCLUDE P12F629.INC
CB = _CPD_OFF
CB &= _CP_OFF
CB &= _BODEN_ON
CB &= _MCLRE_OFF
CB &= _PWRTE_ON
CB &= _WDT_OFF
CB &= _INTRC_OSC_NOCLKOUT ;_HS_OSC
__CONFIG CB
;--
ORG H'0'
GOTO INIT
;--
INIT
BSF STATUS,RP0 ;1BANK
CALL 0x3FF
MOVWF OSCCAL
MOVLW B'00010000'
MOVWF TRISIO ;
BCF STATUS,RP0 ;
MOVLW B'00000111'
MOVWF CMCON ;
BCF STATUS,RP0
CLRF GPIO
;--
MAIN
BTFSS GPIO,4 ;1
GOTO MAIN ;2
BSF GPIO,2 ;3
NOP ;1
NOP ;2
NOP ;3
NOP ;4
NOP ;5
NOP ;6
NOP ;7
NOP ;8
NOP ;9
NOP ;10
NOP ;11
NOP ;12
NOP ;13
BCF GPIO,2 ;4
NOP ;5
NOP ;6
NOP ;7
NOP ;8
NOP ;9
NOP ;10
NOP ;11
NOP ;12
NOP ;13
GOTO MAIN ;14
END
;1秒間4万回点滅させる方法
;1. PIC12F629
;2. ロック 4MHz
; 4Mhz 1クロック=0.00000025S = 0.25μS
; 4Mhz 1サイクル=1μS
;3. 40kHz 1秒/40000回=0.000025S=0.025mS=25μS
; 38kHz 1秒/38000回=0.000026S=0.026mS=26μS
;4. 40kHz 方形波=12.5μS ON + 12.5μS OFF
; 38kHz 方形波=13 μS ON + 13 μS OFF
;5. 600μs事にHiかLowを出力します。
; 600μS/25=24回
; 600μS/26=23回
;
;--
LIST P=12F629
INCLUDE P12F629.INC
CB = _CPD_OFF
CB &= _CP_OFF
CB &= _BODEN_ON
CB &= _MCLRE_OFF
CB &= _PWRTE_ON
CB &= _WDT_OFF
CB &= _INTRC_OSC_NOCLKOUT ;_HS_OSC
__CONFIG CB
;--
ORG H'0'
GOTO INIT
;--
INIT
BSF STATUS,RP0 ;1BANK
CALL 0x3FF
MOVWF OSCCAL
MOVLW B'00010000'
MOVWF TRISIO ;
BCF STATUS,RP0 ;
MOVLW B'00000111'
MOVWF CMCON ;
BCF STATUS,RP0
CLRF GPIO
;--
MAIN
BTFSS GPIO,4 ;1
GOTO MAIN ;2
BSF GPIO,2 ;3
NOP ;1
NOP ;2
NOP ;3
NOP ;4
NOP ;5
NOP ;6
NOP ;7
NOP ;8
NOP ;9
NOP ;10
NOP ;11
NOP ;12
NOP ;13
BCF GPIO,2 ;4
NOP ;5
NOP ;6
NOP ;7
NOP ;8
NOP ;9
NOP ;10
NOP ;11
NOP ;12
NOP ;13
GOTO MAIN ;14
END
登録:
投稿 (Atom)