اطلاعیه

Collapse
No announcement yet.

گیرنده و فرستنده hmt ,r

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

    گیرنده و فرستنده hmt ,r

    سلام
    من برنامه زیر را ب ای گیرنده و فرستنده نوشتم(البته با کمک این سایت)
    در عمل درست کار نمیکند
    ولی زمانی که یک ال ای دی در پایه ارسال مگذارم چشمک میزند
    برنامه فرستنده

    $regfile = "m8def.dat"
    $crystal = 11059200
    $baud = 9600
    Config Pinc.0 = Input
    Config Portb.0 = Output
    Config Pinc.1 = Input
    Config Portb.1 = Output
    Config Pinc.2 = Input
    Config Portb.2 = Output
    Config Pinc.3 = Input
    Config Portb.3 = Output
    Config Pinc.4 = Input
    Config Portb.4 = Output
    Dim X As String * 13
    Dim A As String * 13
    Dim B As String * 13
    Dim C As String * 13
    Dim D As String * 13
    Dim E As String * 13
    Dim F As String * 13
    Dim G As String * 13
    Dim H As String * 13
    Dim I As String * 13
    Dim J As String * 13
    A = "chnal1"
    B = "kh1"
    C = "chanal2"
    D = "kh2"
    E = "chanal3"
    F = "kh3"
    G = "chanal4"
    H = "kh4"
    I = "thigh"
    J = "kh5"
    Do
    Main:
    Debounce Pinc.0 , 1 , K1
    W:
    Debounce Pinc.0 , 0 , K11
    M:
    Debounce Pinc.1 , 1 , K2
    Q:
    Debounce Pinc.1 , 0 , K21
    N:
    Debounce Pinc.2 , 1 , K3
    Z:
    Debounce Pinc.2 , 0 , K31
    P:
    Debounce Pinc.3 , 1 , K4
    T:
    Debounce Pinc.3 , 0 , K41
    O:
    Debounce Pinc.4 , 1 , Thigh
    Ui:
    Debounce Pinc.4 , 0 , Thigh1

    Loop
    'xxxxxxxxxxxxxxxxxxxxxxxxxxx
    K1:
    Do
    Set Portb.0
    Print A ; Chr(13);
    Loop Until Pinc.0 > 1
    Goto W

    K11:
    Reset Portb.0
    Print B ; Chr(13);
    Goto M
    'xxxxxxxxxxxxxxxxxxxxxxxxxxx
    K2:
    Do
    Set Portb.1
    Print C ; Chr(13);
    Loop Until Pinc.1 > 1
    Goto Q

    K21:
    Reset Portb.1
    Print D ; Chr(13);
    Goto N
    'xxxxxxxxxxxxxxxxxxxxxxxxxxx
    K3:
    Do
    Set Portb.2
    Print E ; Chr(13);
    Loop Until Pinc.2 > 1
    Goto Z

    K31:
    Reset Portb.2
    Print F ; Chr(13);
    Goto P
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    K4:
    Do
    Set Portb.3
    Print G ; Chr(13);
    Loop Until Pinc.3 > 1
    Goto T

    K41:
    Reset Portb.3
    Print H ; Chr(13);
    Goto O
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Thigh:
    Set Portb.4
    Print I ; Chr(13);
    Goto Ui

    Thigh1:
    Reset Portb.4
    Print J ; Chr(13);
    Goto Main
    و برنامه گیرنده
    [left]$regfile = "m8def.dat"
    $crystal = 11059200
    $baud = 9600
    Config Portb.4 = Output : B4 Alias Pinb.4
    Config Portb.1 = Output : B1 Alias Pinb.1
    Config Portb.2 = Output : B2 Alias Pinb.2
    Config Portb.3 = Output : B3 Alias Pinb.3
    Config Portb.5 = Output
    Reset Portb.0
    Reset Portb.1
    Reset Portb.2
    Reset Portb.3
    Reset Portb.4
    Reset Portb.5

    Dim X As String * 13
    Dim A As Word

    Do
    Input X
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    If X = "chnal1" Then
    Do
    Set Portb.4
    Input X
    Loop Until X <> "chnal1"
    End If

    If X = "kh1" Then
    Reset Portb.4
    End If

    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    If X = "chanal2" Then
    Do
    Set Portb.1
    Input X
    Loop Until X <> "chanal2"
    End If

    If X = "kh2" Then
    Reset Portb.1
    End If

    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    If X = "chanal3" Then
    Do
    Set Portb.2
    Input X
    Loop Until X <> "chanal3"
    End If

    If X = "kh3" Then
    Reset Portb.2
    End If

    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    If X = "chanal4" Then
    Do
    Set Portb.3
    Input X
    Loop Until X <> "chanal4"
    End If

    If X = "kh4" Then
    Reset Portb.3
    End If

    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    If X = "thigh" Then
    Set Portb.5
    End If

    If X = "kh5" Then
    Reset Portb.5
    End If
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Loop
    شرمنده دوستان کسی کمک میکند

    #2
    پاسخ : گیرنده و فرستنده hmt ,r

    سلام
    من هم امتحان کردم همین مشکل شما را دارم
    ان شالله دوستان همت کنند حل شود

    دیدگاه


      #3
      پاسخ : گیرنده و فرستنده hmt ,r

      نوشته اصلی توسط navard
      سلام
      من برنامه زیر را ب ای گیرنده و فرستنده نوشتم(البته با کمک این سایت)
      در عمل درست کار نمیکند
      ولی زمانی که یک ال ای دی در پایه ارسال مگذارم چشمک میزند
      برنامه فرستنده
      این جور که از شواهد پیداست شما اصلا اون برنامه ای که من براتون نوشتم رو یه نگاه کوچیک هم ننداختی!
      من حداقل 10 بار گفتم چرا برنامه های از این قبیل جواب نمیده!
      به حرف من که کسی گوش نمی ده امیدوارم یکی پیدا بشه کمکتون کنه...

      دیدگاه


        #4
        پاسخ : گیرنده و فرستنده hmt ,r

        نوشته اصلی توسط mehrdad_italy
        این جور که از شواهد پیداست شما اصلا اون برنامه ای که من براتون نوشتم رو یه نگاه کوچیک هم ننداختی!
        من حداقل 10 بار گفتم چرا برنامه های از این قبیل جواب نمیده!
        به حرف من که کسی گوش نمی ده امیدوارم یکی پیدا بشه کمکتون کنه...
        اخه اون برنامه اونجا نوشتید کار نمیکنه

        دیدگاه


          #5
          پاسخ : گیرنده و فرستنده hmt ,r

          نوشته اصلی توسط navard
          اخه اون برنامه اونجا نوشتید کار نمیکنه
          باید برنامه رو با توجه به سخت افزار خودتون تغییر میدادین.

          شما شماتیک رو بذار تا با توجه به اون راهنمائیت کنم...
          موفق باشید...

          دیدگاه


            #6
            پاسخ : گیرنده و فرستنده hmt ,r

            [/img][/img][quote author=mehrdad_italy link=topic=75369.msg452226#msg452226 date=1365241148]
            باید برنامه رو با توجه به سخت افزار خودتون تغییر میدادین.

            شما شماتیک رو بذار تا با توجه به اون راهنمائیت کنم...
            موفق باشید...
            ممنون
            من در کل برای این میخواهم
            http://www.4shared.com/zip/s3DkNZ8f/kontrol.html

            دیدگاه


              #7
              پاسخ : گیرنده و فرستنده hmt ,r

              این مداری که فرستادی رو می خوای طوری برنامه بنویسی که هروقت کلیدی زده شد اونطرف هم همون کلید اعمال بشه ؟ و بقیه کلید ها کار نکنه ؟

              دیدگاه


                #8
                پاسخ : گیرنده و فرستنده hmt ,r

                نوشته اصلی توسط mehrdad_italy
                این مداری که فرستادی رو می خوای طوری برنامه بنویسی که هروقت کلیدی زده شد اونطرف هم همون کلید اعمال بشه ؟ و بقیه کلید ها کار نکنه ؟
                اره
                قط یکی از کلیدها میخام وقتی زده شد بقیه کار کنند

                دیدگاه


                  #9
                  پاسخ : گیرنده و فرستنده hmt ,r

                  هروقت تموم شد می ذارم همینجا...

                  دیدگاه


                    #10
                    پاسخ : گیرنده و فرستنده hmt ,r

                    نوشته اصلی توسط mehrdad_italy
                    هروقت تموم شد می ذارم همینجا...
                    ممنون مهندس جان
                    اینجور تغییرش دادم
                    ایشالله بتونم جبران کنم
                    http://www.4shared.com/rar/D7Xw6RQk/kontrol_bisim_4_chanal.html

                    دیدگاه


                      #11
                      پاسخ : گیرنده و فرستنده hmt ,r

                      خواهش می کنم
                      نمی دونم پروتئوس من با ATmega8 مشکل داره یا من نمی تونم باهاش کار کنم
                      برنامه رو با ATmega 32 شبیه سازی کنم مشکل نداره ؟

                      دیدگاه


                        #12
                        پاسخ : گیرنده و فرستنده hmt ,r

                        نوشته اصلی توسط mehrdad_italy
                        خواهش می کنم
                        نمی دونم پروتئوس من با ATmega8 مشکل داره یا من نمی تونم باهاش کار کنم
                        برنامه رو با ATmega 32 شبیه سازی کنم مشکل نداره ؟
                        نه مهندس
                        فداتون بشم

                        دیدگاه


                          #13
                          پاسخ : گیرنده و فرستنده hmt ,r

                          سلام دوستان :smile:
                          من یه hmt و hmr 915mhz دارم که میخوام راه اندازیش کنم . یه ال سیدی به پورت b اتمگا 8 زدم و کاراکتر 1 رو مدام میفرستم .ولی چیزای عجیب غریبی روی ال سیدی نشون میده....
                          میشه کمکم کنین؟
                          کد:
                          #include <mega8.h>  
                          #include <delay.h> 
                          #asm
                            .equ __lcd_port = 0x18; PORTB  0x12 D
                          #endasm
                          #include <lcd.h> 
                          #include <stdlib.h> 
                          #include <stdio.h>
                           
                          #define FRAMING_ERROR (1<<FE)
                          #define PARITY_ERROR (1<<PE)
                          #define DATA_OVERRUN (1<<DOR)
                          #define DATA_REGISTER_EMPTY (1<<UDRE)
                          #define RX_COMPLETE (1<<RXC)
                          
                          
                          // USART Receiver buffer
                          #define RX_BUFFER_SIZE 64
                          char rx_buffer[RX_BUFFER_SIZE];
                          #if RX_BUFFER_SIZE<256
                          unsigned char rx_wr_index,rx_rd_index,rx_counter;
                          #else
                          unsigned int rx_wr_index,rx_rd_index,rx_counter;
                          #endif
                          
                          // This flag is set on USART Receiver buffer overflow
                          bit rx_buffer_overflow;
                          
                          //void USART_Transmit(unsigned char);
                          //void USART_Receive();
                          
                          // USART Receiver interrupt service routine
                          interrupt [USART_RXC] void usart_rx_isr(void)
                          {
                           char status,data;
                           status=UCSRA;
                           data=UDR;   
                           if ((status & (FRAMING_ERROR | PARITY_ERROR |DATA_OVERRUN))==0)
                           {
                            rx_buffer[rx_wr_index]=data;
                            if (++rx_wr_index == RX_BUFFER_SIZE)
                             rx_wr_index=0;
                            if (++rx_counter == RX_BUFFER_SIZE)
                            {
                             rx_counter=0;
                             rx_buffer_overflow=1;
                            };
                           };
                          }
                          
                          #ifndef _DEBUG_TERMINAL_IO_
                          // Get a character from the USART Receiver buffer
                          #define _ALTERNATE_GETCHAR_
                          #pragma used+
                          char getchar(void)
                          {
                           char data;
                           while (rx_counter==0);
                           data=rx_buffer[rx_rd_index];
                           if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
                           #asm("cli")
                           --rx_counter;
                           #asm("sei")
                           return data;
                          }
                          #pragma used-
                          #endif
                          
                          // USART Transmitter buffer
                          #define TX_BUFFER_SIZE 32//64
                          char tx_buffer[TX_BUFFER_SIZE];
                          #if TX_BUFFER_SIZE<256
                          unsigned char tx_wr_index,tx_rd_index,tx_counter;
                          #else
                          unsigned int tx_wr_index,tx_rd_index,tx_counter;
                          #endif
                          
                          // USART Transmitter interrupt service routine
                          interrupt [USART_TXC] void usart_tx_isr(void)
                          {
                          
                           if (tx_counter)
                           {
                            --tx_counter;
                            UDR=tx_buffer[tx_rd_index];
                            if (++tx_rd_index == TX_BUFFER_SIZE)
                             tx_rd_index=0;
                           }; 
                          }
                          
                          #ifndef _DEBUG_TERMINAL_IO_
                          // Write a character to the USART Transmitter buffer
                          #define _ALTERNATE_PUTCHAR_
                          #pragma used+
                          void putchar(char c)
                          {
                                        
                           while (tx_counter == TX_BUFFER_SIZE);
                           #asm("cli")
                           if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
                           {
                            tx_buffer[tx_wr_index]=c;
                            if (++tx_wr_index == TX_BUFFER_SIZE)
                             tx_wr_index=0;
                            ++tx_counter;
                           }
                           else
                           {  
                            UDR=c;
                           }
                           #asm("sei") 
                                       
                          }
                          #pragma used-
                          #endif
                          
                          /***************************************/
                               
                          void main()
                          { 
                            char str;
                            UCSRA=0x00;
                            UCSRB=0xD8; 
                            UCSRC=0x86;
                            UBRRH=0x00;
                            UBRRL=0x67;
                           
                            #asm("sei") 
                            lcd_init(16); 
                            lcd_gotoxy(0,0); 
                            lcd_putsf("start..");
                            delay_ms(1000);
                            lcd_clear();
                            while(1)
                            {  
                              printf("1");
                              
                              while(rx_counter>0)
                              {    
                                  str=getchar();
                                  if(str=='1')
                                    lcd_putsf(" ok ");
                                  else
                                    lcd_putchar(str);
                                  delay_ms(100);
                              }  
                             
                            }   
                            
                          }
                          اگه پایه های rx tx میکرو رو به هم وصل کنم کاراکتر ok رو نشون میده که نشون دهنده این هس که ارسال و دریافت داره به درستی انجام میشه... ولی وقتی به ماژول هام وصل میکنم ممکنه فقط 4 تا ok روی ال سیدی نشون بده بقیش معلوم نیس چیه از شکلک وعدد گرفته تا حروف چینی میاد
                          انگار فقط توی 3 4 بار اول کاراکترو درس ارسال میکنه....
                          تاحالا کسی به این مشکل خورده؟؟

                          از دوستانی که راهنمایی کنن پیشاپیش متشکرم

                          دیدگاه


                            #14
                            پاسخ : گیرنده و فرستنده hmt ,r

                            این دیگه کامل باید جواب بده ( تغییرش بده برای atmega8 )

                            http://www.4shared.com/rar/tO6Ptr7G/HM-T-R.html

                            اگه نتونستی جواب بگیری مشکل از جای دیگست.
                            موفق باشی...

                            دیدگاه


                              #15
                              پاسخ : گیرنده و فرستنده hmt ,r

                              نوشته اصلی توسط mehrdad_italy
                              این دیگه کامل باید جواب بده ( تغییرش بده برای atmega8 )

                              http://www.4shared.com/rar/tO6Ptr7G/HM-T-R.html

                              اگه نتونستی جواب بگیری مشکل از جای دیگست.
                              موفق باشی...
                              ممنون
                              یه سوال اگر خازن های دو سر کریستال را نگذاریم چه مشکلی احتمال دارد رخ بدهد؟

                              دیدگاه

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