logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak napisać program w microbasicu dla PIC16F84A z warunkami na portach A0 i A1?

6.50 22 Maj 2010 16:58 1694 4
REKLAMA
  • #1 8105936
    6.50
    Poziom 15  
    Posty: 98
    Pomógł: 9
    Ocena: 6
    Potrzebuje prosty program w microbasicu do pica 16f84a który :
    jeżeli na porcie a0 stan niski to wykonaj PB0 = 1 , PB0 = 0 , PB1 = 1 , PB2 = 1 , PB2 = 0 i tak do pinu PB6
    jeżeli na porcie A1 stan niski to poczekaj 2 sekundy , PB7 = 1 , PB7 = 0

    w Bascomie na AT90S2313 wygląda to tak

    Config Portb = &B11111111                                   ' cały port B jako wyjście
             Portb = &B00000000                                 ' wszystkie wyjścia w stanie "1"
    Config Portd = &B1111100                                    ' PD0 i PD1 - wejścia, pozostałe - wyjścia
             Portd = &B0000011                                  ' PD0 do PD6 podciągnięte do "1"
    
    Do
      If Pind.0 = 0 Then
       Waitms 500
       Portb.0 = 1                                              
       Waitms 200
       Portb.0 = 0                                              
       Waitms 200
       Portb.1 = 1                                              
       Waitms 200
       Portb.1 = 0
       Waitms 200
       Portb.2 = 1                                              
       Waitms 200
       Portb.2 = 0
       Waitms 200
       Portb.3 = 1                                              
       Waitms 200
       Portb.3 = 0
       Waitms 200
       Portb.4 = 1                                              
       Waitms 200
       Portb.4 = 0
       Waitms 200
       Portb.5 = 1                                              
       Waitms 200
       Portb.5 = 0
       Waitms 200
       Portb.6 = 1                                             
       Waitms 200
       Portb.6 = 0
       Waitms 200
       End If
     If Pind.1 = 0 Then
      Waitms 2000                                               '2 s
      Portb.7 = 1                                               'start
      Waitms 200
      Portb.7 = 0
      Waitms 200
      End If
    Loop
    End



    AT90S2313 działa beż zarzutu niestety z PICem nie mogę sobie poradzić.

    Proszę umieścić kod w znacznikach code!
    Robak
    [code]
  • REKLAMA
  • #2 8106235
    utak3r
    Poziom 25  
    Posty: 741
    Pomógł: 60
    Ocena: 5
    Kod w mikroC, więc tylko lekka przeróbka potrzebna:

    
    if (~PORTA.B0)
    {
        PORTB.B0 = 1;
        PORTB.B0 = 0;
        PORTB.B1 = 1;
        PORTB.B1 = 0;
        ..........
    }
    if (~PORTA.B1)
    {
        Delay_ms(2000);
        PORTB.B7 = 1;
        PORTB.B7 = 0;
    }
    


    Dodano po 2 [minuty]:

    Acha - czy odpowiednio porty skonfigurowałeś? Tutaj zależy trochę od konkretnego procka, ale mniej więcej:
    TRISA = 0b00000011;
    TRISB = 0;

    i jeśli w tym akurat potrzeba, to CMCON = 7.
  • REKLAMA
  • #3 8106264
    6.50
    Poziom 15  
    Posty: 98
    Pomógł: 9
    Ocena: 6
    Właśnie chyba w konfiguracji portów popełniam błąd . Jak możesz to napisz mi całość .
  • REKLAMA
  • #4 8111318
    utak3r
    Poziom 25  
    Posty: 741
    Pomógł: 60
    Ocena: 5
    Tak teraz patrzę.... Twoja konfiguracja portów jest... dokładnie zanegowana!
    TRISB = 0;
    PORTB = 0xff;
    TRISD = 0b00000011;
    PORTD = 0x00100001;


    Proszę umieścić kod w znacznikach code!
    Robak

    już, już......
  • #5 8112740
    6.50
    Poziom 15  
    Posty: 98
    Pomógł: 9
    Ocena: 6
    Niestety po wielu próbach PIC nie ma ochoty ze mą współpracować . Jedyne co mi się udało na niego napisać a właściwie przepisać to migająca dioda . Moja cierpliwość się skończyła i układ do którego to potrzebowałem zrobiłem na AT90S2313 . W tej sytuacji temat już nieaktualny .Dzięki za pomoc .
REKLAMA