View Single Post
Old 22-05-2008, 04:11 PM   #2
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
Đây là phần code của mình. Mình dùng ccs c.
Ham truyen cua Master
Code:
void transmit_1(int adress,int type,int type1,int16 data)
{
   char s[9],s1[5],s2[3];
   int i,dodaichuoi;

   itoa(adress,10,s2);s[0]=s2[0];//adress la dia chi slave
   itoa(type,10,s2);s[1]=s2[0];
   itoa(type1,10,s2);s[2]=s2[0];
   if (type==0)
      {
         s[3]='@';
         s[4]=null;
      }
   if (type==1)
      {
         itoa(data,10,s1);
         dodaichuoi=strlen(s1);
         for(i=0;i<dodaichuoi;i++)
               s[i+3]=s1[i];
         s[dodaichuoi+3]='@';
         s[dodaichuoi+4]=null;
      }
   printf("%s",s);
   delay_ms(20);
   if ((type==0)&((type1==1)||(type1==0)))
      output_low(pin_c0);
}
Còn đây là phần xử lý nhận giá trị cua Slave
Code:
#INT_RDA
RECEIVER()
{
   char kt;
   int i,j,dodaichuoi;
   char s[9];
   char s1[5];
   int16 tg;
   j=0;
   kt=fgetc(PC);
   s[i]=kt;
   if (s[i]=='@')
      {
         s[i]=null;
         dodaichuoi=strlen(s);
         lcd_display_str(0,0,s);//hien thi chuoi nhan dc
         lcd_display_int8(0,10,dodaichuoi);// hien thi do dai
         if (s[0]=='2')
            receiver_2(s);
         for (j=0;j<9;j++)
            s[j]=null;
         i=0;
      }
   else i=i+1;
}
Đây là hàm xử lý chuỗi nhận được tai Slave
Code:
void receiver_2(char s[])
{
   char s1[5];
   int i,j;
   int16 tg;

   strlen(s);
   for (i==0;i<(strlen(s)-3);i++)
      s1[i]=s[i+3];
   tg=atol(s1);

         if (s[1]=='0')
            {
               if (s[2]=='0')
                  {
                     output_high(pin_c0);
                     delay_ms(5);
                     transmit_2(1,1,status0,khoiluong0);//tra ve Master
                  }
               if (s[2]=='1')
                  {
                     output_high(pin_c0);
                     delay_ms(5);
                     transmit_2(1,0,0,adc0);// tra ve Master
                  }
               if (s[2]=='2')
                  {
                     ver=1;
                  }
               if (s[2]=='3')
                  {
                     ver=0;
                  }
            }
         if (s[1]=='1')
            {
               if (s[2]=='0')
                  {
                     rnominal0=tg;
                     write_rom_16bit(0,rnominal0);
                  }
               if (s[2]=='1')
                  {
                     rempty0=tg;
                     write_rom_16bit(4,rempty0);
                  }
               if (s[2]=='2')
                  {
                     rtoleran0=tg;
                     write_rom_16bit(8,rtoleran0);
                  }
               if (s[2]=='3')
                  {
                     rpausetime0=tg;
                     write_rom_16bit(12,rpausetime0);
                  }

               if (s[2]=='4')
                  {
                     rk0=tg;
                     write_rom_16bit(32,rk0);
                  }
               if (s[2]=='5')
                  {
                     zero0=tg;
                     write_rom_16bit(36,zero0);
                  }
               if (s[2]=='6')
                  {
                     rtr1=tg;
                     write_rom_16bit(44,rtr1);
                  }
               if (s[2]=='7')
                  {
                     rtr2=tg;
                     write_rom_16bit(48,rtr2);
                  }
               if (s[2]=='8')
                  {
                     rtr3=tg;
                     write_rom_16bit(52,rtr3);
                  }
               if (s[2]=='9')
                  {
                     rtr4=tg;
                     write_rom_16bit(56,rtr4);
                  }
            }
}
Đây là hàm truyền của Slave
Code:
void transmit_2(int adress,int type,int type1,int16 data)
{
   char s[8],s1[5],s2[2];
   int i,dodaichuoi;

   itoa(adress,10,s2);s[0]=s2[0];
   itoa(type,10,s2);s[1]=s2[0];
   itoa(type1,10,s2);s[2]=s2[0];
   itoa(data,10,s1);
   dodaichuoi=strlen(s1);
   for(i=0;i<dodaichuoi;i++)
         s[i+3]=s1[i];
   s[dodaichuoi+3]='@';
   s[dodaichuoi+4]=null;
   printf("%s",s);
   delay_ms(50);
   output_low(pin_c0);
}

thay đổi nội dung bởi: bean984, 22-05-2008 lúc 04:20 PM.
bean984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn