Em đang dùng modul RF của bác Quế Dương code dựa trên code của bác ý cung cấp ở đây: Welcome to Que Duong Electronics Website !...
em chuyển code sang CCS, code cho modul phát đã ok rồi, còn modul thu hơi rắc rối ở đoạn này
Em ko hiểu lệnh OPTION trong này chuyển sang CCS thì viết thế nào, cả phần TMR0 nữa, mong các cao thủ giúp đỡ
em chuyển code sang CCS, code cho modul phát đã ok rồi, còn modul thu hơi rắc rối ở đoạn này
Code:
bit get_data(unsigned char *buff) { unsigned char i,j,T0,count; i=16; count=0; OPTION=0x04; // pre scaler = 32 for counting long time // Tim bit preamble ( mo dau) while(--i) // wait preamble { NOP(); // tre 14 chu ky may NOP(); NOP(); while(RX); // kiem tra chan nhan rx=1, next TMR0=0; // co tin hieu , set tmr=0 NOP(); // tre NOP(); NOP(); while(!RX); // kiem tra neu rx=0, next T0=TMR0; // cho t0=tmr0 if (T0==0xFF) return 1; // error //phan duong cua bit khoang 5 ms if ((T0>=146) && (T0<=166)) // 4672-5312 uS it OK. tmr0= 5ms -->dung { count++; if ((count>=5)|| (i==0)) break; //nhan dc 5 lan -->ok } } if (i==0) return 1; // error OPTION=0x06; // prescaler = 128 T0=0; // set lai T0 while (!((T0>=146) && (T0<=166))) // 18688 - 21248 uS it OK. syn bit=15000us { NOP(); NOP(); NOP(); while(RX); // wait syn TMR0=0; NOP(); NOP(); NOP(); NOP(); while(!RX); T0=TMR0; } while(RX); //wait start bit go low DelayBigUs(7355); // delay 7500 uS before sampling for (j=0;j<3;j++) { i=8; buff[j]=0; while(i--) { buff[j]=buff[j]<<1; rx_bit=RX; // sampling buff[j]=buff[j] | rx_bit; if (rx_bit==0) while(!RX); else while(RX); DelayBigUs(7355); // delay 7500 uS before sampling } } if (rx_bit==0) if (!RX) return 1; // error (no stop bit found) else if (!RX) return 1; // error (no stop bit found) //*buff=TEMP[0]; return 0; }
Comment