ラベル プログラム の投稿を表示しています。 すべての投稿を表示
ラベル プログラム の投稿を表示しています。 すべての投稿を表示

2018/08/18

How to make automatic sensor soap dispenser automatic hand disinfection

How to make automatic sensor soap dispenser automatic hand disinfection 



program
 https://github.com/kankanla/MPLAB-IDE/blob/master/T12F629-SG92R.ASM 

Reference diagram




2018/03/01

少々復活

少々復活

ステッピングモーターとDCモーターの回路




12F675 PWM ファン 25KHz作成
https://github.com/kankanla/MPLAB-IDE/blob/master/T12F629-4.ASM




ステッピングモータ
STEPPING MOTORS
https://github.com/kankanla/MPLAB-IDE/blob/master/SPG20-1000-A.ASM








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

2011/11/20

大小比較 SUBWF SUBLW

大小比較 1(W>F)
      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
            W =F     C=1
            W >F     C=0

大小比較 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

2011/11/13

12F675 A/D変換

12F629のお兄さん12F675はA/D変換が出来ます。

電圧の変化の範囲が多き場合、ADCON0,;ADFM=0:左詰め、
ADRESHのレジスタを利用します、電圧の変化の範囲が小さい
場合、ADCON0,;ADFM=1:右詰め、ADRESLのレジスタを利用します。


そのために練習
プログラム


;PIC12F675 A/D変換,EEPROM書き込み
;VER 1.0

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 ;タイマカウント
ADH ;ADCのADRESHのデータ
ADL ;ADCのADRESLのデータ
EEA ;EEPROM書き込み時のアドレス
EED ;EEPROM書き込み時のデータ
ENDC

;--
ORG H'0'
GOTO INIT
;ORG H'04'
;GOTO H04

;--
INIT ;デバイス初期化
BCF STATUS,RP0 ;0バンク選択
BSF CMCON,CM0 ;コンパレータOFF
BSF CMCON,CM1 ;コンパレータOFF
BSF CMCON,CM2 ;コンパレータOFF
BCF INTCON,PEIE ;周辺割り込みOFF

BSF STATUS,RP0 ;1バンク選択
;CALL 0x3FF ;
;MOVWF OSCCAL
MOVLW B'00000100' ;RP2入力用設定
MOVWF TRISIO ;RP2入力用設定
BSF ANSEL,ADCS0 ;ADCA/D変換のクロック選択Fosc/8
BCF ANSEL,ADCS1 ;ADCA/D変換のクロック選択Fosc/8
BCF ANSEL,ADCS2 ;ADCA/D変換のクロック選択Fosc/8
BSF ANSEL,ANS2 ;アナログ入力設定
BCF STATUS,RP0 ;0バンク戻る

;-----------------------------------------------------------
MAIN ;その1、ADC変換したしてデータをEEPROに書き込み


CALL ADCMAIN
MOVLW H'0' ;書き込みアドレス
MOVWF EEA ;書き込みアドレス
MOVF ADH,W ;書き込みデータ
MOVWF EED ;書き込みデータ
CALL EEPROM ;CALL EEPROM書き込み

MOVLW H'1'
MOVWF EEA
MOVF ADL,W
MOVWF EED
CALL EEPROM

;その2、ADC変換したデータを利用してLED点滅
BCF GPIO,GPIO4
MOVF ADH,W ;AEDデータを読み
MOVWF CONT1 ;カウント値

LEDOFF
NOP
CALL S1TIME
CALL S1TIME
CALL S1TIME
DECFSZ CONT1,F
GOTO LEDOFF

BSF GPIO,GPIO4
MOVF ADH,W
MOVWF CONT1

LEDON
NOP
CALL S1TIME
CALL S1TIME
CALL S1TIME
DECFSZ CONT1,F
GOTO LEDON

GOTO MAIN

;------------------------------------------------------------

;---
ADCMAIN
BCF ADCON0,ADFM ;ADFM=0:左詰め
BCF ADCON0,VCFG ;基準電圧VDD電源電圧
BSF ADCON0,CHS1 ;ADC対象ANポート,AN2
BCF ADCON0,CHS0 ;ADC対象ANポート,AN2
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

MOVF ADRESH,W ;ADC変換後、ADRESHをWレジスタに
MOVWF ADH ;ADC変換後、ADHファイルレジスタに保存
MOVF ADH,F
BTFSC STATUS,Z ;変換したデータが0の場合、ADCMAINへ
GOTO ADCMAIN ;変換したデータが0の場合、ADCMAINへ

BSF STATUS,RP0 ;1バンク選択
MOVF ADRESL,W ;ADC変換後、ADRESLをWレジスタに
BCF STATUS,RP0 ;0バング戻る
MOVWF ADL ;ADC変換後、ADLファイルレジスタに保存
MOVF ADL,F
BTFSC STATUS,Z ;変換したデータが0の場合、ADCMAINへ
GOTO ADCMAIN ;変換したデータが0の場合、ADCMAINへ

RETURN

ADCLK32
MOVLW D'7' ;1 7x4+4=32μs
MOVWF SCONT1 ;
ADCLK32LOOP
NOP ;1
DECFSZ SCONT1,F ;1
GOTO ADCLK32LOOP ;2
RETURN ;2

;---
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
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/09/18

PIC でタイマーの作成

スタックにより、タイマーの作成。
サブルーチンのネストは8回までに制限されています。

まず、時間に必要なサイクル数を計算。













;//////////////////////////////////////////
;タイマー
;4Mhz 1クロック=0.00000025S = 0.25μS
;4Mhz 1サイクル=1μS
; 1S=1000mS
; 1S=1000000μS
;1秒  =1000000サイクル
;10秒 =10000000サイクル
;30秒 =30000000サイクル
;1分  =60000000サイクル
;30分 =180000000サイクル

;//////////////////////////////////////////
S6TIME
MOVLW D'1' ;1X4+4+40=48
MOVWF SCONT6
S6LOP
CALL S5TIME
DECFSZ SCONT6
GOTO S6LOP
RETURN
S5TIME
MOVLW D'1' ;1X4+4+32=40
MOVWF SCONT5
S5LOP
CALL S4TIME
DECFSZ SCONT5
GOTO S5LOP
RETURN
S4TIME
MOVLW D'1' ;1X4+4+24=32
MOVWF SCONT4
S4LOP
CALL S3TIME
DECFSZ SCONT4
GOTO S4LOP
RETURN
S3TIME
MOVLW D'1' ;1X4+4+16=24
MOVWF SCONT3
S3LOP
CALL S2TIME
DECFSZ SCONT3
GOTO S3LOP
RETURN

S2TIME
MOVLW D'1' ;1X4+4+8=16
MOVWF SCONT2
S2LOP
CALL S1TIME
DECFSZ SCONT2
GOTO S2LOP
RETURN

S1TIME ;1000μS、1mS
MOVLW D'1' ;1 1X4+4=8
MOVWF SCONT1 ;1
S1LOP
NOP ;1
DECFSZ SCONT1 ;1
GOTO S1LOP ;2
RETURN ;2



;---------------------
;4MHz の場合
;1秒  =1000000サイクル
;10秒 =10000000サイクル
;30秒 =30000000サイクル
;1分  =60000000サイクル
;30分 =180000000サイクル

約1分間の例
60.000961サイクル、計算より961サイクルが多い。






2011/08/16

4Mhz タイマー


;//////////////////////////////////////////
;タイマー
;4Mhz 1クロック=0.00000025S = 0.25μS
;4Mhz 1サイクル=1μS
; 1S=1000mS
; 1S=1000000μS
;//////////////////////////////////////////
TIMER1 ;100μS,100コマンド、24
MOVLW D'24' ;1 24x4+4=100
MOVWF TCON1 ;1
T1LOP
NOP ;1
DECFSZ TCON1 ;1
GOTO T1LOP ;2
RETURN ;2

