اطلاعیه

Collapse
No announcement yet.

برنامه کامل ارسال و دریافت دیتا با پروتکل TWI

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    برنامه کامل ارسال و دریافت دیتا با پروتکل TWI

    خوب ، من هرچی تو نت گشتم نتونستم برنامه ای برای ارسال دیتا با پروتکل TWI پیدا کنم .
    به همین دلیل تصمیم گرفتم یه برنامه خودم بنویسم تا دیگران هماستفاده کنن .
    بدی این برنامه ها اینه که نمی تونن تست شن ، به همین دلیل از دوستان تقاضا دارم تا اگه ایرادی هست به من بگن تا اصلاح کنم و برنامه ی صحیح و کاملی به دست بیاد .
    منتظر یاری شما دوستان عزیز هستم .
    :cry: :cry: :cry: :cry:

    #2
    برنامه کامل ارسال و دریافت دیتا با پروتکل TWI ( قسمت MASTER )

    [glow=red,2,300]خوب این هم از برنامه :[/glow]
    کد:
    *****************
    #include <mega16.h>
    #define xtal 8000000
    void main()
    {
       TWBR = 32; // Bit rate = 100Khz
       start :
       TWCR = 0xA4; // Transmit Start Condition
       while(TWCR & 0x80 == 0); // Waiting for TWINT flag
       if(TWSR & 0xF8 == 0x08 || TWSR & 0xF8 == 0x10) // Start Or Restart Condition Transmitted?
       {
         switch(forward)
         {
         case 1:       
            TWDR = 0b*******0; // SLA+W
            TWCR = 0x84; // Enable TWI and Clear TWINT
            while(TWCR & 0x80 == 0); // Waiting for TWINT flag
            if(TWSR & 0xF8 == 0x18) // SLA+W has been send with ACK?
            {
              retransmit :
              TWDR = 0b********; // Data=0x77
              TWCR = 0x84; // Enable TWI and Clear TWINT
              while(TWCR & 0x80 == 0); // Waiting for TWINT flag
              if(TWSR & 0xF8 == 0x28) // Data has been send with ACK?
              TWCR = 0x94; // Transmit Stop Condition
              else if(TWSR&0xF8==0x28) // Data has been send with NACK?
              goto retransmit ;
            }
            else if(TWSR & 0xF8 == 0x20) // SLA+W has been send with NACK?
            goto start ;
         case 0:
            TWDR=0B*******1; // SLA+R
            TWCR=0xC4; // Enable TWI and Clear TWINT
            while(TWCR&0x80==0); // Waiting for TWINT flag
            if(TWSR&0xF8==0x40) // SLA+R has been send with ACK?
            {
              TWCR=0xC4; // Master Acknowledging and clear TWINT
              while(TWCR&0x80==0); // Waiting for TWINT flag
              if(TWSR&0xF8==0x50) // Master has been Received Data?
              {
                 ******** = TWDR; // Reading Data
                 TWCR=0x94; // Master Not Acknowledging and clear TWINT
              }
              else if(TWSR&0xF8==0x58) // Master has been not Received Data?
              goto start ;
            }
            else if(TWSR&0xF8==0x48) // SLA+R has been send with NACK?
            goto start ;
         }
       TWCR = 0x94; // Transmit Stop Condition
    }
    **************

    [glow=red,2,300]منتظر نظرات شما برای تکمیل برنامه هستم !![/glow]
    :cry: :cry:

    دیدگاه

    لطفا صبر کنید...
    X