パチスロのコインレスを自作してみた。

 
→ HOME
 
 
 
 
 
 

PICプログラムについて

 

PICプログラムのASMファイルとHEXファイルを

置いておきます

PICプログラムは『鉄拳』『ハロートナカイ』『タイムパーク(セレクタ)』『タイムパーク(ホッパ)』

全て共通で使っております。

 

 

 この圧縮ファイルを解凍してください。

PICプログラム

 

 

 

 

 

下がプログラムの中身です。コピペしても動作しないので上記のファイルを使用してください。

;*********************************************

;   サンプルプログラム PIC16F84

;   コイン不要器 作成 フォトモス未使用版

;*********************************************

        LIST        P=PIC16F84A    ;

        INCLUDE     "P16F84A.INC"  ;標準ヘッダ定義ファイル

        __CONFIG _HS_OSC & _PWRTE_ON & _WDT_OFF    ;のインクルード

;*********************************

;  変数レジスタの定義

;*********************************

CNT1        EQU         0CH         ;タイマ用変数

CNT2        EQU         0DH         ;タイマ用変数

CNT3        EQU         0EH         ;タイマ用変数

CNT4        EQU         0FH         ;タイマ用変数

CNT5        EQU         10H         ;タイマ用変数

;***********************

;  メインルーチン

;***********************

        ORG         0               ;Reset Start

MAIN        

             BSF         STATUS,RP0      ;バンク1へ切替

             CLRF        TRISB           ;ポートBを出力モードに設定。コイン投入パルスと払い出しパルス

             BSF         TRISA,0         ;ポートAの0ビットを1で入力モードに(コイン投入スイッチ用)

             BSF         TRISA,1         ;ポートAの1ビットを1で入力モードに(コイン払い出しトリガ用)

             BCF         STATUS,RP0      ;バンク0に戻す

HPSET   MOVLW       B'1111111'      ;Wレジスタに入力(初期状態を設定)

             MOVWF       PORTB           ;wレジスタからポートBへ移動全1出力ホッパ停止コイン投入なし

HOPPA   BTFSC       PORTA,1         ;ポートAの1ビットが0なら次をスキップ  (ホッパ動作判定)  

              GOTO        MAINLP          ;ポートAの1ビットが1ならメインループへ (ホッパ非動作ならメインへ)     

HPACT   MOVLW       B'11110111'     ;Wレジスタに3ビット目0を入力(ホッパ回転中を作る)

              MOVWF       PORTB           ;wレジスタからポートBへ移動ホッパ動作開始

              CALL        TIM100          ;10msec待つ 気持ち待つ

COINPAY MOVLW       B'11110011'     ;Wレジスタに2 3ビット目0を入力(コイン吐き出し中)

              MOVWF       PORTB           ;wレジスタからポートBへ移動払い出し開始

              CALL        TIM100          ;10msec秒待つ センサのタイミング取り

              MOVLW       B'11111011'     ;Wレジスタに 3ビット目1を入力(コイン吐き出し中)

              MOVWF       PORTB           ;wレジスタからポートBへ移動払い出し中その1

              CALL        TIM100          ;10msec秒待つ センサのタイミング取り13msec

              CALL        TIM5            ;1msec秒待つ  

              CALL        TIM5            ;1msec秒待つ

              CALL        TIM5            ;1msec秒待つ

              MOVLW       B'11110011'     ;Wレジスタに2 3ビット目0を入力(コイン吐き出し中)

             MOVWF       PORTB           ;wレジスタからポートBへ移動払い出し中

             CALL        TIM50           ;5msec秒待つセンサのタイミング取り7msec

             CALL        TIM5            ;1msec秒待つ

             CALL        TIM5            ;1msec秒待つ

            MOVLW       B'11110111'     ;Wレジスタに 2ビット目1を入力(1枚払い出し終わり)

            MOVWF       PORTB           ;wレジスタからポートBへ移動払い出し終わり

            CALL        TIM100          ;0.25秒待つホッパ停止まで待ち時間

            CALL        TIM100          ;0.25秒待つ エラー避けのおまじない(無くても良い)

            CALL        TIM100          ;0.25秒待つ エラー避けのおまじない(無くても良い)

            CALL        TIM100          ;0.25秒待つ エラー避けのおまじない(無くても良い)

            GOTO        HOPPA           ;ホッパに戻る (まだ払い出すかもしれないから戻る)      

MAINLP  MOVLW       B'11111111'     ;Wレジスタにオール1を入力初期状態作成(コイン投入前の初期状態)

             MOVWF       PORTB           ;wレジスタからポートBへ移動全ビット1出力(コイン投入前の初期状態)

             BTFSC       PORTA,0         ;ポートAの0ビットが0なら次をスキップ;コイン投入SW判定

             GOTO        HOPPA           ;ポートAの0ビットが1ならホッパーへ;投入無しなら最初に戻る

             BCF         PORTB,0         ;ポートBの0ビット目0を出力して;投入開始センサ1感知

             CALL        TIM100          ;10msec秒待つ

             MOVLW       B'11111100'     ;Wレジスタに1ビット目0を入力センサ2感知

             MOVWF       PORTB           ;wレジスタからポートBへ移動;センサ2感知

             CALL        TIM100          ;10msec秒待つ

             CALL        TIM100          ;10msec秒待つ

             MOVLW       B'11111101'     ;Wレジスタに0ビット目1で1ビット目は0を入力センサ1通過

             MOVWF       PORTB           ;wレジスタからポートBへ移動;センサ1通過

             CALL        TIM100          ;10msec秒待つ

             MOVLW       B'11111111'     ;Wレジスタに全て1センサ2通過;投入完了

              MOVWF       PORTB           ;wレジスタからポートBへ移動;センサ2通過;投入完了

              CALL        SECTIM          ;0.25秒待つ

              GOTO        HPSET           ;ホッパに戻る

;*******************************

;  約0.5秒のタイマサブルーチン

;*******************************

; 0.4msecタイマ

TIM10   MOVLW       0F9H    

            MOVWF       CNT1        

TIMLP1   NOP

             DECFSZ      CNT1,F     

             GOTO        TIMLP1     

             RETURN                  

; 10msec タイマ

TIM100  MOVLW       019H           

            MOVWF       CNT2        

TIMLP2  CALL        TIM10   

             DECFSZ      CNT2,F      

             GOTO        TIMLP2      

             RETURN                  

; 0.25sec タイマ

SECTIM  MOVLW       019H

             MOVWF       CNT3        

TIMLP3  CALL        TIM100

            DECFSZ      CNT3,F

            GOTO        TIMLP3

            RETURN

; 5msec タイマ

TIM50   MOVLW       00cH        

            MOVWF       CNT4       

TIMLP4  CALL        TIM10   

            DECFSZ      CNT4,F      

            GOTO        TIMLP4      

            RETURN                  ;

; 1msec タイマ

TIM5    MOVLW       004H            

            MOVWF       CNT5        

TIMLP5  CALL        TIM10   

            DECFSZ      CNT5,F      

            GOTO        TIMLP5      

            RETURN                 

        END

 

 

 


Yahoo!ジオシティーズ