اطلاعیه

Collapse
No announcement yet.

بیت parity در ارتباط سریال آسنکرون

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

    بیت parity در ارتباط سریال آسنکرون

    سلام
    من میخوام این برنامه رو طوری تغییر بدم که بیت پریتی روهم چک بکنه و اگه درست بود portd.7 = 0 و اگر نبود portd.7 = 1 بکنه
    میشه کمک کنین ؟
    کد:
    void send7(char a)
    {
      #asm
      send_7bit:
        ldd r19,Y+0
        cbi PORTD,1
        call bit_delay
        ldi r16,7
      nxt_bit:
        in r17,PORTD
        bst r19,0
        bld r17,1
        out PORTD,r17
        lsr r19
        call bit_delay
        dec r16
        brne nxt_bit
        sbi PORTD,1
        call bit_delay
        ret
      #endasm
    }
    char receive7(void)
    {
      #asm
      receive_7bit:
        ldi r18,0
      till_reset:
        in r17,PIND
        andi r17,1
        brne till_reset
        call hbit_delay
        ldi r16,7
      rnxt_bit:
        clc
        sbic PIND,0
        sec
        ror r18
        call bit_delay
        dec r16
        brne rnxt_bit
        clc
        ror r18
        mov r30,r18
      #endasm
    }
    
    #asm
      bit_delay:
        push r16
        push r17
        ldi r17,1
      bdel2:
        ldi r16,26
      bdel1:
        dec r16
        brne bdel1
        
        dec r17
        brne bdel2
        
        pop r17
        pop r16
        ret
        
      hbit_delay:
        push r16
        push r17
        ldi r17,1
      hbdel2:
        ldi r16,43
      hbdel1:
        dec r16
        brne hbdel1
        
        dec r17
        brne hbdel2
        
        pop r17
        pop r16
        ret
    #endasm

    #2
    پاسخ : بیت parity در ارتباط سریال آسنکرون

    سلام
    اسمبلی اصلا بلد نیستم.
    ولی می دونم که برای چک کردن بیت PARITY طبق دیتاشیت باید بیت دوم رجیستر UCSRA را بررسی کنید. یعنی اگر 1 باشه pARITY اشتباه هست.البته قبلش باید توی تنظیمات Parity را فعال کنید

    دیدگاه

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