Problem with port A of 16f913


Results 1 to 10 of 10

Threaded View

  1. #1
    Join Date
    Sep 2014
    Posts
    25

    Default Problem with port A of 16f913

    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           
    '__________________________________________________________________________
    Last edited by Archangel; - 28th September 2014 at 17:19.

Similar Threads

  1. Portc 16F913 problem
    By Andre_Pretorius in forum General
    Replies: 3
    Last Post: - 10th May 2012, 13:40
  2. 18F2520 - problem configuring fuse for port B as digital port.
    By hwhisperer in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 11th October 2010, 11:41
  3. 16F913 setup
    By Andre_Pretorius in forum General
    Replies: 31
    Last Post: - 17th April 2010, 23:45
  4. 16F913 RA7 Pin control problem
    By Wayne in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 8th February 2007, 01:53
  5. COM port problem
    By andys280176 in forum Serial
    Replies: 0
    Last Post: - 19th January 2006, 16:42

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts