0% found this document useful (0 votes)
57 views8 pages

LEBO

The document describes a PIC microcontroller code for a binary counter. The code uses PORTA pins as inputs to control the direction and operation of the counter. PORTB is used as the output to display the 4-bit binary count. The counter counts up or down depending on the input and displays errors for invalid input combinations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views8 pages

LEBO

The document describes a PIC microcontroller code for a binary counter. The code uses PORTA pins as inputs to control the direction and operation of the counter. PORTB is used as the output to display the 4-bit binary count. The counter counts up or down depending on the input and displays errors for invalid input combinations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

LEROTHOLI POLYTECHNIC

SCHOOL OF ENGINEERING
AND
TECHNOLOGY

Student Number: 201800602EE

Surname & Other Names: LEBOHANG MOLEFE

Program:
Diploma: Engineering electrical and electronic

Subject Name: Digital Systems III

Subject Code: DIG221

Assignment Number: 4

Due Date: 22 J U N 2 0 2 2

Lecturer: TP Raliete

Declaration of own work

I hereby declare that this assignment is my own work and that it has not been copied from any
other person or document.

.......................................................... ......................................................

Signature Date
FLOW CHART

CODE
;STUDENT NUMBER: 202000658CSE
;FULL NAME: MULANE TAAIBOSCH
;DATE

LIST P = PIC16F84A ; SELECTING THE PIC


#INCLUDE<P16F84A.INC> ; EXTRACTING THE LIBRARY

BSF STATUS,5 ; MOVING INTO BANK1


MOVLW 0XFF ; LOADING THE WORKING REGISTER WITH 0X22
MOVWF TRISA ; MAKING ALL PORTA PINS INPUTS
CLRF TRISB ; MAKING ALL PORTB PINS OUTPUTS
BCF STATUS,5

TEMP EQU 00CH ; ASSIGNING TEMP TO ADDRESS (00CH)


OUT EQU 00Dh ; ASSIGNING OUT TO ADDRESS (00DH)
MOVLW 0X3F ; MOVING LETERAL INTO W
MOVWF OUT ; MOVING THE CONTENTS OF W INTO FILE
START EQU 00EH ; ASSIGNING START TO ADDRESS (00EH)
D1 EQU H'20' ; ASSIGNING D1 TO HEX20
D2 EQU H'21' ; ASSIGNING D1 TO HEX21
D3 EQU H'22' ; ASSIGNING D1 TO HEX22

TEST1 BTFSS PORTA,0 ; TESTING PORTA PIN(0)


GOTO TEST3 ; IF THE VALUE IS ZERO GOTO TEST3
GOTO TEST2 ;ELSE GOTO TEST2

TEST2 BTFSS PORTA,1 ; TESTING PORTA PIN(1)


GOTO UP ; IF THE VALUE IS ZERO GOTO UP
GOTO ERROR1 ; ELSE GOTO ERROR1

TEST3 BTFSS PORTA,1 ; TESTING PORTA PIN (1)


GOTO STOP ; IF THE VALUE IS ZERO GOTO STOP
GOTO DOWN ; ELSE GOTO DOWN

UP MOVF OUT,0 ; MOVING THE CONTENTS OF FILE INTO W


MOVWF PORTB ; MOVING THE VALUE OF W INTO FILE
(PORTB)
INCF TEMP,1 ; INCREMENTING TEMP
BSF START,0 ; SETING PIN (0) OF START
GOTO TB0 ; GOTO TB0

DOWN MOVF OUT,0 ; MOVING THE CONTENTS OF FILE INTO W


MOVWF PORTB ; MOVING THE VALUE OF W INTO FILE
(PORTB)
DECF TEMP,1 ; DECREMENT TEMP
BSF START,0 ; SETING PIN (0) OF START
BTFSS TEMP,5 ; TESTING PIN5 OF TEMP
GOTO TB0 ; GOTO TB0
MOVLW 0XA ; MOVING LETERAL INTO W
ANDWF TEMP,1 ; ADDING THE CONTENTS OF THE WORKING
REGISTER WITH FILE
GOTO TEST1 ; GOTO TEST1

STOP BTFSS START,0 ; TESTING PIN (0) OF START


GOTO TEST1 ; GOTO TEST1
MOVF OUT,1 ; ELSE TAKE THE CONTENTS OF OUT INTO
FILE
GOTO OUTPUT ; GOTO OUTPUT

ERROR1 CLRF TEMP ; CLEARING FILE TEMP


MOVLW 0X3F ; MOVING LETERAL INTO W
MOVWF PORTB ; MOVE W INTO FILE
NOP ; NO OPERATION
NOP ; NO OPERATION
CLRF PORTB ; CLAERING PORTB
MOVWF OUT ; MOVING CONTENTS OF W INTO F
GOTO TEST1 ; LOOPING TO TEST1
TB0 BTFSS TEMP,0 ; TESTING TEMP PIN(0)
GOTO TA ; IF THE VALUE IS ZERO, GOTO TA
GOTO TA1 ; ELSE GOTO TA1

TA BTFSS TEMP,1 ; TESTING TEMP PIN(1)


GOTO TB ; IF THE VALUE IS ZERO, GOTO TB
GOTO TB1 ; ELSE GOTO TB1

TB BTFSS TEMP,2 ; TESTING TEMP PIN(2)


GOTO TC ; IF THE VALUE IS ZERO, GOTO TC
GOTO TC3 ; ELSE GOTO TC3

TC BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET0 ; IF THE VALUE IS ZERO, GOTO SET0
GOTO SET8 ; ELSE GOTO SET8

TC3 BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET4 ; IF THE VALUE IS ZERO, GOTO SET4
GOTO CLEAR ; ELSE GOTO CLEAR

TB1 BTFSS TEMP,2 ; TESTING TEMP PIN(2)


GOTO TC1 ; IF THE VALUE IS ZERO, GOTO TC1
GOTO TC2 ; ELSE GOTO TC2

TC1 BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET2 ; IF THE VALUE IS ZERO, GOTO SET2
GOTO SET10 ; ELSE GOTO SET10

TC2 BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET6 ; IF THE VALUE IS ZERO, GOTO SET6
GOTO CLEAR ; ELSE GOTO CLEAR

TA1 BTFSS TEMP,1 ; TESTING TEMP PIN(1)


GOTO TB2 ; IF THE VALUE IS ZERO, GOTO TB2
GOTO TB3 ; ELSE GOTO TB3

TB2 BTFSS TEMP,2 ; TESTING TEMP PIN(2)


GOTO TC5 ; IF THE VALUE IS ZERO, GOTO TC5
GOTO TC4 ; ELSE GOTO TC4

TC5 BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET1 ; IF THE VALUE IS ZERO, GOTO SET1
GOTO SET9 ; ELSE GOTO SET9

TC4 BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET5 ; IF THE VALUE IS ZERO, GOTO SET5
GOTO CLEAR ; ELSE GOTO CLEAR

TB3 BTFSS TEMP,2 ; TESTING TEMP PIN(2)


GOTO TC6 ; IF THE VALUE IS ZERO, GOTO TC6
GOTO TC7 ; ELSE GOTO TC7

TC6 BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET3 ; IF THE VALUE IS ZERO, GOTO SET3
GOTO CLEAR ; ELSE GOTO CLEAR

TC7 BTFSS TEMP,3 ; TESTING TEMP PIN(3)


GOTO SET7 ; IF THE VALUE IS ZERO, GOTO SET7
GOTO CLEAR ; ELSE GOTO CLEAR

SET0 MOVLW 0X3F ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET1 MOVLW 0X06 ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET2 MOVLW 0X5B ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET3 MOVLW 0X4F ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET4 MOVLW 0X66 ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET5 MOVLW 0X6D ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET6 MOVLW 0X7D ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET7 MOVLW 0X7 ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT
SET8 MOVLW 0X7F ; MOVING LETERAL INTO W
MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET9 MOVLW 0X6F ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
GOTO OUTPUT ; GOTO OUTPT

SET10 MOVLW 0X3F ; MOVING LETERAL INTO W


MOVWF OUT ; MOVING CONTENTS OF THE WORKING
REGISTER INTO FILE
CLRF TEMP ; CLEARING TEMP
GOTO OUTPUT ; GOTO OUTPT

OUTPUT MOVF OUT,0 ; MOVINGG THE CONTENTS OF FILE INTO THE


WORKING REGISTER
MOVWF PORTB ; MOVING CONTENTS OF WORKING REGISTER
INTO FILE
CALL DELAY ; CALLING DELAY FUNCTION
GOTO TEST1 ; LOOPING BACK TO TEST1

CLEAR CLRF TEMP ; CLEARING FILE TEMP


GOTO TEST1 ; GOTO TEST1

DELAY MOVLW D'5' ; MOVING LETERAL INTO W


MOVWF D1 ; MOVING CONTENTS OF W INTO FILE

LOOP1: MOVLW D'255' ; MOVING LETERAL INTO W


MOVWF D2 ; MOVING CONTENTS OF W INTO FILE

LOOP2: MOVLW D'255' ; MOVING LETERAL INTO W


MOVWF D3 ; MOVING CONTENTS OF W INTO FILE

LOOP3: DECFSZ D3,F ; DECREMENTING FILE (D3) AND SKIP IF


ZERO
GOTO LOOP3 ; LOOPING BACK OT LOOP3

DECFSZ D2,F ; DECREMENTING FILE (D2) AND SKIP IF


ZERO
GOTO LOOP2 ; LOOPING BACK OT LOOP2

DECFSZ D1,F ; DECREMENTING FILE (D1) AND SKIP IF


ZERO
GOTO LOOP1 ; LOOPING BACK OT LOOP1

RETURN ; RETUNING DELAY


END ; END OF THE PROGRAM

CIRCUIT DIAGRAM
TRUTH TABLE
RA1 RA0 P0RTB
0 0 COUNTING STOP
0 1 COUNT DOWN
1 0 COUNT UP
1 1 ERROR

You might also like