اطلاعیه

Collapse
No announcement yet.

مشکل در اینتراپت خارجی 2

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

    مشکل در اینتراپت خارجی 2

    با سلام بر دوستان
    من یه برنامه ساده نوشتم که وقتی یه لبه بالارونده در پایه اینتراپت خارجی 2 اتفاق بیفته، PORTB.0 رو به مدت یک ثانیه روش و بعد خاموش کنه. ولی نمیدونم چرا کار نمیکنه. برنامه ای هم که نوشتم اینه:
    #include <mega32.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <delay.h>
    #include <alcd.h>

    void main (void)
    {
    DDRB=0x1;

    MCUCSR=0x40;
    MCUCR=0x03;
    GICR=0xE0;


    #asm("sei"

    while(1);
    }

    interrupt [4] void int_2(void)
    {
    PORTB.0=1;
    delay_ms(1000);
    PORTB.0=0;
    }

    خواهش میکنم کمک کنید مشکلم زود حل بشه چون خیلی فوریه .

    #2
    پاسخ : مشکل در اینتراپت خارجی 2

    به جای این سه سطر:

    MCUCSR=0x40;
    MCUCR=0x03;
    GICR=0xE0;

    این ها رو قرار بده:

    GICR|=0x20;
    MCUCR=0x00;
    MCUCSR=0x40;
    GIFR=0x20;
    افتادگی آموز اگر طالب فیضی هرگز نخورد آب زمینی که بلند است

    دیدگاه


      #3
      پاسخ : مشکل در اینتراپت خارجی 2

      میتونی از برنامه زیر استفاده کنی
      #include <mega32.h>
      #include <delay.h>


      interrupt [EXT_INT2] void ext_int2_isr(void)
      {
      PORTB.0 = 1 ;
      delay_ms(1000);
      PORTB.0 = 0;

      }



      void main(void)
      {

      PORTB=0x00;
      DDRB=0x01;


      GICR|=0x20;
      MCUCR=0x00;
      MCUCSR=0x40;
      GIFR=0x20;


      #asm("sei&quot

      while (1)
      {
      // Place your code here

      }
      }

      دیدگاه


        #4
        پاسخ : مشکل در اینتراپت خارجی 2

        منم یک برنامه مشابه نوشتم :angry: :angry: ولی اینتراپ خارجی خوب کار نمیکرد برای همین یک مقاومت 10 کیلویی به پایه میکرو و زمین متصل کردم و مابین پایه ایسی و مقاومت رو ولتاز 5 که میدادم درست کار میکرد :nice: :nice: :nice:

        دیدگاه

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