学部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