display with use of pic microprocessor - 高知工科大学...

91
PIC を用いた当り抽選回路・表示回路の設計と製作 Design and Fabrication of the electronic circuits for Drawing and Display with use of PIC microprocessor 指 導 教 員 矢野 政顕 教授 報 告 者 学籍番号: 1105311 氏名: 野本 善介 平成 20 2 18 高知工科大学 電子・光システム工学コース

Upload: trinhnhi

Post on 05-Jul-2019

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

特 別 研 究 報 告

題 目

PIC を用いた当り抽選回路・表示回路の設計と製作

Design and Fabrication of the electronic circuits for Drawing and Display with use of PIC microprocessor

指 導 教 員

矢野 政顕 教授

報 告 者 学籍番号: 1105311 氏名: 野本 善介

平成 20 年 2 月 18 日

高知工科大学 電子・光システム工学コース

Page 2: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

目次

第 1 章 はじめに ............................................................................................. 1 第 2 章 PICとLCDについて............................................................................ 2

2.1 PICについて ............................................................................................ 2 2.2 LCDについて.......................................................................................... 3

第 3 章 抽選回路・表示回路の仕様................................................................. 5 3.1 基本的な制御の流れ ............................................................................... 5 3.2 仕様 ........................................................................................................ 8

3.2.1 当り抽選の当選確率 ........................................................................ 8 3.2.3 予告演出 ........................................................................................... 9 3.2.4 表示される図柄 ............................................................................. 17

第 4 章 抽選回路・表示回路の設計と製作 .................................................... 19 4.1 外観...................................................................................................... 19 4.2 回路図 .................................................................................................. 20 4.3 フローチャート.................................................................................... 22

4.3.1 当り抽選までのフローチャート ..................................................... 22 4.3.2 予告演出抽選のフローチャート ..................................................... 24 4.3.3 図柄表示のフローチャート............................................................. 26

第 5 章 評価 .................................................................................................. 28 5.1 動作検証 .............................................................................................. 28 5.2 抽選結果 .............................................................................................. 28

第 6 章 まとめ ................................................................................................ 31 謝辞 .................................................................................................................. 32 参考文献 ........................................................................................................... 33 付録....................................................................................................................34

Page 3: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

1

第1章 はじめに 携帯電話・TV・デジタルカメラなどの電化製品や自動車,自動販売機、パチ

ンコ台などには組み込みシステムが搭載されている。組み込みシステムとは特

定の機能を実現するためのコンピュータシステムのことである。この組み込み

システムには,PIC や H8などのマイコン(マイクロコンピュータまたはマイ

クロコントローラ)が使用されている。 近年,全国で稼動しているパチンコはアミューズメント性が高くなってきて

いる。その理由として,遊戯の仕方や遊戯中の演出,サウンドなどの面におい

て進化していることが考えられる。昔のパチンコ台は玉を弾くスプリングの力

を加減し手動で打ち出していたが,近年のパチンコ台は自動射出機構を備えて

おりハンドル部分に手を添えるだけで球を打ち出される。また,筐体に液晶デ

ィスプレイが設置され,液晶内に数字(以後,図柄と呼ぶ)や大当たりを示唆

する予告演出などの映像が映し出されるようになっている。さらに,大当りの

抽選や演出の選択,電動役物などはマイコンによって制御されており,パチン

コ台の進化とともにその制御は複雑化してきている。 本研究は,パチンコ台の当り抽選と演出の選択の制御に着目し,PIC を用い

て当り抽選回路・表示回路を設計・製作し,組み込みシステムに関する知識と

その設計手法を学ぶことを目的とする。 本論文の第 2 章では PIC と LCD について説明する。第 3 章では構成につい

て説明する。第 4 章では抽選回路について説明する。第 5 章では表示回路につ

いて説明する。第 6 章では製作した回路の評価について説明する。第 7 章で全

体をまとめる。

Page 4: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

2

第2章 PIC と LCD について

2.1 PIC について PIC は,米国マイクロチップ・テクノロジー社が開発したワンチップマイク

ロコントローラであり,小規模な制御システム向けに徹底的に 適化されたア

ーキテクチャを備えている。CPU やメモリ,入出力ポートなどが 1 チップに納

められており,開発用のソフトや ROM ライタを安価に入手できる。 PIC は命令のビット長により大きく次の 3 種類に分けられる。 1. 12 ビット命令,33 命令数の 初に開発されたマイクロコントローラで,

入出力ピンとタイマ機能だけを備えた単機能なシリーズ,ベースライン

シリーズとも呼ばれる。PIC12C509 などの PIC12 シリーズが挙げられ

る。 2. 14 ビット命令,35 命令数のマイクロコントローラで,A/D 変換機能やシ

リアルポートなど多くの機能を内蔵するものがあり,電子工作などで一

番使われるシリーズ。ミットレンジシリーズとも呼ばれる。PIC16F84Aなどの PIC16 シリーズが挙げられる。

3. 16 ビット命令,76 命令数のマイクロコントローラで,高機能のシリーズ。

ハイエンドシリーズとも呼ばれる。PIC18 シリーズが挙げられる。 本研究では,LED・7セグメント LED 点灯制御,LCD 制御など多くの入出

力ピンを使用するため,入出力ポートの多い「PIC16F877A」を使用する。PICを制御するためのプログラムはパソコンで作成する。開発用ソフトウェアには

マイクロチップ・テクノロジー社が提供するフリーソフトの「MPLAB」で,使

用言語はアセンブリ言語である。作成した制御プログラムを PIC に書き込む

PIC ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP」を使用す

る。

Page 5: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

3

2.2 LCD について

LCD モジュールはアルファベットやカタカナのキャラクタを表示する用途と

して多く使われる。LCD モジュールには,2 行 16 文字表示のものや 4 行 20 文

字のもの,バックライトの有無などで多くの種類がある。 本研究では、SUNLIKE 社製の LCD モジュール「SC1602BS-B」(2 行 16 文

字表示,バックライト無)を使用する。 PIC や FPGA などのマイコンと LCD モジュールの間では,8 ビットまたは 4ビットのデータ・バスを接続し,LCD の表示の制御を行うコマンドや表示データ

の書き込みなどを行う。表示するデータは DD-RAM(Display Data RAM)に

書き込まれ,CG-RAM(Character Generator ROM)によって具体的な LCD上の文字パターンのドットに展開され,表示される。 LCD 表示の制御は,表示のクリア・カーソルの移動・表示領域のシフト・デ

ータの書き込み・DD-RAM 上の読み書きするデータ・アドレスのセットなどの 8種類のコマンドと,データの読み書き Busy チェックなど全部で 11 種類の操作

によって行っている。 PIC と LCD モジュール間では,データおよびコマンドの入出力のための 8 本

(DB0~DB7)の信号線(4 ビット・データバスの場合は 4 本)と,その制御を

行う 3 本(RS,R/W,E)の信号線が必要である。各制御信号について以下に

説明する。 ① RS (Register Select) 信号

データの受け渡しの制御を行う。RS 信号が“H”(1)の状態では LCDに表示するデータの受け渡しとなり,“L”(0)の状態では LCD ドライバ

の動作を制御するコマンドとなる。 ② R/W (Read / Write) 信号

データやコマンドの読み書きの制御を行う。R/W 信号が“H”(1)の状

態では Read モードとなり,LCD ドライバのコマンド処理完了の確認の

Busy フラグ(BF)チェックなどを行う。“L”(0)の状態では Write モード

となり,PIC 側から LCD ドライバへの,表示のクリア・カーソルの移動

などの制御のコマンドや LCD への表示データの書き込みが行える。

Page 6: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

4

③ E (Enable) 信号

データ,コマンドの読み書きを行うタイミングを決める 230ns 以上の

幅をもった信号。

Page 7: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

5

第3章 抽選回路・表示回路の仕様

3.1 基本的な制御の流れ

図 3-1 に「デジパチ」と呼ばれるタイプのパチンコ台の基本的な制御の流れ

を示す。このタイプは,筐体中央部に液晶ディスプレイが設置されており,液

晶内に 3 つの図柄が横並び,もしくは縦並びに映し出される。ここでは,図柄

が横並びになっている場合について述べる。なお,実際のパチンコ台について

は以後「実機」と呼ぶ。 まず,パチンコ玉が打ち出され,液晶下部に設置されたスタートチャッカー

に入賞したとき,液晶内の図柄が変動を開始する。この時点で当り抽選が行わ

れており、その抽選結果に基づき「予告」と呼ばれる演出が発生する。この予

告演出は大当りの期待度を示唆するものであり、「当りが確定するもの・確定で

はないが高確率で当りを期待できるもの・ほぼ当りを期待できないもの」など

機種により様々な予告演出が用意されている。 予告演出が終了すると図柄の停止がはじまる。一般的に図柄が横並びの場合

には,左→右の順番に図柄が停止する。停止後,リーチ(左右の図柄が同じ状

態)であるかどうか判定され,リーチでなければ中央の図柄が停止し「ハズレ」

となり終了する。リーチであれば中央の図柄が停止せずに,リーチアクション

(ノーマルリーチ・スーパーリーチなど)と呼ばれる大当りを期待させる演出

が発生する。リーチアクションを経て中央の図柄が停止し,左右の図柄と違う

図柄であれば「ハズレ」となって終了し,左右の図柄と同じ図柄であれば「ア

タリ」となり大当り演出へとつづく。大当り演出中には大量の出玉を得ること

ができる。大当り演出の終了とともに一連の流れが終了となる。いずれの場合

においても終了すると,再度スタートチャッカーへの入賞の有無の判定に戻り

再びこの流れが繰り返される。

Page 8: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

6

図 3-1 実機の基本的な制御の流れ

スタートチャッカー

入賞

図柄変動

予告演出

左→右の順番で

図柄停止

リーチで

あるか?

中央の図柄停止 (ハズレ)

リーチアクション

yes

no

当りであ

るか?

中央の図柄停止

(アタリ)

no

yes

終了

大当り演出

Page 9: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

7

以上のことを参考にし,実機を簡易化した当り抽選回路の設計と演出の選択

の制御を行っていく。実機と本研究の設計機との具体的な相違点を表 3-1 に示

す。

表 3-1 実機との相違点

実機 本研究

パチンコ玉の使用 使用する 使用しない

当り抽選の契機 スタートチャッカー

入賞時 PUSH スイッチ

ON 時

図柄表示部 液晶パネル LCD

モジュール

本研究では,まずパチンコ玉を使用しないことで簡易化することにした。し

たがって,当り抽選の契機をパチンコ玉のスタートチャッカー入賞時から,

PUSH スイッチが ON になったときに行うように変更した。 さらに、図柄表示部に関しても実機では液晶パネルを使用し予告演出や図柄

などの映像を映し出しているが,本研究では LCD モジュールを使用し 低限の

図柄と文字を表示するように変更した。 予告演出は LCD モジュールに表示する文字や LED,7 セグメント表示を使用

して表現することに変更した。

Page 10: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

8

3.2 仕様

本研究では,当り抽選・予告演出・表示する図柄に関して,256 進カウンタお

よび 16 進カウンタを使用する。

3.2.1 当り抽選の当選確率 当り抽選回路の当選確率は,現在,多くのパチンコ店で稼動している「遊(ゆ

う)パチ」と呼ばれる実機の当選確率を参考にした。「遊パチ」とは「デジパチ」

のバージョンのひとつであり,見た目や各種演出に関してはほとんど変化なく

当選確率だけが異なる。一般的な実機の当選確率は「300 分の 1」から「400 分

の 1」の間に設定されているが,「遊パチ」の当選確率は「80 分の 1」から「100分の 1」に設定されている。

PIC では,データは 8 ビットであらわされる。そこで,256 進カウンタを使

用し当り抽選を行うことにした。 “00000000”~”11111111”の 256 パターンのうち,特定の 3 パターン(本研究

では,”00000000”・”01101111”・”11011110”の 3 パターンに設定)が当りにな

るようにすると,当選確率はおよそ「85.3 分の 1」になる。この確率は「遊パ

チ」の当選確率に近いといえる。 本来,当りは周期的に抽選されてはならないが,この抽選カウンタは

“00000000”~”11111111”まで+1 ずつカウントアップしていくため,周期的に当

りが抽選される。しかし,PIC の命令実行 1 サイクルは FOSC / 4で実行され,

本研究で製作した回路には PIC のシステムクロック FOSC に 10MHz のセラミ

ック発信子を使用しているので,命令 1 サイクルあたり 0.4 us で実行される。

作成したプログラムでは,カウントアップまでの 短サイクル数は 9 サイクル

なので,0.4us×9=3.6us ごとにカウントアップされる。

Page 11: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

9

3.2.3 予告演出 予告演出に LED と 7 セグ LED,LCD モジュールを使用する。LED・7 セグ

メントLEDによる予告演出は図柄の変動開始から停止が始まるまでの間に発生

するものとする。LCD モジュールによる予告演出は図柄が停止し,リーチが発

生している場合に発生するものとする。予告演出は 256 進カウンタを使用して

発生する演出を選択する。予告演出抽選カウンタは PIC の命令「INCF」を実行

して+1ずつカウントアップを行う。すべての処理が終わったときにカウンタ

の値をクリアする。

3.2.3.1 LED による予告

LED の予告演出について説明する。この予告演出は,LED がどの点灯パター

ンを実行したかによって,期待度が変化する演出である。基本となる LED の点

灯パターンは以下の 7 種類である。 1. パターン A

左から右に点灯がシフトしていくパターン。LED 点灯数は 1 個。

図 3-3 点灯パターン A

2. パターン B 左から右に点灯がシフトしていくパターン。LED 点灯数は 2 個。

Page 12: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

10

図 3-4 点灯パターン B 3. パターン C 左から右に点灯がシフトしていくパターン。LED 点灯数は 3 個。

図 3-5 点灯パターン C 4. パターン D 右から左に点灯がシフトしていくパターン。LED 点灯数は 1 個。

図 3-6 点灯パターン D 5. パターン E 右から左に点灯がシフトしていくパターン。LED 点灯数は 2 個。

図 3-7 点灯パターン E 6. パターン F 右から左に点灯がシフトしていくパターン。LED 点灯数は 3 個。

Page 13: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

11

図 3-8 点灯パターン F

7. パターン G LED がすべて点灯するパターン。

図 3-9 点灯パターン G これら,7 種類の点灯パターンは「緑・黄・赤」の 3 色のどの色で発生するか

によって大当りの期待度が変化するものとする。 特別な点灯パターンとして,以下の 2 種類をあげる。 8. パターン H 緑のLEDがすべて点灯した後,黄のLEDがすべて点灯するパターン。

図 3-10 点灯パターン H 9. パターン I パターン H 後、赤の LED がすべて点灯するパターン。

Page 14: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

12

図 3-11 点灯パターン I 10. パターン J 緑・黄・赤のすべての LED が同時に点灯するパターン。

図 3-12 点灯パターン J

点灯パターンと大当りの期待度の関係を表 3-2 に示す。 7 セグ LED には演出の期待度の段階を表示させる。4 段階目以上で必ずリー

チが発生するようになり、段階 F は必ず当るようになっている。

Page 15: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

13

表 3-2 点灯パターンと期待度の関係表

段階 緑 黄 赤

1 パターン A

2 パターン

B パターン

D パターン A

3 パターン

C パターン

E パターン

B パターン

D パターン A

4 パターン F パターン

C パターン

E パターン

B パターン

D

5 パターン G パターン F パターン

C パターン

E

6 パターン G パターン F

7 パターン G

8 パターン H

9 パターン I

期待度

F パターン J

Page 16: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

14

3.2.3.2 LCD モジュールによる予告 LCD モジュールによる予告演出について説明する。この予告演出はリーチ発

生後,LCD モジュール上段部にどういった文字が表示されたかによって,期待

度が変化する演出である。表示される文字は以下の 4 種類である。 1. 「REACH」 2. 「CHANCE」 3. 「VICTORY」 4. 「CONGRATULATIONS」 LCD モジュールに大当りの期待度は,「REACH」→「CHANCE」→

「VICTORY」→「CONGRATULATIONS」の順番に高くなるものとする。 LCD モジュールに表示された状態を図 3-13 に示す。

Page 17: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

15

図 3-13 LCD モジュールに表示した状態

LCD モジュールには 8 個まで自作のキャラクタを登録することができる。本

研究で自作したキャラクタを図 3-14 に示す。これは弓矢をイメージしたもので,

リーチが発生したときに「弓で矢を放ち中央図柄を落とす」という簡単なアニ

メーションに使用する。

図 3-14 自作したキャラクタ

予告以外に電源投入時や図柄変動中に表示される文字を図 3-15 に示す。

Page 18: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

16

図 3-15 予告以外の表示文字

Page 19: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

17

3.2.4 表示される図柄

表示する図柄は「0~F」の 16 通りとする。どの図柄が表示されるかは,図柄

抽選カウンタ(16 進カウンタ)で選択された値を使用する。図柄抽選カウンタ

は PIC の命令「INCF」を実行して+1ずつカウントアップを行う。図柄抽選カ

ウンタは 8 ビットであるから,カウントアップごとに 4 ビット目を‘0’にクリ

アしてカウンタの値が“00000000”~“00001111”の範囲を超えないようにし

ている。左図柄用・右図柄用・中央図柄用にレジスタを構え,リーチが発生す

る場合には,表示する図柄データとして左右の図柄レジスタに抽選で選択され

た値を保存する。リーチが発生しない場合には,左図柄用レジスタには選択さ

れた値をそのまま保存して,右図柄用レジスタには左図柄用と同じにならない

ように値を保存する必要がある。そこで,以下の処理を行い同じ値にならない

ようにしている。

① 予告演出選択カウンタの値と 8 ビットのデータ“00001111”との論理積を

とる ② 図柄抽選カウンタの値に演算結果を加算する ③ 加算結果を右図柄用レジスタに保存する ④ 右図柄用レジスタの 4 ビット目を‘0’にクリアする ①の処理によって左図柄に対する右図柄のずれ幅を決定するデータを生成す

る。生成されるデータには,ずれが生じない“00000000”というデータが存在

する。これが生成された場合はリーチが発生したものとして扱う。②,③の処

理によってずれの生じたデータを生成して,右図柄用レジスタに保存する。④

の処理によって右図柄用レジスタの値が“00000000”~“00001111”の範囲に

収まるようにしている。 中央図柄用レジスタに保存される図柄データは,リーチが発生しない場合に

は以下の処理を行い決定する。 ① 予告演出選択カウンタの値と 8 ビットのデータ“11110000”との論理積を

とる ② 加算結果の上位 4 ビットと下位 4 ビットを入れ替える ③ 入れ替えた結果を図柄抽選カウンタの値に加算する ④ 加算結果を中央図柄用レジスタに保存して、4 ビット目を‘0’にクリアす

Page 20: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

18

①,②の処理を行い左図柄に対する中央図柄のずれ幅を決定する。③の処理

を行なって,ずれの生じたデータを生成する。④の処理を行ない中央図柄用レ

ジスタの値が“00000000”~“00001111”の範囲に収まるようにしている。リ

ーチが発生していないので,中央図柄にはどの図柄が表示されても良いが何も

処理も行わず図柄抽選カウンタの値を保存すると,常に左図柄と同じ図柄が表

示される。それを避けるために上記の処理を行なった。 リーチが発生した場合には,まず左右の図柄と同じ図柄を中央図柄用レジス

タに保存する。そして,当り抽選に当選しているのかいないのかを判断して,

終的に停止する図柄を決定する。当り抽選後,当選していれば図柄カウンタ

の MSB を‘1’にセットし,当選していなければ‘0’にクリアしておく。当選

時には当り図柄まで表示し,当選していなければ当り図柄の一つ前の図柄で表

示が停止するように,3.2.3.2節で述べた自作キャラクタによるアニメーション

を実行する。

Page 21: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

19

第4章 抽選回路・表示回路の設計と製作

4.1 外観 図 4-1 に製作した抽選回路・表示回路の外観である。

図 4-1 抽選回路・表示回路 外観

Page 22: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

20

4.2 回路図 製作した抽選回路・表示回路の回路図を図 4-2 に示す。LED 点灯の制御には

PIC16F877A のポート B を使用しており,‘H’(1)のとき消灯して,‘L’(0)のとき点灯する。各 LED の VDD 側に Tr(2SC1815)を接続して,任意の色の

LED を点灯できるようにしている。どの Tr をドライブにするかはポート A の

RA0,RA1,RA2 の 3 ビットを使用して制御している。ポート C の RC0~RC6は 7 セグメント LED の点灯制御に使用して,RC7 には変動開始用のスイッチ

を接続している。LCD モジュールの制御にはポート E を使用して,データおよ

びコマンドの 8 ビットにはポート D を使用した。

Page 23: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

21

図 4-2 抽選回路・表示回路 回路図

Page 24: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

22

4.3 フローチャート

本研究で製作した抽選回路の抽選の流れについて説明する。

4.3.1 当り抽選までのフローチャート

図 4-3 当り抽選までのフローチャート

電源投入

Pushed SW?

dcounter 各カウンタの pcounter カウント値を zcounter +1

no

yes

当り?

PIC 初期設定

LCD 初期化

dcounter : 当り抽選カウンタ pcounter : 演出抽選カウンタ zcounter : 図柄抽選カウンタ

メインルーチン 開始

yes

no

パターン 1 と比較

固有の当り演出へ

当り? yes

no

パターン 2 と比較

予告演出(当選)抽選へ

当り? yes

no

パターン 3 と比較

予告演出(当選)抽選へ

予告演出(非当選) 抽選へ

Page 25: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

23

当り抽選までのフローチャートを図 4-3 に示す。 まず,電源投入後,変数などを記憶しておくメモリエリアを設定しておく。

そして,I / O ポートの設定,タイマの設定,変数の初期値の設定などの PIC の

初期化を行う。また,LCD モジュールの初期化もこのとき行う。初期化が終了

するとメインの処理へと移る。 はじめに,メインの処理では抽選開始のスイッチが押されたかどうかの判定

を行う。押されていなければ,当り抽選カウンタ(dcounter)・演出抽選カウンタ

(pcounter)・図柄抽選カウンタ(zcounter)の値をインクリメントして,再びスイ

ッチの ON / OFF の判定を行う。カウントアップは 速で 3.6us に一回行われ

る。 スイッチが押されていれば,当りの判定を行う処理へ移る。当りの判定は現

在の当り抽選カウンタの値(8 ビット)と,当りとなる 3 つのパターン(8 ビット)との比較を行い判定する。3 つのパターン(”00000000”・”01101111”・”11011110”)のうち“00000000”は,他の 2 つとは異なった固有の当り演出にしている。 比較の方法は,まず現在の当り抽選カウンタの値から,当りとなるパターン

を減算したときの PIC の STATUS レジスタの Z フラグの状態で判定する。Z フ

ラグは演算結果がゼロなら値が‘1’になり,演算結果がゼロでなければ値が‘0’になる。つまり、Z フラグが‘0’だった場合は,当り抽選カウンタと当りとな

るパターンが一致しておらず,Z フラグが‘1’だった場合は,当り抽選カウン

タの値と当りとなるパターンが一致していることになる。 この比較を 3 つのパターンそれぞれで行い,アタリ・ハズレの判定をする。

Page 26: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

24

4.3.2 予告演出抽選のフローチャート

次に,予告演出抽選のフローチャートを図 4-4 に示す。予告演出抽選には当選

と非当選の 2 種類あるが,処理の手順としては同じである。当選時には下記の

フローチャートの前に zcounter の MSB に‘1’をセットしておく。

図 4-4 予告抽選のフローチャート

・・・

プログラムの 開始アドレスを

PCLATH に ジャンプ先アドレス

をセット

PCL + pcounterへジャンプ

pcounter=0 goto XXX

pcounter=n-1 goto XXX

pcounter= n goto XXX

各演出サブルーチン

図柄表示

当り抽選

演出実行

Page 27: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

25

予告抽選では,プログラムカウンタ(PC)の値を直接操作してプログラムを分

岐させている。PC は 13 ビットの幅をもっており,上位 5 ビットを PCH,下位

8 ビットを PCL と呼ぶ。PC に pcounter の値を加算することでジャンプ先を決

定する。しかし,PCH は直接操作することができないので PCLATH レジスタ

を使用して PC を操作する。PCLATH レジスタにジャンプ先アドレス上位 5 ビ

ットをセットした後,PCL を書き換えることで PC を操作することができる。

ここで気をつけないといけないことは,add 命令で PCL に加算を行った場合,

PCH への繰り上がりは考慮されないので,加算結果が 0xFF を超えてしまうと

正しくジャンプされないという問題が発生する。つまり,加算結果は 0x00~0xFF の範囲に収まっていないといけないのだが,pcounter の値は 0x00~0xFFまであるためこの問題を無視できない。そこで,pcounter の値を 0x00~0x7F,0x80~0xFF の 2 つの範囲に分けることでこの問題を回避する。 以上の処理を下記に示すプログラムにより行う。 pctchk0 org 0x300 ① btfsc pcounter, 7 ② goto pctchk1 movlw 0x03 movwf PCLATH ③ movfw pcounter addwf PCL, f ④ まず,①の部分でプログラムの開始アドレスを指定している。したがって,

次に実行される命令 btfsc pcounter, 7 のPCの値は 0x300となっている。 ②の部分では pcounter の 7 ビットが‘0’であれば次の命令をスキップする

命令を行っている。これにより,pcounter の値が 0x80 以上であれば goto pctchk1 が実行され,0x80~0xFF の範囲で実行されるジャンプテーブルへジ

ャンプする。 ③の部分ではPCLATHレジスタにジャンプ先アドレス上位5ビットをセット

している。そして,④の部分では PCL + pcounter が実行され,あらかじめ用

意しているテーブルへジャンプする。 ジャンプした先ではさらにジャンプ命令 goto があり,予告演出として実行す

るプログラムが書かれたサブルーチンへとジャンプする。演出が実行された後,

Page 28: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

26

LCD モジュールに図柄を表示する処理へ移る。

4.3.3 図柄表示のフローチャート

図 4-5 に図柄表示のフローチャートを示す。

図 4-5 図柄表示のフローチャート

演出実行

zcounter の値を

各図柄レジスタに保存

リーチ?

yes no

左図柄表示

右図柄表示

リーチ時の 予告文字選択

zcounter の値を 左図柄レジスタに

保存

ずれの生じた値を 右図柄レジスタに

保存

左図柄レジスタと

右図柄レジスタを

比較

Z フラグ =1?

yes

no

左→右→中央 の順に図柄表示

END

REACH 表示

CHANCE 表示

VICTORY表示

リーチアクション

中央図柄停

当り?

FEAVER

yes no

Page 29: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

27

各図柄レジスタに保存される値については 3.2.4 節にて説明しているのでこ

こでの説明は省略する。 リーチ時の予告文字については,当り抽選のときと同様に特定の値との比較

を行い選択する。pcounter の上位 4 ビットと 2 種類のパターン(0x00 と 0x40)の比較を行い“REACH”“CHANCE”“VICTORY”のどの文字を表示するか

決定する。 文字表示後,簡単なアニメーションによるリーチアクションを行い当り図柄

で停止すれば“FEAVER”の文字が表示され,当り図柄で停止しなければ“END”

の文字が表示され終了となる。

Page 30: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

28

第5章 評価

5.1 動作検証

製作した抽選回路・表示回路の動作検証として,実際に抽選を行い LCD に表

示される文字や図柄、LED の点灯による予告演出が正しく行われているか確認

した。その結果,LCD に表示されるはずの文字が表示されないことや実行され

るはずのプログラムではないプログラムが実行されるなどの問題が発生したが,

これらは PC の値の設定が間違っていたことが原因だと気づきすぐ解決するこ

とができた。

5.2 抽選結果

製作した抽選回路を用いて実際に抽選を行なって,当り確率や予告演出の発生

率が期待値に対してどのような結果になっているか確認する。試行回数 750 回

と 1000 回においての実測値と期待値の比較をした。試行回数 750 回の場合の当

り確率との比較を表 5-1 に示し,試行回数 1000 回の場合の当り確率との比較を

表 5-2 に示す。表 5-3 に試行回数 750 回の場合の予告演出の発生率の比較を示

し,表 5-4 に試行回数 1000 回の場合の比較を示す。 比較結果より,当り確率では期待値に比べ実測値は大きい値をとっている。

この原因として,試行回数がすくなかったことがあげられる。予告演出の発生

率の比較では,期待値と実測値にあまり差がないことがわかる。

表 5-1 当り確率の比較

当り確率

期待値 実測値(750 回) 実測値(1000 回)

1/85.3 1/68.2 1/71.4

Page 31: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

29

表 5-2 期待値と実測値の比較(試行回数 750 回) 緑 黄 赤

パターン A パターン A パターン A

期待値 実測値 期待値 実測値 期待値 実測値

64/256 194/750 16/256 54/750 12/256 43/750 25.00% 25.87% 6.25% 7.20% 4.69% 5.73%

パターン B パターン B パターン B

期待値 実測値 期待値 実測値 期待値 実測値

16/256 47/750 12/256 36/750 9/256 24/750 6.25% 6.27% 4.69% 4.80% 3.52% 3.20%

パターン C パターン C パターン C

期待値 実測値 期待値 実測値 期待値 実測値

12/256 41/750 10/256 21/750 5/256 15/750 4.69% 5.47% 3.91% 2.80% 1.95% 2.00%

パターン D パターン D パターン D

期待値 実測値 期待値 実測値 期待値 実測値

16/256 53/750 12/256 34/750 9/256 29/750 6.25% 7.07% 4.69% 4.53% 3.52% 3.87%

パターン E パターン E パターン E

期待値 実測値 期待値 実測値 期待値 実測値

12/256 34/750 10/256 30/750 5/256 10/750 4.69% 4.53% 3.91% 4.00% 1.95% 1.33%

パターン F パターン F パターン F

期待値 実測値 期待値 実測値 期待値 実測値

11/256 28/750 6/256 28/750 3/256 7/750 4.30% 3.73% 2.34% 3.73% 1.17% 0.93%

パターン G パターン G パターン G

期待値 実測値 期待値 実測値 期待値 実測値

8/256 19/750 4/256 11/750 2/256 9/750 3.13% 2.53% 1.56% 1.47% 0.78% 1.20%

パターン H パターン I

期待値 実測値 期待値 実測値

1/256 5/750 1/256 8/750 0.39% 0.67% 0.39% 1.07%

Page 32: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

30

表 5-3 期待値と実測値の比較(試行回数 1000 回) 緑 黄 赤

パターン A パターン A パターン A

期待値 実測値 期待値 実測値 期待値 実測値

64/256 265/1000 16/256 70/1000 12/256 57/1000 25.00% 26.58% 6.25% 7.02% 4.69% 5.72%

パターン B パターン B パターン B

期待値 実測値 期待値 実測値 期待値 実測値

16/256 61/1000 12/256 52/1000 9/256 35/1000 6.25% 6.12% 4.69% 5.22% 3.52% 3.51%

パターン C パターン C パターン C

期待値 実測値 期待値 実測値 期待値 実測値

12/256 49/1000 10/256 31/1000 5/256 21/1000 4.69% 4.91% 3.91% 3.11% 1.95% 2.11%

パターン D パターン D パターン D

期待値 実測値 期待値 実測値 期待値 実測値

16/256 66/1000 12/256 47/1000 9/256 38/1000 6.25% 6.62% 4.69% 4.71% 3.52% 3.81%

パターン E パターン E パターン E

期待値 実測値 期待値 実測値 期待値 実測値

12/256 44/1000 10/256 41/1000 5/256 14/1000 4.69% 4.41% 3.91% 4.11% 1.95% 1.40%

パターン F パターン F パターン F

期待値 実測値 期待値 実測値 期待値 実測値

11/256 38/1000 6/256 36/1000 3/256 8/1000 4.30% 3.81% 2.34% 3.61% 1.17% 0.80%

パターン G パターン G パターン G

期待値 実測値 期待値 実測値 期待値 実測値

8/256 27/1000 4/256 19/1000 2/256 9/1000 3.13% 2.71% 1.56% 1.91% 0.78% 0.90%

パターン H パターン I

期待値 実測値 期待値 実測値

1/256 5/1000 1/256 10/1000 0.39% 0.50% 0.39% 1.00%

Page 33: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

31

第 6 章 まとめ 本研究で PIC を用いて当り抽選回路・表示回路を設計・製作することで,組

み込みシステムに関する知識とその設計手法を学ぶことができた。PIC を用い

ることにより,アセンブリ言語などさまざまな知識を身につけることができた。 しかし,割り込みや page をまたがったプログラムの処理を行うことができな

かった。 今後の課題として,これらの問題を解決しさらに広い視野でプログラム開発

ができるよう心掛けたい。

Page 34: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

32

謝辞

本研究を進めるにあたり,日ごろより懇切丁寧な御指導と御鞭撻くださいま

した高知工科大学工学部 電子・光システム工学コース 矢野 政顕教授に深

く感謝いたします。

また,ご助言を頂くとともに日頃からお世話になりました橘 昌良 教授,

綿森 道夫 准教授,他各先生方に厚く御礼申し上げます。

さらに,本研究を進めるにあたり御助言と御指導頂きました車 載仁氏,多

木 勝彦氏,日頃からお世話になった矢野研究室,橘研究室の皆様方に心から

感謝いたします。

Page 35: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

33

参考文献 [1] : 光永 法明,後田 敏 : 「はじめての PIC アセンブラ入門」CQ 出版社

(2005) [2] : 神崎 康宏 : 「作りながら学ぶ PIC マイコン入門」 CQ 出版社 (2005)

Page 36: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

34

付録 list p=16F877A ; list directive to define processor #include <p16F877A.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF ;******* 変数定義 lpvar0 equ 0x20 ; ループ変数 lpvar1 equ 0x21 ; ループ変数 countptr equ 0x22 ; ポインタカウント charcnt equ 0x23 disdata equ 0x24 chrdt equ 0x25 ; CGRAM アドレス time_count equ 0x26 ; time カウント用 dcounter equ 0x27 ; 抽選カウンタ pcounter equ 0x28 ; 演出カウンタ zcounter equ 0x29 ; 図柄カウンタ lr_reg equ 0x2a ; 左図柄用 rr_reg equ 0x2b ; 右図柄用 cr_reg equ 0x2c ; 中央図柄用 ;******* 7SEG LED Lighting Pattern ;******* LED Lighting Pattern ; '0':on '1':off ;******* pattern A pta0 equ b'01111111' pta1 equ b'10111111' pta2 equ b'11011111' pta3 equ b'11101111'

Page 37: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

35

pta4 equ b'11110111' pta5 equ b'11111011' pta6 equ b'11111101' pta7 equ b'11111110' ;******* pattern B ptb0 equ b'01111111' ptb1 equ b'10111111' ptb2 equ b'01011111' ptb3 equ b'10101111' ptb4 equ b'11010111' ptb5 equ b'11101011' ptb6 equ b'11110101' ptb7 equ b'11111010' ptb8 equ b'11111101' ptb9 equ b'11111110' ;******* pattern C ptc0 equ b'01111111' ptc1 equ b'10111111' ptc2 equ b'01011111' ptc3 equ b'10101111' ptc4 equ b'01010111' ptc5 equ b'10101011' ptc6 equ b'11010101' ptc7 equ b'11101010' ptc8 equ b'11110101' ptc9 equ b'11111010' ptca equ b'11111101' ptcb equ b'11111110' ;******* pattern D ptd0 equ b'11111110' ptd1 equ b'11111101' ptd2 equ b'11111011' ptd3 equ b'11110111'

Page 38: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

36

ptd4 equ b'11101111' ptd5 equ b'11011111' ptd6 equ b'10111111' ptd7 equ b'01111111' ;******* pattern E pte0 equ b'11111110' pte1 equ b'11111101' pte2 equ b'11111010' pte3 equ b'11110101' pte4 equ b'11101011' pte5 equ b'11010111' pte6 equ b'10101111' pte7 equ b'01011111' pte8 equ b'10111111' pte9 equ b'01111111' ;******* pattern F ptf0 equ b'11111110' ptf1 equ b'11111101' ptf2 equ b'11111010' ptf3 equ b'11110101' ptf4 equ b'11101010' ptf5 equ b'11010101' ptf6 equ b'10101011' ptf7 equ b'01010111' ptf8 equ b'10101111' ptf9 equ b'01011111' ptfa equ b'10111111' ptfb equ b'01111111' ;************************************************************ org 0x000 ; リセット時のプログラム開始アドレス goto default dt_reach

Page 39: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

37

addwf PCL, f dt " R E A C H " dt_chan addwf PCL, f dt " C H A N C E " dt_vict addwf PCL, f dt " V I C T O R Y " dt_cong addwf PCL, f dt "CONGRATULATIONS " dt_feav addwf PCL, f dt " F E A V E R " dt_iniscr addwf PCL, f dt " PLEASE " dt " PUSH BUTTON " dt_start addwf PCL, f dt " S T A R T " dt " ? ? ? " dt_end addwf PCL, f dt " E N D " dt_num addwf PCL, f dt "0123456789ABCDEF"

Page 40: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

38

;*********** 初期設定 default ; ポートの設定 bsf STATUS, RP0 ; バンク 1 を選択 movlw b'00000111' movwf ADCON1 ; RA, RE をデジタル入出力に clrf TRISA ; ポート A を出力に設定 clrf TRISB ; ポート B を出力に設定 movlw b'10000000' movwf TRISC ; RC<7>を入力,RC<6:0>を出力に設定 clrf TRISD ; ポート D を出力に設定 clrf TRISE ; ポート E を出力に設定 bcf STATUS, RP0 ; バンク 0 を選択 clrf PORTA movlw 0xff movwf PORTB ; LED OFF clrf PORTC clrf PORTD clrf PORTE ; タイマ 0 の初期化 bsf STATUS, RP0 ; バンク 1 を選択 bcf OPTION_REG,T0CS ; タイマ 0 内部クロック使用 分周値=256 bcf OPTION_REG,PSA bcf STATUS, RP0 call iniLCD call cgmk clrf dcounter ; 抽選カウンタをクリア clrf pcounter ; 演出カウンタをクリア clrf zcounter ; 図柄カウンタをクリア goto start ;************************************************************ ;*********** LCD の初期化 iniLCD movlw 0xa0

Page 41: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

39

call lctm ; 電源投入後 15ms 以上待つ movlw 0x30 call cmdw movlw 0x2a call lctm ; 4.1ms 以上待つ movlw 0x30 call cmdw movlw 0x02

call lctm ; 100us 待つ movlw 0x30 call cmdw movlw 0x02 call lctm ; 100us 待つ movlw 0x38 ; データバス 8 ビット 2 行表示 5×7 ドット call cmdwbc movlw 0x0c call cmdwbc movlw 0x06 call cmdwbc movlw 0x01 call cmdwbc return ;*********** LCD command write cmdwbc call bfchk cmdw movwf PORTD bcf PORTE, 0 bcf PORTE, 1 bsf PORTE, 2 bcf PORTE, 2 return ;*********** LCD data write datawbc

Page 42: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

40

call bfchk dataw movwf PORTD bsf PORTE, 0 bcf PORTE, 1 bsf PORTE, 2 bcf PORTE, 2 return ;*********** Busy Flag Check bfchk bsf STATUS, RP0 comf TRISD, f bcf STATUS, RP0 bsf PORTE, 1 lpbfchk bcf PORTE, 0 bsf PORTE, 2 nop bcf PORTE, 2 btfsc PORTD, 7 goto lpbfchk bcf PORTE, 1 bsf STATUS, RP0 clrf TRISD bcf STATUS, RP0 return ;******* LCD command ******* ;******* Clear LCD clrlcd movlw 0x01 call cmdwbc return ;******* display initial screen disiniscr movlw 0x10

Page 43: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

41

movwf charcnt bsf PORTE, 0 disinsclp movfw countptr call dt_iniscr call datawbc call time20ms incf countptr, f decfsz charcnt, f goto disinsclp return ;******* display start disstart movlw 0x10 movwf charcnt bsf PORTE, 0 disstalp movfw countptr call dt_start call datawbc incf countptr, f decfsz charcnt, f goto disstalp return ;******* display " REACH " disre clrf PCLATH movlw 0x10 movwf charcnt bsf PORTE, 0 disrelp movfw countptr call dt_reach call datawbc incf countptr, f decfsz charcnt, f

Page 44: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

42

goto disrelp return ;******* display " CHANCE " discha clrf PCLATH movlw 0x10 movwf charcnt bsf PORTE, 0 dischalp movfw countptr call dt_chan call datawbc incf countptr, f decfsz charcnt, f goto dischalp return ;******* display " VICTORY " disvic clrf PCLATH movlw 0x10 movwf charcnt bsf PORTE, 0 disviclp movfw countptr call dt_vict call datawbc incf countptr, f decfsz charcnt, f goto disviclp return ;******* display " CCONGRATULATIONS " discong clrf PCLATH movlw 0x10 movwf charcnt bsf PORTE, 0

Page 45: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

43

disconglp movfw countptr call dt_cong call datawbc call time100ms incf countptr, f decfsz charcnt, f goto disconglp return ;******* display " FEAVER " disfeav clrf PCLATH movlw 0x10 movwf charcnt bsf PORTE, 0 disfeavlp movfw countptr call dt_feav call datawbc incf countptr, f decfsz charcnt, f goto disfeavlp return ;******* display " END" disend clrf PCLATH movlw 0x10 movwf charcnt bsf PORTE, 0 disendlp movfw countptr call dt_end call datawbc incf countptr, f decfsz charcnt, f

Page 46: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

44

goto disendlp return ;******* display number disnum clrf PCLATH bsf PORTE, 0 call dt_num call datawbc return ;******* display hispnum dishsnum movlw 0x10 movwf lpvar1 dihsnlp movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum call time100ms decfsz lpvar1, f goto dihsnlp return ;******* display chara dischara clrf PCLATH bsf PORTE, 0 call datawbc return ;******* CG MAKE cgmk

Page 47: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

45

bsf PORTE, 2 bcf PORTE, 1 bcf PORTE, 0 movlw 0x40 call cmdwbc bsf PORTE, 0 movlw 0x04 call datawbc movlw 0x0c call datawbc movlw 0x14 call datawbc movlw 0x1c call datawbc movlw 0x14 call datawbc movlw 0x0c call datawbc movlw 0x04 call datawbc movlw 0x00 call datawbc bsf PORTE, 0 movlw 0x04 call datawbc movlw 0x0a call datawbc movlw 0x12 call datawbc movlw 0x1e call datawbc movlw 0x12 call datawbc movlw 0x0a call datawbc

