Witam! Jestem w posiadaniu programu na uC PIC12F675. Program ma oczywiście dołączone includy, a w nich jest kilka definicji, których nie rozumię. Mianowicie: plik: f675.h posiada takie wpisy:
#bit gpio_0 = 0x05.0 ... #bit gpio_5 = 0x05.5
#bit trisio_0 = 0x085.0 ... #bit trisio_5 = 0x085.5
W programie natomiast, mam przykładowo takie linijki:
(...) #define red pin_a2 #define out gpio_5 //port sterujacy tranzystorem main() { (...) pcon=0; cmcon=7; //porty jako cyfrowe trisio_5=0; out=0; //tranzystor wylaczony
Jedncześnie mam dalej w programie np.
output_high(red); delay_ms(2000); output_low(red);
Nie wiem czy ktoś odpowie na moje pytania, bo pewnie musiałby mieć includy u siebie, żeby zobaczyć, no ale spróbuję.
1) Co znaczy definicja np trisio_5 ? Co to jest trisio ? Patrzyłem w manuala i doszukałem się, że to rejestr za pomocą którego definiować można czy ma być port wyjściem, czy wejściem. Skoro tak, to dlaczego ktoś, kto tworzył program akurat tylko pin 5 zdefiniował przez trisio ? Przecież np pin_a2, też jest wyjściem, skoro daje sygnał na diodę led. Zauwazyłem również, że inaczej podaje się stany na piny w tych dwóch sposobach (pin_a2 oraz trisio_5). Dla pinu_a2 jedynkę dajemy przez output_high(red);, a gasimy output_low(red); W przypadku trisio jest to out=1; i out=0; Jaka jest różnica w tych dwóch przypadkach ? Poza tym zastanawia mnie, dlaczego port 5 został zdefiniowany jako gpio_5, a nie np. #define out pin_a5 ?2) Nastepne pytanie to linijki: pcon=0; cmcon=7; Jak rozumieć ten zapis ?
3) I ostatnie pytanie: Mam dołączony include z obsługą 1-wire (bo to czytnik ROM DS1990). Jest następujący:#ifndef TOUCH_PIN #define TOUCH_PIN PIN_A0 #bit TOUCH_PIN_BIT = 5.0 #endif
(...)
byte touch_write_byte(byte data) { // przy jej pomocy odczytuje się numer seryjny pastylki Dallas
byte i;
for(i=1;i<=8;++i) { output_low(TOUCH_PIN); delay_us(10); if(shift_right(&data,1,0)) { output_high(TOUCH_PIN); if(!TOUCH_PIN_BIT) return(0); } else { output_low(TOUCH_PIN); if(TOUCH_PIN_BIT) return(0);
Pytanie brzmi: Co to TOUCH_PIN, a co to TOUCH_PIN_BIT ? Przepraszam, że tak długaśnie, ale jeśli ktoś będzie mi w stanie odpowiedzieć na te pytania, to będę wdzięczny. / Pozdrawiam!