كود:
list p=16F84A
#include <p16F84A.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
PORTB EQU 0x0006
TRISB EQU 0x0086 ;
STATUS EQU 0x0003 ;
PORTA EQU 0x0005 ;
TRISA EQU 0x0085 ;
STATUS EQU 0X0003
AA EQU 0x000C
BB EQU 0x000D
CC EQU 0Eh
DD EQU 0Fh
ALPHA EQU 10h
BETA EQU 11h
WSTOR EQU 12h
STORSTATUS EQU 13h
DEBO EQU 14h
OPTION_REG EQU 0x0081
tmr0 EQU 01h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#DEFINE BANK1 BSF STATUS,05
#DEFINE BANK0 BCF STATUS,05
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 00H
GOTO STAR
ORG 04H
MOVWF WSTOR
SWAPF STATUS,W
MOVWF STORSTATUS
;*****************
INCF DEBO
BCF STATUS,Z
MOVLW 12h
SUBWF DEBO,w
BTFSS STATUS,Z
GOTO CHANCE
;*****************
CLRF PORTA
CLRF PORTB
CLRF DEBO
CLRF TMR0
CHANCE
;*****************
BCF INTCON,2
BCF INTCON,0
SWAPF STORSTATUS,W
MOVWF STATUS
SWAPF WSTOR,F
SWAPF WSTOR,W
RETFIE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STAR
BANK1
MOVLW b'00001111'
MOVWF TRISB
MOVLW b'11110000'
MOVWF TRISA
MOVLW b'10000101'
MOVWF OPTION_REG
BSF INTCON,5
BSF INTCON,7
;;;;;;;;;
BANK0
CLRF PORTA
CLRF DEBO
CLRF TMR0
BECHAR
BTFSS PORTB,0
GOTO BECHAR
CALL US500
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
CLRF ALPHA
CLRF BETA
BTFSC PORTB,0
BSF ALPHA,0
BTFSS PORTB,0
BCF ALPHA,0
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSC PORTB,0
BSF ALPHA,1
BTFSS PORTB,0
BCF ALPHA,1
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSC PORTB,0
BSF ALPHA,2
BTFSS PORTB,0
BCF ALPHA,2
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSC PORTB,0
BSF ALPHA,3
BTFSS PORTB,0
BCF ALPHA,3
LLL
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BTFSC PORTB,0
BSF BETA,0
BTFSS PORTB,0
BCF BETA,0
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSC PORTB,0
BSF BETA,1
BTFSS PORTB,0
BCF BETA,1
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSC PORTB,0
BSF BETA,2
BTFSS PORTB,0
BCF BETA,2
CALL T1ms
BTFSC PORTB,0
GOTO BECHAR
CALL T1ms
BTFSS PORTB,0
GOTO BECHAR
CALL T1ms
BTFSC PORTB,0
BSF BETA,3
BTFSS PORTB,0
BCF BETA,3
MOVF ALPHA,W
BCF STATUS,2
SUBWF BETA,W
BTFSS STATUS,2
GOTO BECHAR
MOVF BETA,W
MOVWF PORTA
CALL MS18
CLRF DEBO
CLRF TMR0
GOTO BECHAR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MS18
MOVLW 0x13 ; ajuste
MOVWF BB
loop3
MOVLW 0xF8; ajuste fine
MOVWF AA ;
lop1
NOP
DECFSZ AA
GOTO lop1
DECFSZ BB
GOTO loop3
RETURN
;;;;;;;;;;;;;;;;;;;;;
T1ms
MOVLW 0xF6
MOVWF AA
LOOP1
NOP
DECFSZ AA
GOTO LOOP1
RETURN
;;;;;;;;;;;;;;;;;;;;
US200
MOVLW 0x30
MOVWF AA
LOOP4
NOP
DECFSZ AA
GOTO LOOP4
RETURN
;;;;;;;;;;;;;;;;;;;
US100
MOVLW 0x17
MOVWF AA
LOP4
NOP
DECFSZ AA
GOTO LOP4
NOP
NOP
RETURN
;;;;;;;;;;;;;;;;
US50
MOVLW 0x9
MOVWF AA
LOPA
NOP
DECFSZ AA
GOTO LOPA
NOP
NOP
RETURN
;;;;;;;;;;;;;;;;
US5
NOP
NOP
NOP
NOP
NOP
RETURN
;;;;;;;;;;;;;;;;
US500
CALL US200
CALL US200
CALL US100
RETURN
END