اطلاعیه

Collapse
No announcement yet.

تغییر برنامه برای مگا 32

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

    تغییر برنامه برای مگا 32

    با سلام
    یه برنامه تو اینترنت پیدا کردم کد ریموت کنترل ir با فشردن کلیدی ذخیره میکنه و سپس با دیود فرستنده مادون کد را ارسال میکنه ولی از atmega 88p استفاده کرده که تو شهرستان بد گیر میاد و خیلی کاربردی نیست
    چطور میتونم کد را به مگا 32 تبدیل کنم

    کد برنامه
    [
    code]
    کد:
    #include <mega88p.h>
    #include <delay.h>
    
     
    
    // **********************************************************************************************
    // **** PROGRAM VARIABLES
    // **********************************************************************************************
    unsigned char RC5[750];
    
     
    
    // **********************************************************************************************
    // **** RECORD FUNCTION
    // **********************************************************************************************
    void RECORD(){
    unsigned int CTR;
    unsigned char TMR;
    unsigned char REC;
    unsigned char DIV;
    
    // STATUS LED ON
    PORTD.5 = 1;
    REC = 0;
    
    // ERASE STREAM ARRAY
    for (CTR = 0; CTR < 750; CTR++) RC5[CTR] = 0;
    
    // WAIT FOR START BITS
    while (PIND.1 == 1) {}
    
    // RECORD RC5 PULSE STREAM
    for (CTR = 0; CTR < 375; CTR++) {
    
    // RECORD MODULATED PULSE
    TMR = 0;
    while (PIND.1 == 0) {
    
    // DIVIDE TIME BY 10
    for (DIV = 0; DIV < 10; DIV++) { //$$$
    
    // 40 KHZ DELAY
    #asm
    ldi r23,66 ;1
    DL4:
    dec r23 ;1
    brne dl4 ;1/2
    nop ;1
    nop ;1
    #endasm
    }
    TMR++;
    }
    // STORE TIME VALUE
    RC5[CTR] = TMR;
    
    // INCREMENT COUNTER
    CTR++;
    
    // RECORD UNMODULATED PULSE
    TMR = 0;
    while (PIND.1 == 1) {
    
    // DIVIDE TIME BY 10
    for (DIV = 0; DIV < 10; DIV++) { //$$$
    
    // 40 KHZ DELAY
    #asm
    ldi r23,66 ;1
    DL5:
    dec r23 ;1
    brne dl5 ;1/2
    nop ;1
    nop ;1
    #endasm
    }
    TMR++;
    }
    // STORE TIME VALUE
    RC5[CTR] = TMR;
    
    // STATUS LED FLASH
    REC++;
    if (REC == 40) REC = 0;
    if (REC == 0 ) PORTD.5 = 1;
    if (REC == 20 ) PORTD.5 = 0;
    }
    
    // STATUS LED OFF
    PORTD.5 = 0;
    
    // WAIT FOR BUTTON RELEASE
    while (PIND.2 == 0){}
    delay_ms(500);
    }
    
     
    
    // **********************************************************************************************
    // **** PLAYBACK FUNCTION
    // **********************************************************************************************
    void PLAYBACK(){
    unsigned int CTR;
    unsigned char TMR;
    unsigned char DIV;
    
    // STATUS LED ON
    PORTD.5 = 1;
    
    // PLAYBACK RC5 PULSE STREAM
    for (CTR = 0; CTR < 375; CTR++) {
    
    // SEND 40KHZ MODULATION
    TMR = RC5[CTR];
    while (TMR > 0) {
    
    // DIVIDE TIME BY 10
    for (DIV = 0; DIV < 10; DIV++) {
    
    // 40 KHZ MODULATION CYCLE
    PORTD.0 = 1;
    #asm
    ldi r23,33 ;1
    DL1:
    dec r23 ;1
    brne dl1 ;1/2
    nop ;1
    #endasm
    PORTD.0 = 0;
    #asm
    ldi r23,33 ;1
    DL2:
    dec r23 ;1
    brne dl2 ;1/2
    nop ;1
    #endasm
    }
    TMR--;
    }
    
    // INCREMENT COUNTER
    CTR++;
    
    // SEND NO MODULATION
    TMR = RC5[CTR];
    while (TMR > 0) {
    
    // DIVIDE TIME BY 10
    for (DIV = 0; DIV < 10; DIV++) { //$$$
    
    // NO MODULATION CYCLE
    #asm
    ldi r23,66 ;1
    DL3:
    dec r23 ;1
    brne dl3 ;1/2
    nop ;1
    nop ;1
    #endasm
    }
    TMR--;
    }
    }
    
    // STATUS LED OFF
    PORTD.5 = 0;
    
    // REPEAT DELAY
    delay_ms(100);
    };
    
     
    
    // **********************************************************************************************
    // **** IO PORT SETUP
    // **********************************************************************************************
    void main(void)
    {
    DDRD.0 = 1; // IR LED OUTPUT
    DDRD.1 = 0; // IR SENSOR INPUT
    DDRD.2 = 0; // RECORD BUTTON INPUT
    DDRD.3 = 0; // PLAYBACK BUTTON INPUT
    DDRD.4 = 0; // MODE SWITCH INPUT (NOT USED)
    DDRD.5 = 1; // STATUS LED OUTPUT
    
    // ENABLE INPUT PULLUPS
    PORTD.1 = 1;
    PORTD.2 = 1;
    PORTD.3 = 1;
    PORTD.4 = 1;
    
     
    
    // **********************************************************************************************
    // **** MAIN PROGRAM LOOP
    // **********************************************************************************************
    while (1)
    {
    
    // CHECK RECORD AND PLAYBACK BUTTONS
    if (PIND.2 == 0) RECORD();
    if (PIND.3 == 0) PLAYBACK();
    
    // END OF MAIN LOOP
    };
    };
    [/
    code]

    سحر گاهان که شبنم آیتی از پاک بودن را به گلها هدیه می بخشد ..... به آن محراب پاکش آرزو کردم برایت خوب بودن ،خوب دبدن ،خوب ماندن را -----*****------
    عشق یعنی اشک توبه در قنوت ،خواندنش با نام غفار الذنوب
    عشق یعنی چشمها هم در رکوع ،شرمگین از نام ستار العیوب
    عشق یعنی سر سجود و دل سجود
    ذکر یا رب یا رب از عمق وجود
    -----*****---

    #2
    پاسخ : تغییر برنامه برای مگا 32

    سلام
    نوع میکرو عوض کن از رجیستر خاصی در از واحدهای پرفریال هم استفاده نمیشه که بگی فرقی داره
    پایه ها هم که فرقی نمیکنه
    [code=cpp]#include <mega88p.h>[/code]
    به
    [code=cpp]#include <mega32.h>[/code]
    تغییر بده کامپایل کن و مدار هم مثل همون AT88 ببند
    امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

    دیدگاه


      #3
      پاسخ : تغییر برنامه برای مگا 32

      یعنی از همون پایه های که از AT88 استفاده میکنی از همون پایه ها در AT32 استفاده کن
      امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

      دیدگاه


        #4
        پاسخ : تغییر برنامه برای مگا 32

        داداش شما که زحمت میکشی - مدارت کار کرد تو همین پست یه ندا بده - دمت گرم

        دیدگاه

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