překladač MCC18

Ahoj , mám prosbu ohledně programování s překladačem od Microchipu MCC18.
Používám PIC18F1220 a když napíšu tento sled příkazů

TRISBbits.TRISB0 = 0x00; // nastav pin jako vystupni
PORTBbits.RB0 = 0x00; // nastav pin do log. 0
TRISBbits.TRISB1 = 0x01; // nastav pin jako vstupni

Chci pomocí tlačítka na pinu RB1 měnit stav log. úrovně na pinu RB0.
Bohužel , když stisknu tlačítko , nic se neděje a změna stavu na pinu RB0 zůstane pořád stejná.
Nevíte , co s tím? díky

Já picům absolutně nerozumím, ale jako ostřílený programátor mě trkne to, že tam nevidim žádnou smyčku, která by cyklicky nastavovala RB0 podle RB1. - to je jedna věc. A druhá věc je že nevidim nikde příkaz, který přečte stav bitu RB1 a podle toho nastaví RB0.

TRISBbits.TRISB0 = 0x00; // nastav pin jako vystupni
PORTBbits.RB0 = 0x00; // nastav pin do log. 0
TRISBbits.TRISB1 = 0x01; // nastav pin jako vstupni
while (true) {
PORTBbits.RB0 = PORTBbits.RB1
}

Nevim jestli jsem pochopil správně tvůj problém, a jestli jsem správně vymyslel ten program. V céčku pro čipy nedělám, tak nevim co všechno MCU C kompilery skousnou :slight_smile:
Zatím ahoj, Honza

jj , jasný , smyčku jsem nenapsal , protže se mi zdála tak easy , že jsem na ni zapomněl
smyčka :
if(PORTBbits.RB1 == 0) { PORTBbits.RB0 = 1;
}
if(PORTBbits.RB1 == 1) { PORTBbits.RB0 = 0;
}

zjistil jsem , že když změním vstupní bránu z PORTB na PORTA , tak tlačítko
začne pracovat.Jakoby musel platit fakt ,že brána PORTB nebo PORTA musí být vždy buď pouze vstupní nebo výstupní.
S timto problémem se setkávám poprvé, jelikož jsem zatím převážně programoval PIC16 , PIC12.
:wink:

Chybu máš nejspíš v inicializaci PORTB. Bity RB1,RB2,RB4 brány B jsou defaultně po resetu nastaveny jako analogové. Totéž platí pro PORTA RA0-RA3 Z toho plyne, že při čtení těchto bitů přečteš nezávisle na stavu vstupu “L”. Musíš přepnout v registru ADCON1 odpovídající bity z analogu do digitálního módu. Není to nic nového, stejně se chová třeba 12F675 apod.

jj , máš prvadu , záhada odhalena.
Měl jsem na bráně PORTB nastaveny analogové vstupy.
změnil jsem to v ADCON1 a šlape to.
díky za pomoc :slight_smile: