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