;*******************************************************************************************
;  R8C/M16C Tinyサンプル(「ピーポー」ブザー)
;   Program Name : 
;   Programer    :
;   Create date  :  
;   History      :
;*******************************************************************************************
;   Description
;     Define I/O Port
;         P1_0 : Input Switch
;         P1_1 : Output Audio Wave
;*******************************************************************************************
	.INCLUDE sfr_r815.inc

	.SECTION	PROGRAM,CODE
	.ORG	0D000h
start:
; 1.初期設定
;  (1)外部クロック(20MHz)に設定
	BSET	prc0
	BSET	cm13
	BSET	cm15
	BCLR	cm05
	BCLR	cm16
	BCLR	cm17
	BCLR	cm06	
	NOP
	NOP
	NOP
	NOP
	BCLR	ocd2
	BCLR	prc0
						
;  (2)Port1の初期設定
	MOV.B	#00000010b,drr     ; DRRレジスタの設定  ※P1_1の駆動能力を高める
	MOV.B	#00000000b,p1      ; P1レジスタの設定   ※Port1の値を初期化する　 
	MOV.B	#00000010b,pd1     ; PD1レジスタの設定  ※P1_1を出力に設定
;
; 2.処理
main:
;  (1)SWの入力を待つ
	BTST	p1_0
	JC		main1
	JMP		main	
main1:
;  (2)「ピー:440Hz」を0.5秒出力(350nS*2*3246回*227回)
;
;   1)0.5秒出力する(227回)ループ
	MOV.W	#227,r1
pi10:
;   2)1波形を作る
;   2-1)P1_1をHにする
;     a)P1_1をHにする
	BSET	p1_1
;     b)440Hz(3246回)ループ
	MOV.W	#3246,r0
pi21:
	SBJNZ.W	#1,r0,pi21
;   2-2)P1_1をLにする
;     a)P1_1をLにする
	BCLR	p1_1
;     b)440Hz(3246回)ループ
	MOV.W	#3246,r0
pi22:
	SBJNZ.W	#1,r0,pi22
;
	SBJNZ.W	#1,r1,pi10
;
;  (3)「ポー:349Hz」を0.5秒出力(350nS*2*4083回*179回)
;
;   1)0.5秒出力する(179回)ループ
	MOV.W	#179,r1
po10:
;   2)1波形を作る
;   2-1)P1_1をHにする
;     a)P1_1をHにする
	BSET	p1_1
;     b)440Hz(4083回)ループ
	MOV.W	#4083,r0
po21:
	SBJNZ.W	#1,r0,po21
;   2-2)P1_1をLにする
;     a)P1_1をLにする
	BCLR	p1_1
;     b)440Hz(4083回)ループ
	MOV.W	#4083,r0
po22:
	SBJNZ.W	#1,r0,po22
;
	SBJNZ.W	#1,r1,po10
;
	BCLR	p1_1
	JMP	main	

; 3.リセットベクタ
	.SECTION	FIXVECTOR,ROMDATA
	.ORG	0FFFCh

Reset:
	.LWORD	start	|	0FF000000h

	.END