1. Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.
    Dismiss Notice

Need someone to test code in your board (MikroBasic)

Discussion in 'Circuit Simulation & PCB Design' started by biboymusic, Jul 19, 2010.

  1. biboymusic

    biboymusic Member

    Joined:
    May 23, 2010
    Messages:
    79
    Likes:
    0
    Location:
    General Santos City
    I just finished coding and I can't seem to get RB0 interrupt to work. Can anyone test this code for me and verify if it is my board that's faulty. Thanks.

    Code (text):
    program Speedometer

    ' Declarations section
      Dim cntr as integer
      Dim ovrflw as integer
      Dim speed as integer
      Dim spddisp as string[3]

    Sub procedure interrupt
        if INTCON.INTF = 1 then
           cntr = cntr + 1
           INTCON.INTF = 0
        end if
        if INTCON.T0IF = 1 then
           ovrflw = ovrflw + 1
           INTCON.T0IF = 0
        end if
    end sub

    sub function Mask(dim num as byte) as byte    'Chnge values to suit your 7 seg conf
      select case num                              
        case 0  result = 252
        case 1  result = 48
        case 2  result = 218
        case 3  result = 122
        case 4  result = 54                       '00110110
        case 5  result = 110                      '01101110
        case 6  result = 238                      '11101110
        case 7  result = 56                       '00111000
        case 8  result = 254                      '11111110
        case 9  result = 126                      '01111110
      end select                                  'case end
    end sub

    main:
    '   Main program
    '   Main program
        TRISB = %00000001
        TRISA = 0
        OPTION_REG = %11011000
       
        'Test
        PORTA = 0
        PORTB = Mask(8)
        Delay_ms(1000)
        PORTA = 1
        speed = 123
        'End Test

        while TRUE
              cntr = 0
              ovrflw = 0
              INTCON = %10110000
              while (ovrflw < 3906)               'Wait 1 sec: 3906 = 4000000 / 4 / 256
                    'Display speed here           'Test Formula: (1 Rotation x 60 x 60) / 1000
                    PORTA.1 = 0
                    PORTB = Mask(spddisp[0])
                    delay_ms(5)
                    PORTA.1 = 1
                    PORTA.2 = 0
                    PORTB = Mask(spddisp[1])
                    delay_ms(5)
                    PORTA.2 = 1
                    PORTA.3 = 0
                    PORTB = Mask(spddisp[2])
                    delay_ms(5)
                    PORTA.3 = 1
              wend
              INTCON.GIE = 0
              speed = (cntr * 60 * 60) div 1000
              IntToStr(speed, spddisp)
        wend
    end.
     
    Last edited: Jul 19, 2010
  2. bluesam

    bluesam New Member

    Joined:
    May 26, 2010
    Messages:
    59
    Likes:
    0
    Location:
    Indonesia
    what's the PIC microcontroller that you work with?
     
  3. biboymusic

    biboymusic Member

    Joined:
    May 23, 2010
    Messages:
    79
    Likes:
    0
    Location:
    General Santos City
    I'm using the obsolete PIC16F84 as I have alot of them lying around from my legacy projects. If you can adopt it to other PIC's and assure me that RB0 interrupt works, then that would be fine.
     

Share This Page