اطلاعیه

Collapse
No announcement yet.

بدست آوردن کدهای رد و بدل شده بین کیبرد و کامپیوتر با مگا 8

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

    بدست آوردن کدهای رد و بدل شده بین کیبرد و کامپیوتر با مگا 8

    سلام به همه دوستان

    اگه ممکنه یه کمک کنید این مشکل حل شه
    یه کد نوشتم که سطح منطقی پایه دیتای کیبرد (data+) رو وقتی پایه کلاک کیبرد (data-) در لبه ی پایین رونده هست میخونه
    و در یه ارایه قرار میده از 1 شروع میکنه تا 230 و بعدش به وسیله دوتا کلید که وصله به pb.0 , pb.1 میشه رو lcd 16*2 مقادیر رو نمایش داد
    اما باید بگم که وقتی پایه های دیتا و کلاک کیبرد usb رو وصل میکنم به میکرو قاتی میکنه و اعداد بهم ریخته نشون میده (این کار قبل از روشن شدن میکرو انجام میشه )
    باید با زمین کردن pb.1 از 1 شروع کنه به شمارش و با هر بار زمین کردن یک واحد به شمارش اضافه شه اما یه دفعه 96 رو نشون میده بعدش 103 و اصلا معلوم نیست رو چه حساب کتابی این اعداد رو نشون میده :eek: :eek:

    برنامه اینه

    [code=c]#include <mega8.h>
    #include <stdio.h>
    #include <delay.h>
    #include <alcd.h>

    unsigned char data[231],buff[16],i=1;
    bit a;

    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    TCCR0=0x00;
    data[i] = TCNT0;
    TCNT0=0x00;
    TCCR0=0x03;
    if ( PIND.3 )
    data[i] = data[i] | 0b10000000;
    i++;
    if (i>229)
    {
    TCCR0=0x00;
    TIMSK=0x00;
    }
    }


    void main(void)
    {
    TIMSK=0x00;
    TCCR0=0x00;
    TCNT0=0x00;

    PORTB=0x03;
    DDRB=0x00;

    PORTC=0x00;
    DDRC=0x00;

    PORTD=0x00;
    DDRD=0x00;

    GICR|=0x40;
    MCUCR=0x02;
    GIFR=0x40;

    UCSRB=0x00;

    ACSR=0x80;
    SFIOR=0x00;

    lcd_init(16);

    #asm("sei&quot

    lcd_putsf (" press a key "
    while ( PINB.0 && PINB.1 );
    delay_ms (500);
    lcd_clear();

    TIMSK=0x01;
    TCCR0=0x03;
    TCNT0=0x00;

    while (1)
    {
    i=1;
    while(1)
    {
    if ( !PINB.0 )
    {

    delay_ms(200);
    i--;
    if (i<1)
    i=1;
    if ( data[i] | 0b10000000 )
    a=1;
    else
    a=0;
    if ( data[i] >127 )
    data[i] = data[i]-128;
    lcd_clear();
    sprintf ( buff,"%u %u %u ",i,a,data[i] );
    lcd_puts ( buff );

    }

    if ( !PINB.1 )
    {

    delay_ms(200);
    i++;
    if (i>700)
    i=700;
    if ( data[i] | 0b10000000 )
    a=1;
    else
    a=0;
    if ( data[i] >127 )
    data[i] = data[i]-128;
    lcd_clear();
    sprintf ( buff,"%u %u %u ",i,a,data[i] );
    lcd_puts ( buff );

    }

    }
    }
    }
    [/code]

    #2
    پاسخ : بدست آوردن کدهای رد و بدل شده بین کیبرد و کامپیوتر با مگا 8

    عزیز راحت بگم که نمیشه . سرعت خانواده mega تهش بیست مگاهرتزه بعد شما میخوای دیتا با سرعت 480مگاهرتز رو پردازش کنه !!!!!!
    برای کار با کیبرد کامپیوتر بهتره بری سراغ نسخه های ps2

    دیدگاه


      #3
      پاسخ : بدست آوردن کدهای رد و بدل شده بین کیبرد و کامپیوتر با مگا 8

      نوشته اصلی توسط اشکان غفارزاده
      عزیز راحت بگم که نمیشه . سرعت خانواده mega تهش بیست مگاهرتزه بعد شما میخوای دیتا با سرعت 480مگاهرتز رو پردازش کنه !!!!!!
      برای کار با کیبرد کامپیوتر بهتره بری سراغ نسخه های ps2
      سلام دوست من :nerd:

      فکر میکنم دارید اشتباه میکنید
      من شخصا کیبرد usb رو به مگا 8 وصل کردم و خودم هم توابعش رو نوشتم و خیلی هم خوب کاراکتر های کیبرد (حروف انگلیسی و علامت ها و ... ) رو تو lcd 16*2 نمایش میده و هیچ مشکلی نداره همینطور از shift , caps lock هم پشتیبانی میکنه و واقعا جالبه :wow:

      باید بگم تا جایی که میدونم فرکانس کلاک کیبرد حدود 30 کیلو هرتز هست که با میکروهای avr میشه باهاش کار کرد

      من فقط میخوام کدهایی که هنگام فشردن کلید caps lock , scroll lock, num lock بین کیبرد و کامپیوتر رد و بدل میشه ( کلا هرکدوم از این سه کلید رو که فشار بدی حدود 4 بایت رد و بدل میشه ) رو پیدا کنم همین :read:

      اما این حرفتون رو متوجه نمیشم اگه میشه بیشتر توضیح بدید " برای کار با کیبرد کامپیوتر بهتره بری سراغ نسخه های ps2 "
      مگه نسخه های ps2 چه فرقی دارن ؟ ؟ ؟

      دیدگاه


        #4
        پاسخ : بدست آوردن کدهای رد و بدل شده بین کیبرد و کامپیوتر با مگا 8

        آها. شرمنده من اولش فک کردم میخوای دیتای usb در حالت کلی بخونی.

        برای این کار بهترین کار استفاده از لاجیک انالایزر هست چون avr برای پردازش سیگنال مناسب نیست.میتونی فرکانس میکرو رو هم افزایش بدی و نتیجه رو ببینی.
        اسیلوسکوپ با قابلیت ضبط هم باشه میتونی باهاش سیگنال مربوط به کلید های مورد نظر رو ببینی.

        یه سرچ هم میکنم ببینم چیزی برات پیدا میکنم


        موفق باشی

        دیدگاه


          #5
          پاسخ : بدست آوردن کدهای رد و بدل شده بین کیبرد و کامپیوتر با مگا 8

          اینو قبلا دیدین؟
          http://retired.beyondlogic.org/keyboard/keybrd.htm

          دیدگاه

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