Page 48: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

46

movlw 0x04 call datawbc movlw 0x00 call datawbc movlw 0x04 call datawbc movlw 0x0a call datawbc movlw 0x11 call datawbc movlw 0x1f call datawbc movlw 0x11 call datawbc movlw 0x0a call datawbc movlw 0x04 call datawbc movlw 0x00 call datawbc movlw 0x04 call datawbc movlw 0x0c call datawbc movlw 0x14 call datawbc movlw 0x14 call datawbc movlw 0x14 call datawbc movlw 0x0c call datawbc movlw 0x04 call datawbc

Page 49: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

47

movlw 0x00 call datawbc bcf PORTE, 2 return ;*********** メインルーチン start call clrlcd movlw 0x80 call cmdwbc clrf countptr call disiniscr movlw 0xc0 call cmdwbc call disiniscr sbchk ; ボタンチェック btfsc PORTC, 7 goto count call time20ms ; チャタリング防止処理 btfsc PORTC, 7 goto count ; 押されていなければ count へ call clrlcd ; 押されていれば start 画面へ movlw 0x80 call cmdwbc clrf countptr call disstart movlw 0xc0 call cmdwbc call disstart goto dctchk count ; 各カウンタのカウントアップ incf dcounter, f incf pcounter, f incf zcounter, f

Page 50: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

48

bcf zcounter, 4 goto sbchk ;*************************************** ;*********** counter check dctchk ; 当たり判定 movlw 0x00 subwf dcounter, w ; 当たりパターン 0 との比較 btfsc STATUS, Z goto adnJ ; 当たりならば adnJ へ movlw 0x6f subwf dcounter, w ; 当たりパターン 1 との比較 btfsc STATUS, Z goto fev0 ; 当たりならば fev0 へ movlw 0xde subwf dcounter, w ; 当たりパターン 2 との比較 btfsc STATUS, Z goto fev0 goto pctchk0 ; pctchk へ pctchk0 ; ハズレ演出選択 org 0x300 btfsc pcounter, 7 goto pctchk1 movlw 0x03 movwf PCLATH movfw pcounter addwf PCL, f ; ハズレ演出テーブル 1 goto adnI goto g_ledA goto g_ledA goto g_ledA goto g_ledA

Page 51: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

49

goto g_ledD goto y_ledA goto g_ledC goto g_ledE goto y_ledE goto y_ledC goto y_ledB goto r_ledA goto y_ledD goto r_ledB goto g_ledF goto y_ledB goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto r_ledD goto g_ledG goto r_ledC goto g_ledE goto y_ledF goto r_ledB goto r_ledA goto r_ledE goto g_ledC goto g_ledF goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA

Page 52: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

50

goto y_ledC goto y_ledB goto g_ledB goto y_ledE goto y_ledD goto y_ledC goto r_ledD goto g_ledE goto r_ledB goto y_ledF goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto r_ledD goto y_ledC goto y_ledB goto g_ledF goto r_ledF goto g_ledE goto y_ledD goto r_ledG goto y_ledE goto r_ledA goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto r_ledB goto g_ledA

Page 53: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

51

goto g_ledC goto r_ledF goto g_ledE goto y_ledB goto y_ledF goto y_ledE goto r_ledD goto g_ledD goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto r_ledC goto r_ledB goto g_ledG goto g_ledE goto r_ledA goto r_ledA goto y_ledB goto y_ledD goto y_ledE goto y_ledA goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto g_ledF goto r_ledD goto adnH goto r_ledA

Page 54: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

52

goto g_ledE goto y_ledD goto r_ledE goto g_ledC goto y_ledE goto y_ledB goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto r_ledC goto r_ledB pctchk1 org 0x400 movlw 0x04 movwf PCLATH bcf pcounter, 7 movfw pcounter addwf PCL, f ; ハズレ演出テーブル 2 goto g_ledE goto y_ledC goto g_ledF goto r_ledD goto g_ledC goto y_ledE goto y_ledD goto y_ledB goto g_ledB goto g_ledA goto g_ledA

Page 55: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

53

goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto g_ledG goto y_ledD goto r_ledA goto r_ledC goto y_ledE goto r_ledD goto g_ledC goto r_ledB goto g_ledE goto y_ledB goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto r_ledA goto y_ledF goto y_ledC goto y_ledD goto r_ledD goto g_ledC goto y_ledE goto g_ledE goto r_ledE goto g_ledG goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA

Page 56: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

54

goto g_ledD goto y_ledA goto r_ledC goto r_ledA goto g_ledF goto g_ledE goto y_ledD goto y_ledB goto g_ledC goto y_ledC goto g_ledF goto r_ledB goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto r_ledA goto g_ledG goto y_ledD goto y_ledG goto y_ledB goto g_ledG goto y_ledE goto r_ledE goto g_ledC goto r_ledB goto g_ledB goto g_ledA goto g_ledA goto g_ledA goto y_ledD goto g_ledD goto y_ledA

Page 57: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

55

goto r_ledF goto r_ledA goto y_ledC goto g_ledA goto y_ledB goto g_ledE goto g_ledF goto y_ledG goto r_ledE goto g_ledC goto g_ledB goto r_ledG goto g_ledA goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto g_ledA goto g_ledF goto y_ledF goto g_ledF goto y_ledG goto y_ledC goto g_ledA goto g_ledC goto r_ledD goto g_ledG goto g_ledB goto g_ledA goto g_ledC goto g_ledA goto g_ledA goto g_ledD goto y_ledA goto g_ledA goto y_ledF

Page 58: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

56

goto y_ledD goto y_ledG goto y_ledC goto g_ledA goto g_ledG goto r_ledA goto g_ledF goto g_ledA goto g_ledB fev0 ; アタリ演出選択 org 0x500 bsf zcounter, 7 btfsc pcounter, 7 goto fev1 movlw 0x05 movwf PCLATH movfw pcounter addwf PCL, f ; アタリ演出テーブル 1 goto adnI goto r_ledG goto r_ledC goto adnI goto r_ledF goto r_ledD goto adnH goto r_ledG goto y_ledG goto adnH goto y_ledE goto r_ledE goto r_ledF goto g_ledF goto adnH

Page 59: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

57

goto adnI goto y_ledB goto r_ledG goto adnH goto r_ledC goto adnH goto y_ledD goto r_ledE goto adnI goto y_ledC goto r_ledF goto y_ledG goto adnI goto r_ledB goto r_ledE goto r_ledG goto r_ledA goto adnI goto y_ledF goto r_ledD goto adnH goto y_ledA goto r_ledF goto g_ledG goto adnI goto y_ledE goto adnH goto r_ledG goto r_ledC goto r_ledE goto adnI goto y_ledC goto adnH goto y_ledB goto adnI goto r_ledF

Page 60: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

58

goto y_ledG goto adnH goto r_ledB goto adnI goto y_ledF goto r_ledE goto r_ledG goto adnI goto g_ledB goto adnH goto r_ledF goto r_ledE goto g_ledE goto adnI goto r_ledC goto g_ledD goto adnH goto y_ledE goto adnI goto y_ledF goto r_ledG goto adnH goto g_ledF goto adnH goto g_ledA goto adnI goto r_ledB goto r_ledF goto adnH goto y_ledG goto g_ledE goto r_ledG goto y_ledG goto g_ledC goto adnH goto g_ledG

Page 61: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

59

goto r_ledC goto adnH goto g_ledF goto adnI goto r_ledB goto y_ledG goto r_ledF goto y_ledF goto adnI goto r_ledE goto r_ledG goto adnH goto r_ledE goto r_ledC goto r_ledF goto adnI goto y_ledE goto adnH goto r_ledD goto adnI goto y_ledF goto adnH goto r_ledF goto y_ledG goto adnI goto r_ledG goto r_ledB goto adnI goto r_ledC goto r_ledE goto r_ledF goto adnI goto y_ledE goto adnH goto y_ledD goto r_ledF

Page 62: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

60

goto adnI goto r_ledG goto g_ledG goto r_ledE goto y_ledF fev1 org 0x600 movlw 0x06 movwf PCLATH bcf pcounter, 7 movfw pcounter addwf PCL, f ; アタリ演出テーブル 2 goto adnH goto y_ledG goto r_ledC goto adnI goto r_ledF goto y_ledG goto y_ledB goto adnI goto r_ledE goto r_ledA goto adnI goto r_ledG goto g_ledF goto r_ledB goto adnH goto r_ledF goto y_ledE goto adnI goto r_ledC goto g_ledG goto r_ledF

