Digital Ping Pong
Objective: Create a circuit which emulates a “Ping Pong” game with two push buttons. Led lights are supposed to be the emulated ball and the displays are used to show the score. The project is made using a 16F84A microcontroller.

Code:
include<p16f84a.inc>
__config _XT_OSC & _CP_OFF & _WDT_OFF & _PWRTE_ON
CBLOCK 0X10
CONTPA
CONTPB
ENDC
ORG 0
BSF STATUS,RP0
MOVLW 00
MOVWF TRISB
MOVLW 03H
MOVWF TRISA
BCF STATUS,RP0
BCF STATUS,C
BCF STATUS,Z
MOVLW 00
MOVWF PORTB
BSF PORTB,0
INICIO RLF PORTB,F
CALL DELAY
BTFSS PORTB,7
GOTO INICIO
BTFSS PORTA,1
GOTO MARC1
INICIO1 RRF PORTB,F
CALL DELAY
BTFSS PORTB,0
GOTO INICIO1
BTFSS PORTA,0
GOTO MARC2
GOTO INICIO
MARC1 BCF PORTA,2
BSF PORTA,2
GOTO INICIO
MARC2 BCF PORTA,3
BSF PORTA,3
GOTO INICIO1
DELAY MOVLW 00
MOVWF CONTPA
MOVWF CONTPB
DELAY1 DECF CONTPB
BTFSS STATUS,Z
GOTO DELAY1
DECF CONTPA
BTFSS STATUS,Z
GOTO DELAY1
RETURN
END
Servomotor Control
Objective: Develop multi-servomechanism control through PWM signals using a microcontroller.


#include <p16F887.inc>
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
CBLOCK 0X20
BAND
CONT
REGW
REGSTAT
CADL
CADR
RODL
RODR
TOBL
TOBR
CONTVACIO
ACUM
CAM
ENDC
TIEMPAT EQU D'212'
TIEMPO EQU D'210'
VENTANA EQU 017H
DEL EQU D'250'
PASO EQU 01H
ORG 0
GOTO INICIO
ORG 4
TIMER0INT
MOVWF REGW
SWAPF STATUS,W
MOVWF REGSTAT
BCF STATUS,RP0
BCF STATUS,Z
INICIOVENT
MOVLW VENTANA
MOVWF CONT
COMPSERVO
BTFSC BAND,0
GOTO BIT0
BTFSC BAND,1
GOTO BIT1
BTFSC BAND,2
GOTO BIT2
BTFSC BAND,3
GOTO BIT3
BTFSC BAND,4
GOTO BIT4
BTFSC BAND,5
GOTO BIT5
BTFSC BAND,7
GOTO BIT7
GOTO COMPSERVO
BIT0
BSF PORTB,0
GOTO CADERAIZQ
BIT1
BSF PORTB,1
GOTO CADERADER
BIT2
BSF PORTB,2
GOTO RODILLAIZQ
BIT3
BSF PORTB,3
GOTO RODILLADER
BIT4
BSF PORTB,4
GOTO TOBILLOIZQ
BIT5
BSF PORTB,5
GOTO TOBILLODER
BIT7
CLRF CONTVACIO
GOTO VACIO
CADERAIZQ
BCF INTCON,T0IF
MOVLW TIEMPAT
MOVWF TMR0
BTFSS INTCON,T0IF
GOTO $-1
DECFSZ CADL,D
GOTO CONTGENCADL
BCF PORTB,0
CONTGENCADL
BCF BAND,0
BSF BAND,1
DECFSZ CONT,D
GOTO CADERAIZQ
GOTO FIN
CADERADER
BCF INTCON,T0IF
MOVLW TIEMPAT
MOVWF TMR0
BTFSS INTCON,T0IF
GOTO $-1
DECFSZ CADR,D
GOTO CONTGENCADR
BCF PORTB,1
CONTGENCADR
BCF BAND,1
BSF BAND,2
DECFSZ CONT,D
GOTO CADERADER
GOTO FIN
RODILLAIZQ
BCF INTCON,T0IF
MOVLW TIEMPAT
MOVWF TMR0
BTFSS INTCON,T0IF
GOTO $-1
DECFSZ RODL,D
GOTO CONTGENRODL
BCF PORTB,2
CONTGENRODL
BCF BAND,2
BSF BAND,3
DECFSZ CONT,D
GOTO RODILLAIZQ
GOTO FIN
RODILLADER
BCF INTCON,T0IF
MOVLW TIEMPAT
MOVWF TMR0
BTFSS INTCON,T0IF
GOTO $-1
DECFSZ RODL,D
GOTO CONTGENRODR
BCF PORTB,3
CONTGENRODR
BCF BAND,3
BSF BAND,4
DECFSZ CONT,D
GOTO RODILLADER
GOTO FIN
TOBILLOIZQ
BCF INTCON,T0IF
MOVLW TIEMPAT
MOVWF TMR0
BTFSS INTCON,T0IF
GOTO $-1
DECFSZ RODL,D
GOTO CONTGENTOBL
BCF PORTB,4
CONTGENTOBL
BCF BAND,4
BSF BAND,5
DECFSZ CONT,D
GOTO TOBILLOIZQ
GOTO FIN
TOBILLODER
BCF INTCON,T0IF
MOVLW TIEMPAT
MOVWF TMR0
BTFSS INTCON,T0IF
GOTO $-1
DECFSZ RODL,D
GOTO CONTGENTOBR
BCF PORTB,5
CONTGENTOBR
BCF BAND,5
BSF BAND,7
DECFSZ CONT,D
GOTO TOBILLODER
GOTO FIN
VACIO
BCF INTCON,T0IF
MOVLW TIEMPO
MOVWF TMR0
BTFSS INTCON,T0IF
GOTO $-1
GOTO CONTGEN
CONTGEN
BCF BAND,7
BSF BAND,0
DECFSZ CONT,D
GOTO VACIO
MOVLW 01H
ADDWF CONTVACIO,D
BTFSS CONTVACIO,1
GOTO VENT
BSF CONTVACIO,7
DECFSZ ACUM,W
GOTO FIN
BCF STATUS,C
RLF CAM,F
;BTFSS CAM,7
BTFSS STATUS,C
GOTO FIN
MOVLW PASO
MOVWF CAM
GOTO FIN
VENT
MOVLW VENTANA
MOVWF CONT
GOTO VACIO
FIN
BSF BAND,6
BCF STATUS,Z
SWAPF REGSTAT,W
MOVWF STATUS
SWAPF REGW,F
SWAPF REGW,W
BCF INTCON,T0IF
RETFIE
INICIO
BSF STATUS,RP0
CLRF TRISB
MOVLW B'00000000'
MOVWF OPTION_REG
BSF STATUS,RP1
CLRF ANSELH
BCF STATUS,RP1
BCF STATUS,RP0
CLRF PORTB
MOVLW B'10100000'
MOVWF INTCON
CLRF BAND
BSF BAND,0
BSF BAND,6
MOVLW 05H
MOVWF CONT
MOVLW DEL
MOVWF ACUM
MOVLW PASO
MOVWF CAM
TEST
BTFSC CONTVACIO,7
GOTO MOVIMIENTO
BTFSC BAND,6
GOTO INIT
BTFSC CAM,0
GOTO SECUENCIA1
BTFSC CAM,1
GOTO SECUENCIA2
BTFSC CAM,2
GOTO SECUENCIA3
BTFSC CAM,3
GOTO SECUENCIA4
BTFSC CAM,4
GOTO SECUENCIA5
BTFSC CAM,5
GOTO SECUENCIA6
BTFSC CAM,6
GOTO SECUENCIA7
BTFSC CAM,7
GOTO SECUENCIA8
SECUENCIA1
MOVLW 06H
MOVWF CADL
MOVLW 06H
MOVWF CADR
MOVLW 06H
MOVWF RODL
MOVLW 06H
MOVWF RODR
MOVLW 06H
MOVWF TOBL
MOVLW 06H
MOVWF TOBR
GOTO TEST
SECUENCIA2
MOVLW 08H
MOVWF CADL
MOVLW 08H
MOVWF CADR
MOVLW 08H
MOVWF RODL
MOVLW 08H
MOVWF RODR
MOVLW 08H
MOVWF TOBL
MOVLW 08H
MOVWF TOBR
GOTO TEST
SECUENCIA3
MOVLW 0AH
MOVWF CADL
MOVLW 0AH
MOVWF CADR
MOVLW 0AH
MOVWF RODL
MOVLW 0AH
MOVWF RODR
MOVLW 0AH
MOVWF TOBL
MOVLW 0AH
MOVWF TOBR
GOTO TEST
SECUENCIA4
MOVLW 0CH
MOVWF CADL
MOVLW 0CH
MOVWF CADR
MOVLW 0CH
MOVWF RODL
MOVLW 0CH
MOVWF RODR
MOVLW 0CH
MOVWF TOBL
MOVLW 0CH
MOVWF TOBR
GOTO TEST
SECUENCIA5
MOVLW 0EH
MOVWF CADL
MOVLW 0EH
MOVWF CADR
MOVLW 0EH
MOVWF RODL
MOVLW 0EH
MOVWF RODR
MOVLW 0EH
MOVWF TOBL
MOVLW 0EH
MOVWF TOBR
GOTO TEST
SECUENCIA6
MOVLW 10H
MOVWF CADL
MOVLW 10H
MOVWF CADR
MOVLW 10H
MOVWF RODL
MOVLW 10H
MOVWF RODR
MOVLW 10H
MOVWF TOBL
MOVLW 10H
MOVWF TOBR
GOTO TEST
SECUENCIA7
MOVLW 12H
MOVWF CADL
MOVLW 12H
MOVWF CADR
MOVLW 12H
MOVWF RODL
MOVLW 12H
MOVWF RODR
MOVLW 12H
MOVWF TOBL
MOVLW 12H
MOVWF TOBR
GOTO TEST
SECUENCIA8
MOVLW 14H
MOVWF CADL
MOVLW 14H
MOVWF CADR
MOVLW 14H
MOVWF RODL
MOVLW 14H
MOVWF RODR
MOVLW 14H
MOVWF TOBL
MOVLW 14H
MOVWF TOBR
GOTO TEST
INIT
MOVLW B'11011111'
MOVWF TMR0
BCF BAND,6
GOTO TEST
MOVIMIENTO
DECFSZ ACUM,F
GOTO MOVIMIENTO1
MOVLW DEL
MOVWF ACUM
MOVIMIENTO1
BCF CONTVACIO,7
GOTO TEST
END