mono0926
6/25/2017 - 1:48 PM

学部3年自主プロジェクトのPIC用ソース

学部3年自主プロジェクトのPIC用ソース

	LIST	P=PIC16F877
	INCLUDE	"P16F877.INC"
	__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _LVP_OFF & _DEBUG_OFF
;
;***	EEPROM �f�[�^
	org	0x2100
	de	00h
	de	00h
	de	00h
	de	00h
;***	EEPROM�f�[�^

;****************************
;�@�v���O�������Ŏg���ϐ��̒�`
;****************************
;BANK0 20H-7FH
;BANK1 A0H-EFH
;BANK2 120H-16FH
;BANK3 1A0H-1EFH
;
;****	7SEG
COLUM	EQU	20H	;Display�@Digit�@Position
TEMP1	EQU	22H	;��
TEMP2	EQU	23H	;�\
TEMP3	EQU	24H	;�S
TEMP4	EQU	25H	;��
CNT1	EQU	26H	;�^�C�}�[�p�̃J�E���^
CNT2	EQU	27H	;�@�V
CNT3	EQU	28H	;�P�b�Ԃ̌J��Ԃ��p�̃J�E���^
;****	7SEG
;
;***	NAPION
save_st EQU	30h	; STATUS�̃Z�[�u�̈�
save_w  EQU	31h	; W-reg�̃Z�[�u�̈�
CNT38   EQU	32h	; TMR0���荞�݂�R�W��J�E���g����J�E���^
CNT10   EQU	33h	; ��L�R�W����ɂP�O��J�E���g����J�E���^
flag10s EQU	34h	; �P�O�b�o�߃t���O
napion  EQU	35h	; NaPiOn�̏o�͕ω��̊Ǘ�
buffer	EQU	36h
;***	NAPION
;
;***	COIN
COIN	EQU	40h	;�R�C�����b�`�p
;***	COIN
;
;***	SERVO
;CNT1_1	EQU	50h
;***	SERVO
;
;***	SPEAKER
TCNT	EQU	60H
TCNT2	EQU	61H
TCNT3	EQU	62H
TCNT4	EQU	63H
TCNT5	EQU	64H
;***	SPEAKER
;
	ORG	0x00	; ���Z�b�g�x�N�^(0�Ԓn)��w�肷��B
	GOTO	INIT	; ���������ɍs��
;
;***	���������ݏ�������
	ORG	0x04	; �����݃x�N�^(4�Ԓn)��w�肷��B
	MOVWF	save_w	; W-reg�Z�[�u
	SWAPF	STATUS,W
	MOVWF	save_st	; STATUS���W�X�^�Z�[�u
;
	BTFSC	PIR1,CCP1IF	;SERVO���荞�݁H
	GOTO	INTR1	;YES
;
	BTFSC	PIR2,CCP2IF	;SERVO���荞�݁H
	GOTO	INTR2	;YES
;
	BTFSC	INTCON,T0IF	; �s�l�q�O�����݁H
	GOTO	T0INT	;  Yes
;
	BTFSC	INTCON,INTF	; �q�a�O�^�h�m�s�����݁H
	GOTO	RB0INT	;  Yes
;
	BTFSC	INTCON, RBIF	;PORTB���荞�݁H
	GOTO	RBINT	;YES
	GOTO	INTEXIT	;  No
;
INTR1
	BCF	PIR1,CCP1IF	;�R���y�A�}�b�`�t���O�̃N���A
	BSF	STATUS,RP0	;�o���N1�ɃZ�b�g
	BSF	PIE1,CCP1IE	;�R���y�A�}�b�`���荞�݋���
	BCF	STATUS,RP0	;�������[�o���N��0�ɃZ�b�g
	BCF	PORTC,2	;�T�[�{����
	GOTO	INTEXIT
;
INTR2
	BCF	PIR2,CCP2IF	;�R���y�A�}�b�`�t���O�̃N���A
	BSF	STATUS,RP0	;�������[�o���N��1�ɃZ�b�g
	BSF	PIE2,CCP2IE	;�R���y�A�}�b�`���荞�݋���
	BCF	STATUS,RP0	;�������[�o���N��0�ɃZ�b�g
	BSF	PORTC, 2	;�T�[�{����
	CLRF	TMR1L	;�^�C�}�P���Z�b�g
	CLRF	TMR1H	;�^�C�}�P���Z�b�g
	GOTO INTEXIT
;
T0INT	; �s�l�q�O�����ݏ���
	BCF	INTCON,T0IF	; �����݃t���O�N���A
;
	DECFSZ	CNT38,F	; CNT38�|�P���O���H
	GOTO	INTEXIT	;  No
	MOVLW	d'38'
	MOVWF	CNT38	; CNT38�ɂR�W��Z�b�g
;
	DECFSZ	CNT10,F	; CNT10�|�P���O���H
	GOTO	INTEXIT	;  No
	MOVLW	d'10'
	MOVWF	CNT10	; CNT10�ɂP�O��Z�b�g
	BSF	flag10s,0	; �P�O�b�o�߃t���O��n�m
	GOTO	INTEXIT
;
RB0INT	; �q�a�O�^�h�m�s�����ݏ���
	BCF	INTCON,INTF	; �����݃t���O�N���A
	BSF	PORTA,5	;RA5 ON
	BSF	PORTC,0	;�Z���TON
	movlw	01h
	movwf	buffer
	MOVLW	d'1'
	MOVWF	napion	; �P���m���o���n�����
	GOTO INTEXIT
;
RBINT	;PORTB�ω�
	BCF	INTCON,RBIF	;���荞�݃t���O�N���A
	INCF	TEMP2,F	;�\���f�[�^+1
	GOTO	INTEXIT
;
INTEXIT
	SWAPF	save_st,W
	MOVWF	STATUS	; STATUS���W�X�^���[�h
	SWAPF	save_w,F
	SWAPF	save_w,W	; W-reg���[�h
	RETFIE	; �����݋��‚ɂ��ă��^�[��
	; �����܂Ŋ����ݏ���
;
INIT
	; ����PIC�̏���������
	CALL	SPEAKER	;�����f�B�[��‚炷
;
	BSF	STATUS,RP0	; ��STATUS��RP0��Z�b�g(1)���� �� �o���N1
	MOVLW	0FFH;
	MOVWF	TRISB	; PORTB����
	BSF	OPTION_REG, 7	;���v���A�b�v�Ȃ�
	BCF	PIE1,TMR1IE	;TMR1�I�[�o�[�t���[���荞�݋֎~
    BSF	PIE1,CCP1IE	;CCP1�R���y�A�}�b�`���荞�݋���
	BSF	PIE2, CCP2IE	;CCP2�R���y�A�}�b�`���荞�݋���
	MOVLW	07H	;�S�ăf�B�W�^�����[�h
	MOVWF	ADCON1	;A/D�ϊ��ݒ�
	CLRF	TRISA	; PORTA�͑S�ďo��
	CLRF	TRISC	;�S�ďo��
	MOVLW	01H
	MOVWF	TRISD	;�|�[�g0�ȊO�͏o��
;	CLRF	TRISD	;PORTD�͑S�ďo��
	BCF	TRISE, PSPMODE	;�|�[�gD����o�̓|�[�g��
	MOVLW	087h	; OPTION���W�X�^�̐ݒ�
	MOVWF	OPTION_REG	; ^RBPU:1 ,INTEDG:0 ,T0CS:0 ,PSA:0 ,PS2-PS0:111
	BCF	STATUS,RP0	; ��STATUS��RP0��N���A(0) �� �o���N0
;
	MOVLW	00H	;W���W�X�^��00H��Z�b�g
	MOVWF	T1CON	;T1CON���W�X�^ �v���X�P�[��1:1 ��~
	CLRF	TMR1L	;�^�C�}���Z�b�g
	CLRF	TMR1H	;�^�C�}���Z�b�g
	MOVLW	0AH	;W���W�X�^��0AH��Z�b�g
	MOVWF	CCP1CON	;CCP1CON���W�X�^ �R���y�A�}�b�`���荞��
	MOVWF	CCP2CON	;CCP2CON���W�X�^ �R���y�A�}�b�`���荞��
;
	MOVLW	50H	;W���W�X�^��50H��Z�b�g
	MOVWF	CCPR2L	;CCPR2L�ɉ���8�r�b�g�f�[�^��Z�b�g
	MOVLW	0C3H	;W���W�X�^��C3H��Z�b�g
	MOVWF	CCPR2H	;CCPR2H�ɉ���8�r�b�g�f�[�^��Z�b�g
;
	CLRF	PORTA	; PORTA��S�Ăn�e�e
	CLRF	PORTC	;�|�[�gC�����o��
	CLRF	PORTD	;PORTD��S��OFF
;
	CLRF	TMR0	; TMR0��N���A
	MOVLW	0A0h	; INTCON�̐ݒ�
	MOVWF	INTCON	; GIE:1 ,T0IE:1(TMR0���荞�݋���)
;
	MOVLW	d'38'
	MOVWF	CNT38	; CNT38�ɂR�W��Z�b�g
	MOVLW	d'10'
	MOVWF	CNT10	; CNT10�ɂP�O��Z�b�g
;
	CLRF	flag10s
	CLRF	napion
;
    BSF     STATUS, RP1   ; 
    BCF     STATUS, RP0   ; Bank 2
    MOVLW   0h  ;
    MOVWF   EEADR         ; Data Memory Address to read
    BSF     STATUS, RP0   ; Bank 3
    BCF     EECON1, EEPGD ; Point to DATA memory
    BSF     EECON1, RD    ; EEPROM Read
    BCF     STATUS, RP0   ; Bank 2 
    MOVF    EEDATA, W     ; W = EEDATA
	BCF	STATUS,RP1
;
	MOVWF	TEMP1	;��̈�
;
    BSF     STATUS, RP1   ; 
    BCF     STATUS, RP0   ; Bank 2
    MOVLW   1h  ;
    MOVWF   EEADR         ; Data Memory Address to read
    BSF     STATUS, RP0   ; Bank 3
    BCF     EECON1, EEPGD ; Point to DATA memory
    BSF     EECON1, RD    ; EEPROM Read
    BCF     STATUS, RP0   ; Bank 2 
    MOVF    EEDATA, W     ; W = EEDATA
	BCF	STATUS,RP1
;
	MOVWF	TEMP2	;�S�̈�
;
    BSF     STATUS, RP1   ; 
    BCF     STATUS, RP0   ; Bank 2
    MOVLW   2h  ;
    MOVWF   EEADR         ; Data Memory Address to read
    BSF     STATUS, RP0   ; Bank 3
    BCF     EECON1, EEPGD ; Point to DATA memory
    BSF     EECON1, RD    ; EEPROM Read
    BCF     STATUS, RP0   ; Bank 2 
    MOVF    EEDATA, W     ; W = EEDATA
	BCF	STATUS,RP1
;
	MOVWF	TEMP3	;�\�̈�
;
    BSF     STATUS, RP1   ; 
    BCF     STATUS, RP0   ; Bank 2
    MOVLW   3h  ;
    MOVWF   EEADR         ; Data Memory Address to read
    BSF     STATUS, RP0   ; Bank 3
    BCF     EECON1, EEPGD ; Point to DATA memory
    BSF     EECON1, RD    ; EEPROM Read
    BCF     STATUS, RP0   ; Bank 2 
    MOVF    EEDATA, W     ; W = EEDATA
	BCF	STATUS,RP1
;
	MOVWF	TEMP4	;��̈�
;
	MOVLW	00h
	MOVWF	COIN	;COIN������
;
;***	�������C����������
	BSF	PORTA,5	; �d���n�m��P�O�b�Ԃq�`5�i�΂k�d�c�j��n�m�ɂ���
	BSF	PORTC, 0	;�Z���T�I��
WAIT10S	; �d���n�m��A�m���o���n���̉�H�����肷��܂łP�O�b�҂�
	BTFSS	flag10s,0	; 10�b�o�߃t���O�n�m�H
	GOTO	WAIT10S	;  No
;
	BCF	PORTA,5	; �d���n�m����P�O�b�o�ߌ�A�q�`5��n�e�e�ɂ���
;
	BSF	INTCON,INTE	; �q�a�O�^�h�m�s�����݋���
	BSF	INTCON,PEIE	;���ӊ��荞�݂̋���
;
;*********************************
MAIN
	BTFSS	PORTD,0	;���Z�b�g�{�^���H
	CALL	RESET
;
	BTFSC	PORTB,1	;�R�C�������H
	CALL	SHIKIBETSU	;���ʃ��[�`����
;
	MOVLW	28H	;�J��Ԃ��񐔃Z�b�g�i�P�b�j
	MOVWF	CNT3	;�J�E���^��
;
NEXT	;�e���\��
	MOVLW	08H	;��̌���w��
	MOVWF	COLUM	;�ۑ�
;
	MOVF	TEMP4,W	;�\���f�[�^���o��
	CALL	DISP	;�Z�O�����g�\���o�́A�Tmsec�҂�
	BCF	STATUS,C	;�V�t�g���ɂP������Ȃ��悤��
	RRF	COLUM,F	;���r�b�g�V�t�g
;
	MOVF	TEMP3,W	;�\���f�[�^���o��
	CALL	DISP	;�Z�O�����g�\���o�́A�Tmsec�҂�
	BCF	STATUS,C	;�V�t�g���ɂP������Ȃ��悤��
	RRF	COLUM,F	;���r�b�g�V�t�g
;
	MOVF	TEMP2,W	;�\���f�[�^���o��
	CALL	DISP	;�Z�O�����g�\���o�́A�Tmsec�҂�
	BCF	STATUS,C	;�V�t�g���ɂP������Ȃ��悤��
	RRF	COLUM,F	;���r�b�g�V�t�g
;
	MOVF	TEMP1,W	;�\���f�[�^���o��
	CALL	DISP	;�Z�O�����g�\���o�́A�Tmsec�҂�
	BCF	STATUS,C	;�V�t�g���ɂP������Ȃ��悤��
	RRF	COLUM,F	;���r�b�g�V�t�g
;
	DECFSZ	CNT3,F	;�J��Ԃ��������H
	GOTO	NEXT	;�܂��̎������\���J��Ԃ�
;	INCF	TEMP2,F	;�\���f�[�^�{�P
;
	BTFSS	napion,0	; NaPiOn��Ԃ͂P�H
	GOTO	NAPI2	;  No
;
NAPI1
;***	����NaPiOn��Ԃ��P�̎��iRB0/INT�����ݔ����j����
	CLRF	TMR0	; TMR0�N���A
;
	MOVLW	d'38'
	MOVWF	CNT38	; CNT38�ɂR�W��Z�b�g
	MOVLW	d'10'
	MOVWF	CNT10	; CNT10�ɂP�O��Z�b�g
;
	CLRF	flag10s	; �P�O�b�o�߃t���O�N���A
;
	MOVLW	d'2'
	MOVWF	napion	; NaPiOn��Ԃ�Q�ɂ���
;
	GOTO	MAIN
;
;***	 ����NaPiOn��Ԃ��P�Ŗ���������
NAPI2
	BTFSS	napion,1	; NaPiOn��Ԃ͂Q�H
	GOTO	MAIN	;  No
;
	BTFSS	flag10s,0	; flag10s(10�b�o�߃t���O)=�P�H
	GOTO	MAIN	;  No
;
	CLRF	PORTA	; PORTA��S�Ăn�e�e
	CLRF	PORTB	; PORTB��S�Ăn�e�e
	CLRF	PORTC	;�|�[�gC�����o��
	CLRF	PORTD	;PORTD��S��OFF
	movlw 00h
	movwf buffer
	CLRF	napion	; NaPiOn��Ԃ�O�ɂ���
;
	SLEEP	; �ȓd�̓��[�h�őҋ@�iRB0/INT�����ݑ҂��j
	CALL	WAIT3
;
	GOTO	MAIN
;
;********************************
;�@�\������T�u���[�`��
;�@�Tmsec�҂�
;********************************
DISP
	CALL	GET_7SEG	;�����f�[�^��Z�O�����g�f�[�^�ɕϊ�
	MOVWF	PORTD	;�|�[�gB�փZ�O�����g�f�[�^�o��
	MOVF	COLUM,W	;���f�[�^���o��
	MOVWF	PORTA	;�|�[�gA�֌��f�[�^�o��
	CALL	TIME5M	;5msec�҂��^�C�}�[
	CLRF	PORTD	;���̌��Ɉڂ鎞�̂���‚��h�~
	RETURN
;
;*************************************************
;�@�P�U�i����Z�O�����g�f�[�^�ɕϊ�����
;�@�Z�O�����g�f�[�^��PORTB1�`PORTB7�p�ɂȂ��Ă���
;�@�‚܂�O�r�b�g�ڂ͎g��Ȃ�
;*************************************************
GET_7SEG
	ANDLW	0FH	;���ʂS�r�b�g�̂ݎ��o��
	ADDWF	PCL,F	;PC���W�X�^�ɐ���������ăW�����v
	RETLW	B'01111110'	;Code�@0
	RETLW	B'00001100'	;Code�@1
	RETLW	B'10110110'	;Code�@2�@�����̃f�[�^�����
	RETLW	B'10011110'	;Code�@3�@���^�[��
	RETLW	B'11001100'	;Code�@4
	RETLW	B'11011010'	;Code�@5
	RETLW	B'11111010'	;Code�@6
	RETLW	B'00001110'	;Code�@7
	RETLW	B'11111110'	;Code�@8
	RETLW	B'11001110'	;Code�@9
	RETLW	B'11101110'	;Code�@A
	RETLW	B'11111000'	;Code�@b
	RETLW	B'01110010'	;Code�@C
	RETLW	B'10111100'	;Code�@d
	RETLW	B'11110010'	;Code�@E
	RETLW	B'11100010'	;Code�@F
;
;**************************************
;�@Timer�@Routine
;�@TIM5M:5msec
;**************************************
TIME5M
	MOVLW	9H	;About�@5msec
	MOVWF	CNT2	;
TIMLP2
	CLRF	CNT1	;
TIMLP1
	NOP	;dumy�@nop
	NOP
	DECFSZ	CNT1,F
	GOTO	TIMLP1	;5*256-1
	DECFSZ	CNT2,F
	GOTO	TIMLP2	;10*((5*256-1)+3)-1
	RETURN	;+3=12822*0.4usec=5.1msec
;
;*****	���[�^�P����T�u���[�`��
MTR1ON
;	BSF	PORTC, 5	;�Ԕ����_�C�I�[�h�_��
	RETURN
MTR1OF
;	BCF	PORTC, 5	;�Ԕ����_�C�I�[�h����
	RETURN
;***	���[�^�Q����T�u���[�`��
MTR2ON
;	BSF	PORTC, 3	;�����_�C�I�[�h�_��
	RETURN
MTR2OF
;	BCF	PORTC, 3	;�����_�C�I�[�h����
	RETURN
;
;
;*************�R�C�����ʃT�u���[�`��
;
SHIKIBETSU	
	BTFSC	PORTB,2
	BSF	COIN,4
	BTFSC	PORTB,3
	BSF	COIN,3
	BTFSC	PORTB,4
	BSF	COIN,2
	BTFSC	PORTB,5
	BSF	COIN,1
	BTFSC	PORTB,6
	BSF	COIN,0
	BTFSS	PORTB,7
	GOTO	SHIKIBETSU
	CALL	COUNTUP
	RETURN
;
;*******�V�Z�O���������f�T�u���[�`��
COUNTUP
	MOVF COIN,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW b'00011111' ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ� LABEL2�փW�����v�AZ=0�̂Ƃ� LABEL1�փW�����v
	CALL	YEN500	
	MOVF COIN,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW b'00011110' ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ� LABEL2�փW�����v�AZ=0�̂Ƃ� LABEL1�փW�����v
	CALL	YEN10
	MOVF COIN,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW b'00011100' ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ� LABEL2�փW�����v�AZ=0�̂Ƃ� LABEL1�փW�����v
	CALL	YEN100
	MOVF COIN,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW b'00011000' ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ� LABEL2�փW�����v�AZ=0�̂Ƃ� LABEL1�փW�����v
	CALL	YEN5
	MOVF COIN,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW b'00010000' ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ� LABEL2�փW�����v�AZ=0�̂Ƃ� LABEL1�փW�����v
	CALL	YEN50
	MOVF COIN,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW b'00000000' ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ� LABEL2�փW�����v�AZ=0�̂Ƃ� LABEL1�փW�����v
	CALL	YEN1
;
	MOVLW	00h
	MOVWF	COIN
	RETURN
;
YEN500
;	MOVLW	0C4H	;�E��t
;	MOVLW	88H	;����t
	MOVLW	88H
	MOVWF	CCPR1L	;CCPR1L�ɉ���8�r�b�g�f�[�^��Z�b�g
;	MOVLW	09H	;�E��t
;	MOVLW	13H	;����t
	MOVLW	13H
	MOVWF	CCPR1H	;CCPR1H�ɉ���8�r�b�g�f�[�^��Z�b�g
	BSF	T1CON,TMR1ON	;TMR1��TMR1ON�r�b�g��Z�b�g �J�E���g�J�n
;
	INCF	TEMP2,F	;�\���f�[�^�{�P
	INCF	TEMP2,F	;�\���f�[�^�{�P
	INCF	TEMP2,F	;�\���f�[�^�{�P
	INCF	TEMP2,F	;�\���f�[�^�{�P
	INCF	TEMP2,F	;�\���f�[�^�{�P
	MOVF	TEMP2,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA3
	MOVF	TEMP2,0
	SUBLW	0Bh
	BTFSC	STATUS,Z
	CALL	KETA5_2_1
	MOVF	TEMP2,0
	SUBLW	0Ch
	BTFSC	STATUS,Z
	CALL	KETA5_3_1
	MOVF	TEMP2,0
	SUBLW	0Dh
	BTFSC	STATUS,Z
	CALL	KETA5_4_1
	MOVF	TEMP2,0
	SUBLW	0Eh
	BTFSC	STATUS,Z
	CALL	KETA5_5_1
;
	CALL	WAIT3
	BCF	T1CON,TMR1ON
	RETURN
KETA5_2_1
	MOVLW	01H
	MOVWF	TEMP2
	INCF	TEMP1,F
	MOVF	TEMP1,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CLRF	TEMP1
	RETURN
KETA5_3_1
	MOVLW	02H
	MOVWF	TEMP2
	INCF	TEMP1,F
	MOVF	TEMP1,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CLRF	TEMP1
	RETURN
KETA5_4_1
	MOVLW	03H
	MOVWF	TEMP2
	INCF	TEMP1,F
	MOVF	TEMP1,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CLRF	TEMP1
	RETURN
KETA5_5_1
	MOVLW	04H
	MOVWF	TEMP2
	INCF	TEMP1,F
	MOVF	TEMP1,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CLRF	TEMP1
	RETURN
;
YEN10
;	MOVLW	0C4H	;�E��t
	MOVLW	0F8H	;����t
	MOVWF	CCPR1L	;CCPR1L�ɉ���8�r�b�g�f�[�^��Z�b�g
;	MOVLW	09H	;�E��t
	MOVLW	11H	;����t
	MOVWF	CCPR1H	;CCPR1H�ɉ���8�r�b�g�f�[�^��Z�b�g
	BSF	T1CON,TMR1ON	;TMR1��TMR1ON�r�b�g��Z�b�g �J�E���g�J�n
;
	INCF	TEMP3,F	;�\���f�[�^�{�P
	MOVF TEMP3,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW 0Ah ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ�
	CALL	KETA2 
;	MOVF	01H, 0
;	ADDWF	TEMP4,f
	CALL	WAIT3
	BCF	T1CON,TMR1ON
	RETURN
;
YEN100
;	MOVLW	0C4H	;�E��t
	MOVLW	68H	;����t
	MOVWF	CCPR1L	;CCPR1L�ɉ���8�r�b�g�f�[�^��Z�b�g
;	MOVLW	09H	;�E��t
	MOVLW	10H	;����t
	MOVWF	CCPR1H	;CCPR1H�ɉ���8�r�b�g�f�[�^��Z�b�g
	BSF	T1CON,TMR1ON	;TMR1��TMR1ON�r�b�g��Z�b�g �J�E���g�J�n
;
	INCF	TEMP2,F	;�\���f�[�^�{�P
	MOVF TEMP2,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW 0Ah ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ�
	CALL	KETA3 
;	MOVF	01H, 0
;	ADDWF	TEMP4,f
	CALL	WAIT3
	BCF	T1CON,TMR1ON
	RETURN
;
YEN5
;	MOVLW	0C4H	;�E��t
	MOVLW	0D8H	;����t
	MOVWF	CCPR1L	;CCPR1L�ɉ���8�r�b�g�f�[�^��Z�b�g
;	MOVLW	09H	;�E��t
	MOVLW	0EH	;����t
	MOVWF	CCPR1H	;CCPR1H�ɉ���8�r�b�g�f�[�^��Z�b�g
	BSF	T1CON,TMR1ON	;TMR1��TMR1ON�r�b�g��Z�b�g �J�E���g�J�n
;
	INCF	TEMP4,F	;�\���f�[�^�{�P	
	INCF	TEMP4,F	;�\���f�[�^�{�P	
	INCF	TEMP4,F	;�\���f�[�^�{�P	
	INCF	TEMP4,F	;�\���f�[�^�{�P	
	INCF	TEMP4,F	;�\���f�[�^�{�P
	MOVF	TEMP4,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA1
	MOVF	TEMP4,0
	SUBLW	0Bh
	BTFSC	STATUS,Z
	CALL	KETA5_2
	MOVF	TEMP4,0
	SUBLW	0Ch
	BTFSC	STATUS,Z
	CALL	KETA5_3
	MOVF	TEMP4,0
	SUBLW	0Dh
	BTFSC	STATUS,Z
	CALL	KETA5_4
	MOVF	TEMP4,0
	SUBLW	0Eh
	BTFSC	STATUS,Z
	CALL	KETA5_5
	CALL	WAIT3
	BCF	T1CON,TMR1ON
	RETURN
KETA5_2
	MOVLW	01H
	MOVWF	TEMP4
	INCF	TEMP3,F
	MOVF	TEMP3,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA2
	RETURN
KETA5_3
	MOVLW	02H
	MOVWF	TEMP4
	INCF	TEMP3,F
	MOVF	TEMP3,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA2
	RETURN
KETA5_4
	MOVLW	03H
	MOVWF	TEMP4
	INCF	TEMP3,F
	MOVF	TEMP3,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA2
	RETURN
KETA5_5
	MOVLW	04H
	MOVWF	TEMP4
	INCF	TEMP3,F
	MOVF	TEMP3,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA2
	RETURN
;
YEN50
;	MOVLW	0C4H	;�E��t
	MOVLW	048H	;����t
	MOVWF	CCPR1L	;CCPR1L�ɉ���8�r�b�g�f�[�^��Z�b�g
;	MOVLW	09H	;�E��t
	MOVLW	0DH	;����t
	MOVWF	CCPR1H	;CCPR1H�ɉ���8�r�b�g�f�[�^��Z�b�g
	BSF	T1CON,TMR1ON	;TMR1��TMR1ON�r�b�g��Z�b�g �J�E���g�J�n
;
	INCF	TEMP3,F	;�\���f�[�^�{�P
	INCF	TEMP3,F	;�\���f�[�^�{�P
	INCF	TEMP3,F	;�\���f�[�^�{�P
	INCF	TEMP3,F	;�\���f�[�^�{�P
	INCF	TEMP3,F	;�\���f�[�^�{�P
	MOVF	TEMP3,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA2
	MOVF	TEMP3,0
	SUBLW	0Bh
	BTFSC	STATUS,Z
	CALL	KETA52
	MOVF	TEMP3,0
	SUBLW	0Ch
	BTFSC	STATUS,Z
	CALL	KETA53
	MOVF	TEMP3,0
	SUBLW	0Dh
	BTFSC	STATUS,Z
	CALL	KETA54
	MOVF	TEMP3,0
	SUBLW	0Eh
	BTFSC	STATUS,Z
	CALL	KETA55
	CALL	WAIT3
	BCF	T1CON,TMR1ON
	RETURN
KETA52
	MOVLW	01H
	MOVWF	TEMP3
	INCF	TEMP2,F
	MOVF	TEMP2,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA3
	RETURN
KETA53
	MOVLW	02H
	MOVWF	TEMP3
	INCF	TEMP2,F
	MOVF	TEMP2,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA3
	RETURN
KETA54
	MOVLW	03H
	MOVWF	TEMP3
	INCF	TEMP2,F
	MOVF	TEMP2,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA3
	RETURN
KETA55
	MOVLW	04H
	MOVWF	TEMP3
	INCF	TEMP2,F
	MOVF	TEMP2,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA3
	RETURN
;
YEN1
	MOVLW	0B8H	;�E��t
;	MOVLW	88H	;����t
	MOVWF	CCPR1L	;CCPR1L�ɉ���8�r�b�g�f�[�^��Z�b�g
	MOVLW	0BH	;�E��t
;	MOVLW	13H	;����t
	MOVWF	CCPR1H	;CCPR1H�ɉ���8�r�b�g�f�[�^��Z�b�g
	BSF	T1CON,TMR1ON	;TMR1��TMR1ON�r�b�g��Z�b�g �J�E���g�J�n
;
	INCF	TEMP4,F	;�\���f�[�^�{�P
	MOVF TEMP4,0 ; W���W�X�^��P_CNT�̒l����
	SUBLW 0Ah ; 10-W��v�Z���� ���@10-W=0�̂Ƃ��̂�Z�t���O��1�ƂȂ�
	BTFSC STATUS,Z ; Z=1�̂Ƃ�
	CALL	KETA1
; 
	CALL	WAIT3
	BCF	T1CON,TMR1ON
	RETURN
;
KETA1
	CLRF	TEMP4
	INCF	TEMP3,F
	MOVF	TEMP3,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA2
	RETURN
KETA2
	CLRF	TEMP3
	INCF	TEMP2,F
	MOVF	TEMP2,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CALL	KETA3
	RETURN
KETA3
	CLRF	TEMP2
	INCF	TEMP1,F
	MOVF	TEMP1,0
	SUBLW	0Ah
	BTFSC	STATUS,Z
	CLRF	TEMP1
	RETURN	
;
SPEAKER
	BSF	T2CON,00H	;1X:16	01:4	00:1
	BCF	T2CON,01H	;
	BSF	T2CON,02H	;1:����
	BSF	STATUS,RP0	;�o���N�P
	CLRF	TRISC	;CPORT��3�r�b�g�߂�o�͂�
	MOVLW	0FFH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	BCF	STATUS,RP0	;�o���N0
	MOVLW	030H	;2/3���炢
	MOVWF	CCPR1L	;�f���[�e�B����8�r�b�g
	MOVLW	0AFH	;������3�r�b�g�ڂ̂ݑ���,������2�r�b�g�ڂ�F�Ńp���X0�Œ�~
	MOVWF	CCP1CON	;�f���[�e�B�䉺��2�r�b�g
	
	CALL	WAIT3
	BSF	STATUS,RP0	;�o���N�P
	MOVLW	0CFH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	CALL	WAIT3
	MOVLW	0AFH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	CALL	WAIT3
	MOVLW	08FH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	CALL	WAIT3
	MOVLW	06FH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	CALL	WAIT3
	MOVLW	08FH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	CALL	WAIT3
	MOVLW	0AFH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	CALL	WAIT3
	MOVLW	0CFH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	CALL	WAIT3
	MOVLW	0FFH	;1200HZ�A���l������2400Hz
	MOVWF	PR2	;����
	BCF	STATUS,RP0	;�o���N0
	RETURN
;
;�Ԋu�����pWAIT
WAIT3
	MOVLW	005H
	MOVWF	TCNT3
TLOOP3
	CALL	WAIT2
	DECFSZ	TCNT3
	GOTO	TLOOP3
	RETURN
WAIT2
	MOVLW	0FFH
	MOVWF	TCNT2
TLOOP2
	CALL	WAIT
	DECFSZ	TCNT2
	GOTO	TLOOP2
	RETURN
WAIT
	MOVLW	0FFH
	MOVWF	TCNT
TLOOP
	DECFSZ	TCNT
	GOTO	TLOOP
	RETURN
;
RESET
	CLRF	TEMP1
	CLRF	TEMP2
	CLRF	TEMP3
	CLRF	TEMP4
	RETURN
;
	END