;******************************************************************************************
;  ＡＶＲサンプル
;   Project      :
;   Program Name : 
;   Programer    :
;   Create date  :  Version 1.0    H18.07.25
;   History      :
;******************************************************************************************
;  (1)Description 
;
;******************************************************************************************
.include "2313def.inc"
.cseg
	LDI	R16,RAMEND
	OUT	SPL,R16		;
	LDI	R16,0xFF	; PORTB(0-7)を全て出力にする
	OUT	DDRB,R16	; PORTB(0-7)を全て出力にする
	LDI	R16,0x00	; PORTD(0-6)を全て入力にする
	OUT	DDRD,R16	; PORTD(0-6)を全て入力にする
;
	LDI	R16,0x00	; PORTBを初期化
	OUT	PORTB,R16	; PORTBを初期化
	LDI	R16,0x00	; PORTDを初期化(プルアップさせない)
	OUT	PORTD,R16	; PORTDを初期化(プルアップさせない)
;
; 0.初期設定
	LDI	R20,10		; 初期値を設定
	LDI	R21,0x01	; PORTB変数を1に初期化
	OUT	PORTB,R21	; PORTBを1に初期化
MAIN:
; 1.ボタンの入力を待つ
	SBIC	PIND,0		; PORTD(0)をチェック
	RJMP	MAIN1		; PORTD(0)をチェック
	SBIC	PIND,1		; PORTD(1)をチェック
	RJMP	MAIN1		; PORTD(1)をチェック
	RCALL	CNTLP		; 乱数発生 
	RJMP	MAIN		;
;
; 2.ルーレットの初期回転
MAIN1:
	LDI	R22,20		;
MAIN1A:
	RCALL	MVLD		;
	RCALL	WAT1S		; 少し待つ
	DEC	R22		;
	BRNE	MAIN1A		;
;
; 3.ルーレットの乱数回転
MAIN2:
	RCALL	MVLD		;
	RCALL	WAT1S		; 少し待つ
	RCALL	WAT1S		; 少し待つ
	RCALL	WAT1S		; 少し待つ
	DEC	R20		;
	BRNE	MAIN2		;	
;
	RJMP	MAIN

;******************************************************************************************
;   Function Name : MVLD
;   Title         : ルーレットを動かす
;   Input         : 
;   Output        : 
;******************************************************************************************
MVLD:
; 2.ルーレットを動かす
	OUT	PORTB,R21	; PORTBに代入
	SBRC	R21,7		;
	RJMP	MVLD1		;
	LSL	R21		; 表示をシフト
	RET			;　	
MVLD1:				;
	LDI	R21,0x01	; PORTB変数を1に初期化
	RET			;

;******************************************************************************************
;   Function Name : CNTLP
;   Title         : 乱数カウンタ関数(乱数を発生)
;   Input         : 
;   Output        : 
;******************************************************************************************
CNTLP:
	DEC	R20		;
	BRNE	CNTLP1		;
	LDI	R20,50		;
	RET			;
CNTLP1:				;
	RET			;


;******************************************************************************************
;   Function Name : WAT1S
;   Title         : タイマー関数
;   Input         : 
;   Output        : 
;******************************************************************************************
WAT1S:
	LDI	R18,10		; 100->
WAT1S_A:			;
	LDI	R17,100		;
WAT1S_B:			;
	LDI	R16,110		;
WAT1S_C:			;
	RJMP	PC+1		;
	RJMP	PC+1		;
	RJMP	PC+1		;
	DEC	R16		;
	BRNE	WAT1S_C		;
	DEC	R17		;
	BRNE	WAT1S_B		;
	DEC	R18		;
	BRNE	WAT1S_A		;
	RET			;
