برنامه فعال سازی rs232 در avr با وقفه را می خواهم
اطلاعیه
Collapse
No announcement yet.
کار با rs232 در avr
Collapse
X
-
پاسخ : کار با rs232 در avr
با سلام
من در حین ارتباط با rs232 به مشکلی برخوردم که تا حالا باهاش مواجه نشدم...من یه برد با atmega128 دارم که ارتباط USART1 آن را فعا کردم و با دستور getchar1 و putchar1 با کدویژن و میکرو ارتباط برقرار کردم...برای دریافت و ارسال اطلاعات از کامپیوتر به میکرو از برنامه VB6 استفاده کردم و بادریت 9600 و کریستال 4 مگا استفاده کردم یه کامند گذاشتم در اون کامند اطلاعات را به میکرو ارسال کردم برنامه vb :
کد:Private Sub Command1_Click() Dim Presure1 As String Dim n As Integer Dim m As Integer Dim ss As Integer MSComm1.Output = "p" For n = 1 To 100 For m = 1 To 100 Next m Next n Text1.Text = MSComm1.Input End Sub
کد:#include <mega128.h> #include <stdio.h> #include <delay.h> #include <math.h> #ifndef RXB8 #define RXB8 1 #endif #ifndef TXB8 #define TXB8 0 #endif #ifndef UPE #define UPE 2 #endif #ifndef DOR #define DOR 3 #endif #ifndef FE #define FE 4 #endif #ifndef UDRE #define UDRE 5 #endif #ifndef RXC #define RXC 7 #endif #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC) // Get a character from the USART1 Receiver #pragma used+ //////////////////////////////////////////////////////////////////////////////////////////////////// char getchar1(void) { char status,data; while (1) { while (((status=UCSR1A) & RX_COMPLETE)==0); data=UDR1; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) return data; } } #pragma used- // Write a character to the USART1 Transmitter #pragma used+ void putchar1(char c) { while ((UCSR1A & DATA_REGISTER_EMPTY)==0); UDR1=c; } #pragma used- ////////////////////////////////////////////////////////////// // Declare your global variables here void main(void) { char a=0; //int overflow=0; //char b=0; unsigned char xx[2086]; unsigned char adc_value; //unsigned char yy[2086]; //char V; char cc; int i; int n; int j; //int l=0; unsigned int k; unsigned int flag; //long nExpo; //unsigned char adc_value; volatile unsigned char s=0x00; volatile unsigned char u=0x00; volatile unsigned char h=0x00; // Declare your local variables here //-----------------------------------------------------------------------------------------Ports // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0xff; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0xff; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0xff; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Port E initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTE=0x00; DDRE=0x00; // Port F initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTF=0x00; DDRF=0x00; // Port G initialization // Func4=In Func3=In Func2=In Func1=In Func0=In // State4=T State3=T State2=T State1=T State0=T PORTG=0x00; DDRG=0x00; // USART1 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART1 Receiver: On // USART1 Transmitter: On // USART1 Mode: Asynchronous // USART1 Baud Rate: 9600 UCSR1A=0x00; UCSR1B=0x18; UCSR1C=0x06; UBRR1H=0x00; UBRR1L=0x19; while (1) { a=getchar1(); if (a=='p') { putchar1('5'); }
ولی توی vb هیچ دریافتی ندارم...خواهش میکنم کمکم کنید...پاک گیج شدمم....
دیدگاه
دیدگاه