Microcontroller Circuits

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