Z
zkt
Guest
Následující kód běží v pořádku, když je hodnota záběru umístěna uvnitř procedury Sub I2C_send_byte. Ale pokud je nastaven před voláním sub, sda nezmění-li kód běží v sub. A SCL změny řádně uvnitř i vně ponorky. Ze dvou způsobů psaní pokud řádek ani jedna z nich pracuje. Já jsem uvízl. Ocenil jakoukoliv pomoc.
Code:
nedělního programu "pic 16F87 dim skus, bit, byte tmp jako" dim const tda_adr jako byte =% 10001000 procedura Sub I2C_send_byte "kousat =% 10101010 bez tohoto řádku způsobí, sda se nezmění bit = 0 7 TRISB = 0 delay_us (50) "Je-li ((kousat a 128) = 128), pak v případě kousnutí a 128 = 128 pak TRISA = 128 'nastavení TDA vysoké, pokud proud tda_data bit je vysoká jinak TRISA = 0' nastavení jiného TDA low-end Pokud skus = skus PORTB je výstup. Od PORTB = 0 = portb.7 logické 0 TRISA = 128 delay_us (50) TRISA = 0 'TRISB = 128 => portb.7 je vstup. s ničím tahat nízké napětí delay_us (50) "RPU se bude tahat napětí vysoké a portb.7 = vysoký TRISB = 0 vrátí i2c_stop: delay_us (50) TRISB = 1 = 0 TRISA delay_us (50) TRISA = 128 delay_us ( 50) návrat konec.