اطلاعیه

Collapse
No announcement yet.

نرم افزار و ماکروهای کاربردی

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

    نرم افزار و ماکروهای کاربردی

    1-دو ماکرو ساده برای ریست نرم افزاری AVR
    [code=c]#define RESET() (((void(*)(void))(char *)0x0000)())
    #define RESET() ((void(*)())0x0)()[/code]
    هر دو یک کار انجام میدهد خط دوم خلاصه شده خط اول است. پس برای استفاده کافی است یکی از این دو ماکرو را انتخاب کرده و در برنامه آنرا بکار ببریم.

    اضافه شده در تاریخ :
    2-چند ماکرو برای تنظیمات اولیه و استفاده از پین ها به سادگی در برنامه با مثال نحوه استفاده از آن.
    [code=c]// Makros for simplified single pin io access.

    #define PORT_(port) PORT ## port
    #define DDR_(port) DDR ## port
    #define PIN_(port) PIN ## port

    #define PORT(port) PORT_(port)
    #define DDR(port) DDR_(port)
    #define PIN(port) PIN_(port)

    #define SET_OUTPUT(p) DDR(p##_PORT) |= (1<<p##_BIT) // SET PINx OF PORTy AS OUTPUT
    #define SET_INPUT(p) DDR(p##_PORT) &=~(1<<p##_BIT) // SET PINx OF PORTy AS INPUT
    #define OUTPUT_ON(p) PORT(p##_PORT) |= (1<<p##_BIT)
    #define OUTPUT_OFF(p) PORT(p##_PORT) &=~(1<<p##_BIT)
    #define INPUT(p) ((PIN(p##_PORT) & (1<<p##_BIT)) != 0)

    /* Use Like this:
    #define LED_PORT C
    #define LED_BIT 7

    #define SWITCH_PORT B
    #define SWITCH_BIT 0

    int main(){
    SET_OUTPUT(LED); //set to output
    OUTPUT_ON(SWITCH); //turn on pullup

    if(INPUT(SWITCH)){
    OUTPUT_ON(LED);
    }else{
    OUTPUT_OFF(LED);
    }
    }*/
    [/code]

    #2
    نمونه پروژه RTOS

    3-چند نمونه پروژه RTOS برای AVR برداشتی از سایت www.codeforge.com/
    http://uploadboy.com/whfnlyvqi188.html

    دیدگاه


      #3
      پاسخ : ماکروهای کاربردی

      مهندس یه توضیح برای ماکروهایی که گذاشتی میدی؟مثلا ## چیه؟چجوری اینا تبدیل به آدرس میشه؟تو هر کامپایلری معتبره؟
      Aristar Group - Always And Forever

      دیدگاه


        #4
        پاسخ : ماکروهای کاربردی

        هر وقت بخواهیم دو مقدار معلوم و مشخص را با هم ترکیب کنیم از این ماکرو استفاده می کنیم.
        در Help کدویژن آمده است
        کد:
        Two parameters can be concatenated using the ## operator.
        Example:
        
        #define ALFA(a,b) a ## b

        دیدگاه


          #5
          نرم افزار جدید Proteus

          دانلود نسخه جدید Proteus_8_Professional_8.3_SP2_Build_19906 با امکانات فوق العاده از جمله تست , شبیه سازی و کارکردن راحت با کامپایلرها در
          همان محیط Proteus

          قسمت اول
          http://uploadboy.me/i89cazr41c7b/Pro...9906_part1.rar

          قسمت دوم
          http://uploadboy.me/vymaltt5k9y4/Pro...9906_part2.rar

          کتابخانه
          http://uploadboy.me/v3ge9fj1k0an/Pro...al.Library.rar

          کرک در صورت نیاز
          http://uploadboy.me/0ke6h0pkmlom/Pro...._.Only_pd.zip

          دیدگاه


            #6
            چند فیلم کوتاه در مورد حملات سایبری

            چند فیلم کوتاه در مورد حملات سایبری

            قسمت اول
            SG-Cyberwarfare-Stuxnet-480p.mp4 - 50.9 MB

            قسمت دوم
            SG-Cyberwarfare-Duqu-480p.mp4 - 23.0 MB

            قسمت سوم
            SG-Cyberwarfare-Flame-480p.mp4 - 30.0 MB

            قسمت چهارم به زودی.......

            دیدگاه


              #7
              کنترل 4 کلید با دو بیت از میکرو

              4- تا حالا چندبار به خاطر یک یا دو io میکروتون رو عوض کردید و میکرو بزرگتری استفاده کردید با کلی io اضافه, یک ترفند ساده برای استفاده از دو io و چهار کلید فشاری



              [code=c]
              /************************************************** ***
              Chip type : ATmega16
              Program type : Application
              AVR Core Clock frequency: 8/000000 MHz
              Memory model : Small
              External RAM size : 0
              Data Stack size : 256
              ************************************************** ***/
              #include <mega16.h>
              #include <delay.h>
              #define DKEY 1
              unsigned char buttonstatus;

              void kbd (void){
              buttonstatus=0;

              DDRB.3=0;
              PORTB.4=1;
              DDRB.4=1;
              delay_ms(DKEY);
              if(PINB.3 == 0) buttonstatus|=1;
              PORTB.4=0;
              delay_ms(DKEY);
              if(PINB.3) buttonstatus|=2;

              DDRB.4=0;
              DDRB.3=1;
              PORTB.3=1;
              delay_ms(DKEY);
              if(PINB.4 == 0) buttonstatus|=4;
              PORTB.3=0;
              delay_ms(DKEY);
              if(PINB.4) buttonstatus|=8;
              }

              void main(void){
              DDRD=0XFF;
              while(1){

              kbd();
              PORTD=buttonstatus;
              }
              }
              [/code]

              دیدگاه

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