اطلاعیه

Collapse
No announcement yet.

ارتباط سریال 9 بیتی

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

    ارتباط سریال 9 بیتی


    با سلام
    من از ارتباط 9 بیتی تو نوشتن برنامم استفاده کردم ولی بیت نهم txb رو استفاده نکردم
    وقتی master و 1 slave هست داده به درستی انتقال پیدا میکنه ولی وقتی sllave دوم میاد هیچ داده ای انتقال پیدا نمیکنه
    برنامه slave2:
    کد:
    [left][right][left][left]
    while (1)
       { 
        lcd_clear(); 
       lcd_putsf("hello");
       delay_ms(100);
        if(klid==0)relay=1;
        if(klid==1)relay=0;
       if (((status=UCSRA) & RX_COMPLETE)!=0){
        a=getchar(); 
                    lcd_clear(); 
         sprintf(display_buffer,"a:%2d",a); 
         lcd_puts(display_buffer); 
         delay_ms(100);
         
        if(a=12){  // status      1100
        feedback=relay | klid; 
        
        if(feedback==0){ 
        a=45; // lamp to remote 001 0 1101 
                    lcd_clear(); 
         sprintf(display_buffer,"a:%2d",a); 
         lcd_puts(display_buffer); 
         delay_ms(100);
         
        putchar(a);}
        
        if(feedback==1){ 
        a=61; //  lamp to remote 001 1 1101
                    lcd_clear(); 
         sprintf(display_buffer,"a:%2d",a); 
         lcd_puts(display_buffer); 
         delay_ms(100);
        putchar(a);}
        
        
        } 
        if(a=4)relay=1;  //0100
        if(a=8)relay=0;  //1000
        
        } 
        delay_ms(100);
     }  
    }
    
    
    char getchar(void)
     {
     char status,data,a;
      while (1)
       {
       while (((status=UCSRA) & RX_COMPLETE)==0);
       data=UDR;
       if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0){
          a=data & 0x01;
         if(a==address){
         a=data & 0x0C; 
         return data;
         }
         else main();
       }
      }
     }
    برنامه master:

    کد:
    while (1)
     {   /* read the time from the RTC */
     // rtc_get_time(&hour,&min,&sec);
       
       /* read the date from the RTC */
     /*  rtc_get_date(&week_day,&year,&month,&day);
       sprintf(display_buffer,"%2d:%02d:%02d",hour,min,sec);
       lcd_clear();
       lcd_puts(display_buffer); 
        
       sprintf(display_buffer,"%d/%02d/%02d",1373+year,month,day);
       lcd_gotoxy(0,1);
       lcd_puts(display_buffer); */  
       
     if(((status=UCSRA) & RX_COMPLETE)!=0){
        x=getchar(); 
        a= x & 0x80;   //  1000 0000
       if(a==128){    
       a= x & 0x0F; 
               lcd_clear(); 
         sprintf(display_buffer,"a:%2d",a); 
         lcd_puts(display_buffer); 
         delay_ms(100); 
       putchar(a);
       } 
        
       if(a==0){      
       a= x & 0x1F;     //  - - - ?(0/1)- -(statuse) - - (code lamp)
       a=a+128;   
               lcd_clear(); 
         sprintf(display_buffer,"a:%2d",a); 
         lcd_puts(display_buffer); 
         delay_ms(100); 
       putchar(a);
       }
        
      }
      delay_ms(100);
      }
    }
    char getchar(void)
    {
    char status,data,a;
    while (1){
       while (((status=UCSRA) & RX_COMPLETE)==0);
       data=UDR;
       if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0){
       a= data & 0x20; 
         if(a==address){
          lcd_clear(); 
         sprintf(display_buffer,"address:%2d",a); 
         lcd_puts(display_buffer); 
         delay_ms(100); 
          a=data & 0x8F;      //10001111
               lcd_clear(); 
         sprintf(display_buffer,"recieve:%2d",a); 
         lcd_puts(display_buffer); 
         delay_ms(100);
         return a;
       } 
       else 
       main();
      }
      }
      }
    میدونم مستر نیاز به آدرس نداره ولی دیگه چیزی به ذهنم نرسید اینم آدرس دار کردم
    لطفا راهنماییم کنید

    #2
    پاسخ : ارتباط سریال 9 بیتی

    هیشکی نیست بلد باشه

    دیدگاه

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