LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG H'3F31'
SAYAC1 EQU H'20'
SAYAC2 EQU H'21'
ADIM EQU H'22'
SAYAC EQU H'23'
ADET EQU H'24'
DISPLAY EQU H'25'
BSF STATUS,5
CLRF TRISB
CLRF TRISC
CLRF TRISD
BCF STATUS,5
BSF STATUS,RP0
MOVLW 0x06
MOVWF ADCON1
MOVLW 0xCF
MOVWF TRISA
BCF STATUS,RP0
CLRF PORTD
CLRF ADET
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF SAYAC
CLRF DISPLAY
MOVLW H'FF'
MOVWF ADIM
MOVLW D'10'
MOVWF ADET
MOVLW D'4000'
MOVWF SAYAC
BASLA
BTFSC PORTA,0
GOTO BASLA
SAG
BTFSC PORTA,1
GOTO SOL
MOVLW D'50'
MOVWF ADET
SAGDVM
MOVF DISPLAY,ADET
MOVLW DISPLAY
MOVWF PORTB
CALL MOTORSAG
DECFSZ ADET,F
GOTO SAGDVM
GOTO BASLA
SOL
BTFSC PORTA,2
GOTO SAG
MOVLW D'10'
MOVWF ADET
SOLDVM
CALL MOTORSOL
DECFSZ ADET,F
GOTO SOLDVM
GOTO BASLA
MOTORSAG
INCF ADIM,F
MOVF ADIM,W
ANDLW B'00000111'
CALL CEVRIM
MOVWF PORTC
MOVWF PORTB
CALL GECIKME
CALL GECIKME
CALL GECIKME
CALL GECIKME
RETURN
MOTORSOL
DECF ADIM,F
MOVF ADIM,W
ANDLW B'00000111'
CALL CEVRIM
MOVWF PORTC
MOVWF PORTB
CALL GECIKME
CALL GECIKME
CALL GECIKME
CALL GECIKME
RETURN
CEVRIM
ADDWF PCL,F
RETLW B'0001'
RETLW B'1001'
RETLW B'1000'
RETLW B'1100'
RETLW B'0100'
RETLW B'0110'
RETLW B'0010'
RETLW B'0011'
RETURN
GECIKME
MOVLW H'FF'
MOVWF SAYAC1
D1
MOVLW H'FF'
MOVWF SAYAC2
D2
DECFSZ SAYAC2,F
GOTO D2
DECFSZ SAYAC1,F
GOTO D1
RETURN
END