Iam making an up down counter using 16f913.Iam not able to make portA pins as input A2,A4,A5
Iam using active low buttons
My code Is:
Code:DG1 VAR BYTE DG2 VAR BYTE DG3 VAR BYTE DIGIT VAR BYTE DG VAR BYTE COUNTT VAR BYTe N VAR WORD pbutton var porta.2 ibutton var porta.5 i var byte temp var byte NUMB VAR WORD DEFINE BUTTON_PAUSE 50 ADCON1=0 TRISA=1 TRISB=0 TRISC=%00000111 osccon=$60 N=NUMB GOSUB DIGITCALC numb=0 MAIN: gosub display if pbutton=0 then UP IF PBUTTON=0 THEN down GOTO MAIN '------------------------------------------------------------------------- '_____________________________________ UP: IF NUMB=400 THEN MAIN numb=NUMB+1 GOSUB DIGITCALC N=NUMB GOTO MAIN '_____________________________________ '_____________________________________ DOWN: IF NUMB=0 THEN MAIN numb=NUMB-1 GOSUB DIGITCALC N=NUMB GOTO MAIN '_____________________________________ '_____________________________________ ___________ DISPLAY: 'DATA FOR DG1,DG2,DG3 IS PUT ON PORTC AND THE CORRESPONDING 'PINS ON PORTB TOGGLED 'THIS IS DONE 100 TIMES FOR COUNTT=0 TO 99 PORTB=DG1 PORTC.5=1 PAUSE 1 PORTC.5=0 PORTB=DG2 PORTC.6=1 PAUSE 1 PORTC.6=0 PORTB=DG3 PORTC.7=1 PAUSE 1 PORTC.7=0 NEXT COUNTT RETURN '________________________________________________________________ '__________________________________________________________________________ DIGITCALC: 'THIS ROUTINE BREAKS UP THE NUMBER INTO 3 DISTINCT PARTS - DG1,DG2,DG3 'NOTICE THAT ANOTHER SUBROUTINE IS CALLED EACH TIME DIGIT=0 LP1: IF N<100 THEN DS1 N=N-100 DIGIT=DIGIT+1 GOTO LP1 DS1: GOSUB FND DG1=DG DIGIT=0 LP2: IF N<10 THEN DS2 N=N-10 DIGIT=DIGIT+1 GOTO LP2 DS2: GOSUB FND DG2=DG DIGIT=N GOSUB FND DG3=DG return '__________________________________________________________________________ '__________________________________________________________________________ FND: 'THIS ROUTINE IDENTIFIES THE SEGMENTS TO LIGHT UP '7 SEGMENTS WIRED UP AS FOLLOWS 'A -PORTC.2 'B -PORTC.3 'C -PORTC.6 'D -PORTC.5 'E -PORTC.4 'F -PORTC.1 'G -PORTC.0 FND0: IF DIGIT>0 THEN FND1 DG=$3F GOTO FNDEND FND1: IF DIGIT>1 THEN FND2 DG=$6 GOTO FNDEND FND2: IF DIGIT>2 THEN FND3 DG=$5B GOTO FNDEND FND3: IF DIGIT>3 THEN FND4 DG=$4F GOTO FNDEND FND4: IF DIGIT>4 THEN FND5 DG=$66 GOTO FNDEND FND5: IF DIGIT>5 THEN FND6 DG=$6D GOTO FNDEND FND6: IF DIGIT>6 THEN FND7 DG=$7D ' GOTO FNDEND FND7: IF DIGIT>7 THEN FND8 DG=$7 ' GOTO FNDEND FND8: IF DIGIT>8 THEN FND9 DG=$7F GOTO FNDEND FND9: DG=$67 FNDEND: RETURN '__________________________________________________________________________




Bookmarks