اطلاعیه

Collapse
No announcement yet.

کار نکردن پورت d به صورت صحیح

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کار نکردن پورت d به صورت صحیح

    اقا من این دستور رو نوشتم
    با میکرو بیسیک


    program baby
    dim x as byte
    TRISD=0x08
    main:
    while(1)
    if portd.3=1 then
    for x=1 to 10
    portd.1=1
    portd.2=0
    delay_ms(200)
    portd.1=0
    portd.2=1
    delay_ms(200)
    next x
    else
    portd.1=0
    portd.2=1
    end if
    wend

    end.

    اقا تمام برنامه کار می کنه به جز اینکه باید پورت دی پایه ی portd.1 خاموش و روشن بشه هیچ ولتاژی روی پایه قرار نمی گیره ؟ علتش چی می تونه باشه؟
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

    #2
    پاسخ : کار نکردن پورت d به صورت صحیح

    ببینم اینجا نباید مثل روی AVR پایه ها رو خروجی تعریف کرد؟

    دیدگاه


      #3
      پاسخ : کار نکردن پورت d به صورت صحیح

      نوشته اصلی توسط reza_agha
      ببینم اینجا نباید مثل روی AVR پایه ها رو خروجی تعریف کرد؟
      با رجیستر TRISx.
      0 خروجی.(0==O
      1 ورودی.(1==i)
      بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
      موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
      نلسون ماندلا

      دیدگاه


        #4
        پاسخ : کار نکردن پورت d به صورت صحیح

        اقا سورس برنامه رو ببینید من خروجی رو تعریف کردم اما
        TRISD=0x08
        فقط پین 3(protd.3) به عنوان وروی تعریف می شه

        آقا حالا مشکل کجاست؟
        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

        دیدگاه


          #5
          پاسخ : کار نکردن پورت d به صورت صحیح

          سلام
          اتفاقی که میافته دقیقا همون فرمانی هست که نوشته شده .
          ارزش اعداد در سیستم هگزا دسیمال :
          01 بیت صفرم
          02 بیت اول
          04 بیت دوم
          08ّ بیت سوم
          10 بیت چهارم
          20 بیت پنجم
          40 بیت ششم
          80 بیت هفتم :nerd:
          .
          .
          .
          FF تمام هشت بیت
          موفقیت یک فرایند است نه یک اتفاق...

          ******** استفاده از گزینه تشکر نشانه اهمیت و احترام شما به پیگیری شخص نظر دهنده است ********

          دیدگاه


            #6
            پاسخ : کار نکردن پورت d به صورت صحیح

            :sad:

            اقا عبارت
            TRISD=0x08
            پورت دی رو به صورت زیر تعریف می کنه(اعداد شماره پین ها هستن)
            0-خروجی
            1-خروجی
            2-خروجی
            3-ورودی
            4-خروجی
            5خروجی
            6-خروجی
            7-خروجی

            برای اینکه 08 هگز برابر
            00001000
            هست؟

            !!!!!!
            هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

            دیدگاه


              #7
              پاسخ : کار نکردن پورت d به صورت صحیح

              کامل پست رو نخوندم ولی یک مشکل اساسی که من با PIC داشتم درست کار نکردن پورت D بود. وقتی به صورت سخت افزاری دیباگ کردم دیدم اصلا میکرو داره برا خودش قاط میزنه! به این نتیجه رسیدم که برای تغییر مقادیر پین ها به جای رجیستر PORTD باید از رجیستر LATD استفاده کنم و مشکل بر طرف شد!

              دیدگاه


                #8
                پاسخ : کار نکردن پورت d به صورت صحیح

                درود

                دوست خوب 08 بیت 7 رو ورودی میکنه و بقیه خروجی!می تونی تو اینترنت یه برنامه ی تبدیل هگزا به باینری و دسیمال و برعکس سرچ کنی و ببینی!اگه نتونستی بهم بگو تا برات پش کنم!اگه بیتی که ورودی هستش خروجی استفاده بشه میکرو قاط میکنه و ممکنه اون بیت یا پورت آسیب ببینه!
                در ضمن پورت دی برای ارتباط همزمان یا همون psp هم استفاده میشه پس باید تو رجیستر TRISE این بیت ها رو از این ماژول غیر فعال کنی!دیتا شیت رو ببین!توش نوشته چی کار باید بکنی!

                دیدگاه

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