ايران ويج

نسخه‌ی کامل: اشکال در دستور شیفت codevision!!!
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
بچه ها یه نگاه به این کد ساده بندازید
کد php:
#include <mega16.h>

void main(void)
{
PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTC=0b00000001;
while (
1)
      {  
        if(
PINB.1==0)
        {
            while(
PINB.1==0)
            
PORTC=PORTC<<1;
        } 
      }


همونطور که میدونید تو این کد وقتی من کلیدی که به پورتB وصل کردم رو فشار بدم پورتC باید یه واحد شیفت پیدا کنه اما وقتی تو پرتئوس اجراش کردم و دکمه رو فشار دادم شیفت پیدا نکرد و کل پورتC صفر شد!!!!Amaze

اما با این کد به درستی کار میکنه و پورتC شیفت پیدا میکنه

کد php:
#include <mega16.h>

void main(void)
{
PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTC=0b00000001;
while (
1)
      {  
      
char temp;

        if(
PINB.1==0)
        {
            while(
PINB.1==0)
            
temp=PORTC<<1;
            
PORTC=temp;
        } 
      }


من که سر در نیاوردم مشکل از کجا میتونه باشه!!!Amaze کسی میدونه مشکل چیه؟Confused
سلام دادا.
هم jtag رو چک کن و هم یه delay بذار. بدون delay مدار صحصح کار نمیکنه و ممکنه چند واحد شیفت کنه.

موفق باشی.
(۰۳-دى-۱۳۸۹, ۱۲:۱۴:۰۷)iman-63 نوشته است: [ -> ]سلام دادا.
هم jtag رو چک کن و هم یه delay بذار. بدون delay مدار صحصح کار نمیکنه و ممکنه چند واحد شیفت کنه.

موفق باشی.

ممنون که جواب دادی
jtag که توی پرتئوس فعالو غیر فعال نداره
برای delay هم اگه به کد توجه کنی بعد از خوندن کلید دستور
کد php:
while(PINB.1==0
قرار دادم که باعث میشه تا زمانی که انگشتت روی کلید هست کاری انجام نده
سلام

برنامه درست کار میکنه

احتمالا تو پروتوس به جای اینکه کلید رو به b.1 وصل کنی به b.0 وصلش کردی
(۰۸-دى-۱۳۸۹, ۱۶:۰۰:۳۳)aminsh65 نوشته است: [ -> ]سلام

برنامه درست کار میکنه

احتمالا تو پروتوس به جای اینکه کلید رو به b.1 وصل کنی به b.0 وصلش کردی

سلام
یعنی شما با این برنامه جواب گرفتی؟!!! نباید درست کار کنه
اشکالش رو فهمیدم از کجاست درست کردم حل شد
بعد از دستور
کد php:
while(PINB.1==0
باید یه نقطه ویرگول میزاشتم که یادم رفت بزارم
یعنی باید اینجوری بشه
کد php:
while(PINB.1==0);