Page 63: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

61

goto g_ledF goto adnI goto g_ledE goto r_ledG goto g_ledB goto adnH goto y_ledF goto r_ledD goto adnI goto y_ledA goto r_ledC goto r_ledF goto y_ledC goto adnI goto y_ledE goto r_ledE goto r_ledG goto y_ledG goto adnH goto r_ledC goto adnI goto y_ledG goto r_ledD goto r_ledF goto g_ledG goto r_ledG goto g_ledG goto y_ledF goto adnI goto y_ledG goto r_ledC goto r_ledG goto g_ledF goto r_ledF goto adnH goto g_ledC

Page 64: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

62

goto r_ledG goto y_ledC goto adnI goto r_ledC goto r_ledF goto g_ledG goto r_ledG goto y_ledG goto adnH goto g_ledG goto r_ledG goto g_ledF goto r_ledE goto adnI goto g_ledD goto r_ledC goto r_ledG goto y_ledF goto r_ledG goto r_ledB goto adnH goto y_ledG goto y_ledG goto adnI goto y_ledC goto g_ledG goto r_ledE goto r_ledA goto adnI goto y_ledF goto y_ledE goto r_ledG goto y_ledC goto r_ledC goto adnH goto y_ledG

Page 65: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

63

goto r_ledE goto g_ledG goto adnI goto y_ledC goto r_ledG goto y_ledF goto adnI goto y_ledD goto r_ledG goto g_ledC goto adnI goto g_ledF goto r_ledF goto y_ledG goto r_ledD goto adnH goto r_ledE goto y_ledC goto adnI goto g_ledG goto r_ledG goto y_ledF goto r_ledG goto y_ledG goto r_ledD goto adnI goto y_ledF goto r_ledE goto r_ledF goto y_ledG goto adnH goto r_ledG goto r_ledB goto adnI goto r_ledD

Page 66: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

64

;******* Output pattern A ptA movlw 0x03 movwf lpvar0 lpptA movlw pta7 movwf PORTB call time100ms movlw pta6 movwf PORTB call time100ms movlw pta5 movwf PORTB call time100ms movlw pta4 movwf PORTB call time100ms movlw pta3 movwf PORTB call time100ms movlw pta2 movwf PORTB call time100ms movlw pta1 movwf PORTB call time100ms movlw pta0 movwf PORTB call time100ms movlw 0xff movwf PORTB call time100ms decfsz lpvar0, f goto lpptA return

Page 67: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

65

;******* Output pattern B ptB movlw 0x03 movwf lpvar0 lpptB movlw ptb9 movwf PORTB call time100ms movlw ptb8 movwf PORTB call time100ms movlw ptb7 movwf PORTB call time100ms movlw ptb6 movwf PORTB call time100ms movlw ptb5 movwf PORTB call time100ms movlw ptb4 movwf PORTB call time100ms movlw ptb3 movwf PORTB call time100ms movlw ptb2 movwf PORTB call time100ms movlw ptb1 movwf PORTB call time100ms movlw ptb0 movwf PORTB call time100ms movlw 0xff

Page 68: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

66

movwf PORTB call time100ms decfsz lpvar0, f goto lpptB return ;******* Output pattern C ptC movlw 0x03 movwf lpvar0 lpptC movlw ptcb movwf PORTB call time100ms movlw ptca movwf PORTB call time100ms movlw ptc9 movwf PORTB call time100ms movlw ptc8 movwf PORTB call time100ms movlw ptc7 movwf PORTB call time100ms movlw ptc6 movwf PORTB call time100ms movlw ptc5 movwf PORTB call time100ms movlw ptc4 movwf PORTB call time100ms movlw ptc3

Page 69: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

67

movwf PORTB call time100ms movlw ptc2 movwf PORTB call time100ms movlw ptc1 movwf PORTB call time100ms movlw ptc0 movwf PORTB call time100ms movlw 0xff movwf PORTB call time100ms decfsz lpvar0, f goto lpptC return ;******* Output pattern D ptD movlw 0x03 movwf lpvar0 lpptD movlw ptd7 movwf PORTB call time100ms movlw ptd6 movwf PORTB call time100ms movlw ptd5 movwf PORTB call time100ms movlw ptd4 movwf PORTB call time100ms movlw ptd3

Page 70: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

68

movwf PORTB call time100ms movlw ptd2 movwf PORTB call time100ms movlw ptd1 movwf PORTB call time100ms movlw ptd0 movwf PORTB call time100ms movlw 0xff movwf PORTB call time100ms decfsz lpvar0, f goto lpptD return ;******* Output pattern E ptE movlw 0x03 movwf lpvar0 lpptE movlw pte9 movwf PORTB call time100ms movlw pte8 movwf PORTB call time100ms movlw pte7 movwf PORTB call time100ms movlw pte6 movwf PORTB call time100ms movlw pte5

Page 71: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

69

movwf PORTB call time100ms movlw pte4 movwf PORTB call time100ms movlw pte3 movwf PORTB call time100ms movlw pte2 movwf PORTB call time100ms movlw pte1 movwf PORTB call time100ms movlw pte0 movwf PORTB call time100ms movlw 0xff movwf PORTB call time100ms decfsz lpvar0, f goto lpptE return ;******* Output pattern F ptF movlw 0x03 movwf lpvar0 lpptF movlw ptfb movwf PORTB call time100ms movlw ptfa movwf PORTB call time100ms movlw ptf9

Page 72: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

70

movwf PORTB call time100ms movlw ptf8 movwf PORTB call time100ms movlw ptf7 movwf PORTB call time100ms movlw ptf6 movwf PORTB call time100ms movlw ptf5 movwf PORTB call time100ms movlw ptf4 movwf PORTB call time100ms movlw ptf3 movwf PORTB call time100ms movlw ptf2 movwf PORTB call time100ms movlw ptf1 movwf PORTB call time100ms movlw ptf0 movwf PORTB call time100ms movlw 0xff movwf PORTB call time100ms decfsz lpvar0, f goto lpptF return ;******* Output pattern G

Page 73: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

71

ptG movlw 0x00 movwf PORTB call time1sec call time1sec movlw 0xff movwf PORTB return ;******* Output pattern H ptH movlw 0x01 movwf PORTA movlw 0x00 movwf PORTB call time1sec movlw 0x03 movwf PORTA call time1sec movlw 0xff movwf PORTB return ;******* Output pattern I ptI movlw 0x01 movwf PORTA movlw 0x00 movwf PORTB call time1sec call time1sec movlw 0x03 movwf PORTA call time1sec movlw 0x07 movwf PORTA

Page 74: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

72

call time1sec movlw 0xff movwf PORTB return ;******* Output pattern J ptJ movlw 0x07 movwf PORTA movlw 0x00 movwf PORTB call time1sec call time1sec movlw 0xff movwf PORTB return ;******* 予告演出 ;******* Green LED g_ledA ; 演出パターン A green movlw 0x30 movwf PORTC movlw 0x01 movwf PORTA call ptA btfss zcounter, 7 goto losing0 goto reach g_ledB ; 演出パターン B green movlw 0x6d movwf PORTC movlw 0x01 movwf PORTA call ptB btfss zcounter, 7

Page 75: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

73

goto losing0 goto reach g_ledC ; 演出パターン C green movlw 0x79 movwf PORTC movlw 0x01 movwf PORTA call ptC btfss zcounter, 7 goto losing0 goto reach g_ledD ; 演出パターン D green movlw 0x6d movwf PORTC movlw 0x01 movwf PORTA call ptD btfss zcounter, 7 goto losing0 goto reach g_ledE ; 演出パターン E green movlw 0x79 movwf PORTC movlw 0x01 movwf PORTA call ptE btfss zcounter, 7 goto losing0 goto reach g_ledF ; 演出パターン F green movlw 0x33 movwf PORTC

Page 76: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

74

movlw 0x01 movwf PORTA call ptF goto reach g_ledG ; 演出パターン G green movlw 0x5b movwf PORTC movlw 0x01 movwf PORTA call ptG goto reach ;******* 予告演出 ;******* Yellow LED y_ledA ; 演出パターン A yellow movlw 0x6d movwf PORTC movlw 0x02 movwf PORTA call ptA btfss zcounter, 7 goto losing0 goto reach y_ledB ; 演出パターン B yellow movlw 0x79 movwf PORTC movlw 0x02 movwf PORTA call ptB btfss zcounter, 7 goto losing0 goto reach y_ledC ; 演出パターン C yellow

Page 77: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

75

movlw 0x33 movwf PORTC movlw 0x02 movwf PORTA call ptC goto reach y_ledD ; 演出パターン D yellow movlw 0x79 movwf PORTC movlw 0x02 movwf PORTA call ptD btfss zcounter, 7 goto losing0 goto reach y_ledE ; 演出パターン E yellow movlw 0x33 movwf PORTC movlw 0x02 movwf PORTA call ptE goto reach y_ledF ; 演出パターン F yellow movlw 0x5b movwf PORTC movlw 0x02 movwf PORTA call ptF goto reach y_ledG ; 演出パターン G yellow movlw 0x5f movwf PORTC

Page 78: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

76

movlw 0x02 movwf PORTA call ptG goto reach ;******* 予告演出 ;******* Red LED r_ledA ; 演出パターン A red movlw 0x79 movwf PORTC movlw 0x04 movwf PORTA call ptA btfss zcounter, 7 goto losing0 goto reach r_ledB ; 演出パターン B red movlw 0x33 movwf PORTC movlw 0x04 movwf PORTA call ptB goto reach r_ledC ; 演出パターン C red movlw 0x5b movwf PORTC movlw 0x04 movwf PORTA call ptC goto reach r_ledD ; 演出パターン D red movlw 0x33 movwf PORTC movlw 0x04

Page 79: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

77

movwf PORTA call ptD goto reach r_ledE ; 演出パターン E red movlw 0x5b movwf PORTC movlw 0x04 movwf PORTA call ptE goto reach r_ledF ; 演出パターン F red movlw 0x5f movwf PORTC movlw 0x04 movwf PORTA call ptF goto reach r_ledG ; 演出パターン G red movlw 0x70 movwf PORTC movlw 0x04 movwf PORTA call ptG goto reach ;******* adnH ; 演出パターン H movlw 0x7f movwf PORTC call ptH goto reach adnI ; 演出パターン I

Page 80: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

78

movlw 0x7b movwf PORTC call ptI goto reach adnJ ; 演出パターン J movlw 0x47 movwf PORTC call ptJ goto sbig losing0 movfw zcounter movwf lr_reg movfw pcounter andlw b'00001111' addwf zcounter, w movwf rr_reg bcf rr_reg, 4 movfw pcounter andlw b'11110000' movwf cr_reg swapf cr_reg, w addwf zcounter, w movwf cr_reg bcf cr_reg, 4 movfw lr_reg subwf rr_reg, w btfss STATUS, Z goto con goto reach con call hyoji_l call hyoji_r goto hyoji_cc

Page 81: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

79

sbig movlw 0x04 movwf lr_reg movwf rr_reg movwf cr_reg bsf zcounter, 7 movlw 0x80 call cmdwbc clrf countptr call discong call time1sec movlw 0xc3 call cmdwbc movfw lr_reg call disnum movlw 0xc7 call cmdwbc movfw cr_reg call disnum movlw 0xcb call cmdwbc movfw rr_reg call disnum call time100ms call time100ms call time100ms movlw 0xc3 call cmdwbc incf lr_reg, f bcf lr_reg, 4 movfw lr_reg call disnum movlw 0xc7 call cmdwbc incf cr_reg, f

Page 82: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

80

bcf cr_reg, 4 movfw cr_reg call disnum movlw 0xcb call cmdwbc incf rr_reg, f bcf rr_reg, 4 movfw rr_reg call disnum call time100ms call time100ms call time100ms call time100ms call time100ms call time100ms call time100ms movlw 0xc3 call cmdwbc incf lr_reg, f bcf lr_reg, 4 movfw lr_reg call disnum movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum movlw 0xcb call cmdwbc incf rr_reg, f bcf rr_reg, 4 movfw rr_reg call disnum call time1sec call time100ms

Page 83: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

81

call time100ms call time100ms call time100ms movlw 0xc3 call cmdwbc incf lr_reg, f bcf lr_reg, 4 movfw lr_reg call disnum movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum movlw 0xcb call cmdwbc incf rr_reg, f bcf rr_reg, 4 movfw rr_reg call disnum call time1sec goto feaver reach movlw 0x0f andwf zcounter, w movwf lr_reg movwf rr_reg movwf cr_reg call hyoji_l call hyoji_r clrf countptr movfw pcounter andlw b'11110000' movwf pcounter

Page 84: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

82

movlw 0x00 subwf pcounter, w btfsc STATUS, Z goto hyo_vic movlw 0x40 subwf pcounter, w btfsc STATUS, Z goto hyo_cha goto hyo_rea hyo_rea movlw 0x80 call cmdwbc call disre call time1sec goto hyoji_cr hyo_cha movlw 0x80 call cmdwbc call discha call time1sec goto hyoji_cr hyo_vic movlw 0x80 call cmdwbc call disvic call time1sec goto hyoji_cr hyoji_cc movlw 0xc7 call cmdwbc movfw cr_reg call disnum

Page 85: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

83

call time100ms call time100ms movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum call time100ms call time100ms call time100ms call time100ms movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum call time1sec goto end_yugi hyoji_cr movlw 0xc7 call cmdwbc movfw cr_reg call disnum call time100ms call time100ms movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum call time100ms call time100ms

Page 86: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

84

call time100ms call time100ms movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum call time100ms call time100ms call time100ms call time100ms call time100ms call time100ms call time100ms movlw 0xc7 call cmdwbc incf cr_reg, f bcf cr_reg, 4 movfw cr_reg call disnum call time1sec call dishsnum call clrlcd movlw 0xc3 call cmdwbc movfw lr_reg call disnum movlw 0xcb call cmdwbc movfw rr_reg call disnum movlw 0x04 subwf lr_reg, w movwf cr_reg movlw 0x0f

Page 87: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

85

andwf cr_reg, f movlw 0x03 call super call time1sec call time1sec btfss zcounter, 7 goto end_yugi movlw 0x01 call super goto feaver feaver clrf countptr movlw 0x80 call cmdwbc call disfeav bcf zcounter, 7 clrf pcounter clrf countptr btfsc PORTC, 7 goto feaver call time20ms ; チャタリング防止処理 btfsc PORTC, 7 goto feaver clrf PORTC goto start end_yugi bcf zcounter, 7 clrf pcounter clrf countptr movlw 0x80 call cmdwbc call disend btfsc PORTC, 7 goto end_yugi

Page 88: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

86

call time20ms ; チャタリング防止処理 btfsc PORTC, 7 goto end_yugi clrf PORTC goto start ;******* hyoji hyoji_l movlw 0xc3 call cmdwbc movfw lr_reg call disnum call time100ms call time100ms movlw 0xc3 call cmdwbc incf lr_reg, f bcf lr_reg, 4 movfw lr_reg call disnum call time100ms call time100ms call time100ms call time100ms movlw 0xc3 call cmdwbc incf lr_reg, f bcf lr_reg, 4 movfw lr_reg call disnum call time1sec return hyoji_r movlw 0xcb call cmdwbc

Page 89: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

87

movfw rr_reg call disnum call time100ms call time100ms movlw 0xcb call cmdwbc incf rr_reg, f bcf rr_reg, 4 movfw rr_reg call disnum call time100ms call time100ms call time100ms call time100ms movlw 0xcb call cmdwbc incf rr_reg, f bcf rr_reg, 4 movfw rr_reg call disnum call time1sec return super movwf lpvar1 splp0 movlw 0x00 movwf chrdt movlw 0x04 movwf lpvar0 movlw 0x87 call cmdwbc movfw cr_reg call disnum splp1 call time1sec

Page 90: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

88

movlw 0x89 call cmdwbc movfw chrdt call datawbc incf chrdt, f decfsz lpvar0, f goto splp1 movlw 0x88 call cmdwbc movlw 0x7f call datawbc call time1sec movlw 0x88 call cmdwbc movlw 0x20 call datawbc movlw 0x87 call cmdwbc movlw 0x20 call datawbc call time20ms movlw 0xc7 call cmdwbc movfw cr_reg call disnum incf cr_reg, f decfsz lpvar1, f goto splp0 return ;******* wait timer ******* ;******* timer for LCD lctm sublw 0xff bcf INTCON,T0IF movwf TMR0

Page 91: Display with use of PIC microprocessor - 高知工科大学 ライタとして,ミナトエレクトロニクス社の「MODEL 1881XP 」を使用す る。 3 2.2 LCD について

89

looplctm btfss INTCON,T0IF goto looplctm return ;******* 20ms time20ms movlw 0x3d bcf INTCON,T0IF movwf TMR0 loop20ms btfss INTCON,T0IF goto loop20ms return ;******* 100ms time100ms movlw D'5' movwf time_count lp100ms call time20ms decfsz time_count,f goto lp100ms return ;******* 1sec time1sec movlw 0x32 movwf time_count lp1sec call time20ms decfsz time_count,f goto lp1sec return end