;--------------------
TIMER2 ;200μS,200コマンド、49
MOVLW D'49' ;1  49x4+4=200
MOVWF TCON1 ;1
T2LOP
NOP ;1
DECFSZ TCON1 ;1
GOTO T2LOP ;2
RETURN ;2


;--------------------
TIMER5 ;500μS,500コマンド、124
MOVLW D'124' ;1
MOVWF TCON1 ;1
T5LOP
NOP
DECFSZ TCON1 ;1
GOTO T5LOP ;2
RETURN ;2


;--------------------
TIMER10 ;1000μS,1000コマンド、249
MOVLW D'249' ;1 249x4+4=1000
MOVWF TCON1 ;1
T10LOP
NOP ;1
DECFSZ TCON1 ;1
GOTO T10LOP ;2
RETURN ;2




2011/02/26

12F629 EEPROM 書き方

BSF      STATUS,RP0    ;バンク1に切り替え
MOVLW    H'0'          ;書き込みアドレス
MOVWF    EEADR
MOVF     D1,W         ;書き込みデータ
MOVWF    EEDATA
BSF      EECON1,WREN   ;書き込み許可
MOVLW    0X55         ;書き込み手順
MOVWF    EECON2
MOVLW    0XAA
MOVWF    EECON2
BSF      EECON1,WR    ;書き込み
  CALL      RWC         ;書き込み完了のチェック


RWC
BTFSC    EECON1,WR
GOTO     RWC
BCF      STATUS,RP0   ;書き込み完了後、バイク0に戻る
RETURN               ;戻る

2011/01/08

PICkit 3













PICkit 3 Stand Alone Programmer App V1.0 Windows 


技术文档 By Product

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023073

http://www.microchip.com/
ftp://ftp.microchip.com/

中国語
HI-TECH C for PIC10/12/16 User’s Guidehttp://ww1.microchip.com/downloads/cn/DeviceDoc/cn555567.pdf
http://ww1.microchip.com/downloads/cn/DeviceDoc/51814A_CN.pdf

MPLAB IDE User's Guide
http://ww1.microchip.com/downloads/cn/DeviceDoc/51519a_cn.pdf

33014j.pdf
http://ww1.microchip.com/downloads/en/devicedoc/33014j.pdf
http://ww1.microchip.com/downloads/en/devicedoc/33014j_CN.pdf

PICmicro中档单片机系列参考手册
http://ww1.microchip.com/downloads/en/DeviceDoc/33023A_CN.pdf

PIC12F629/675 Data Sheet
http://ww1.microchip.com/downloads/cn/DeviceDoc/41190C_cn.pdf

PIC16F84A Datasheet
http://ww1.microchip.com/downloads/cn/DeviceDoc/cn_35007b.pdf

PIC12F/LF1822/PIC16F/LF1823 8/14-Pin Flash MCUs w/ nanoWatt XLP Technology
http://ww1.microchip.com/downloads/cn/DeviceDoc/41413B_CN.pdf

PIC16F627A/628A/648A FLASH-Based 8-Bit CMOS Data Sheet
http://ww1.microchip.com/downloads/cn/DeviceDoc/40044d_cn.pdf


日本語
http://www.microchip.co.jp/
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010113#1

__CONFIG


PICkit 3 の低電圧動作に関する改修
http://ww1.microchip.com/downloads/jp/DeviceDoc/J_ETN32_PICkit_3_Operation_at_Low_Voltage.pdf

2010/12/28

設定を保存する(EEPROMの使い方)

http://cai.cs.shinshu-u.ac.jp/susi/Lecture/microcomp/d_07-08.html#kadai8
プログラムと一緒に書き込む方法
EEPROM の有効なアドレスの番地は 2100h - 213Fhになる。

list p=PIC16F84A
 #include <p16f84a.inc>

 __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

; EEPROM Data
      org 0x2100
      de "Timer Program"
      de 0x00, D'34', 'Z'

 end