NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5864 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 2 از 2

موضوع: شمارنده

  1. #1
    تازه وارد
    تاریخ عضویت
    Apr 2008
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض شمارنده

    سلام.من ميخوام يه برنامه بنويسم كه يك عدد4 رقمي پيش فرض رو در ابتدا بر روي 4 تا سون سگمنت نشون بده و هر 1 ثانيه يكي به عدد اضافه كنه.
    ضمنا برنامه بايد بر روي اي سي 8951 ريخته بشه.
    مثلا عدد 1300 باشه و بعد از 1 ثانيه 1301 1302ُِو...بشه.
    ممنون ميشم كمكم كنيد.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر فعال
    تاریخ عضویت
    Sep 2007
    نوشته ها
    196
    تشکر
    0
    تشکر شده 99 بار در 50 پست

    پیش فرض

    اينو من قبلاً براي PIC و دوشمارنده نوشته بودم. با تغييرات خيلي كمي ميتوني براي 8051 عوضش كني (قسمت Initش رو حذف كن و بجاش Init برنامه خودت رو بنويس).
    براي 4 سگمنت هم طبق برنامه، ميتوني گسترش بدي.
    [align=left:c519199c0b]
    #define uchar unsigned char
    #define uint unsigned int

    void init(void);

    void main()
    {
    uint loop;
    uchar Yseg, Dseg, Yekan, Dahgan;

    uchar num[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
    Yekan=0;
    Dahgan=0;

    init();

    for(;;){
    Yekan++;
    if(Yekan>9){
    Dahgan++;
    if(Dahgan>9) Dahgan=0;
    Yekan=0;
    Dseg=num[Dahgan];
    }
    Yseg=num[Yekan];

    for(loop=0; loop<500; loop++){ // 500*(1000+1000)=1S delay
    portb=0x40;
    portd=Yseg;
    Delay_us(1000);

    portb=0x04;
    portd=Dseg;
    Delay_us(1000);

    }
    }
    }

    void init(){
    portb=0x00;
    trisb=0x01;

    portd=0x00;
    trisd=0x00;
    }
    [/align:c519199c0b]

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •