اطلاعیه
Collapse
No announcement yet.
کمک ساخت دسته کنترل با دوتا اتمگا هشت و ارتباط سریالی
Collapse
X
-
پاسخ : کمک ساخت دسته کنترل با دوتا اتمگا هشت  
نوشته اصلی توسط behrooz006شما به هر زبانی که بلدید توضیح بدین
فقط توضیح بدین
:angry: :angry:نوشته اصلی توسط behrooz006عزیز دل ممنون از این که پاسخ دادی
ولی من منضورم چیز دیگه ای هست
هرچند تا که دوسداشتم - یعنی یک با ر یکی شو شاید دفعه بعد ستاشو فشاد دادم من می خوام همش با هم عمل کنه
و تبق این چسزی که شما گفتی دقیقن 4096 حالت پیش میاد اگه من بخوام همه این هارو بنویسم که می میرم
آخه برای هر حالتی باید کد بنویسی دیگه!!!
مثلاً کلید A عملیات الف را انجام بده
کلید B عملیات ب و هر دو کلید عملیات ج انجام بده
حتی اگه دینامیکی هم بخواهی عملیات تعریف کنی باز هم اینطوری نمیشه :NO:
می شه در آن واحد دو چیز را از تریق پرت سریال انتقال داد
منظورتون از دوچیز همزمان چیه ؟ (چیز یعنی بایت ؟ )
ببین دوست عزیز فرم کار را باید مشخص کنید بعد برنامه نویسی را شروع کنید (نیاز سنجی)امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است
دیدگاه
-
پاسخ : کمک ساخت دسته کنترل با دوتا اتمگا هشت و ارتباط سریالی
درودی دوباره
این مدارش
این هم فایلش (سورس کد + شبیه سازی در پروتئوس ورژن 7.10)
http://s5.picofile.com/file/8114657742/Transfer_Reciver.zip.html
برنامه فرستنده
کد:/***************************************************** Date : 2/24/2014 Author : Saman.Asadi Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega8.h> #include <delay.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) // Write a character to the USART Transmitter #ifndef _DEBUG_TERMINAL_IO_ #define _ALTERNATE_PUTCHAR_ #pragma used+ void putchar(char c) { while ((UCSRA & DATA_REGISTER_EMPTY)==0); UDR=c; } #pragma used- #endif // Standard Input/Output functions #include <stdio.h> // Declare your global variables here void main(void) { // Declare your local variables here PORTB=0xFF; PORTC=0x3F; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; while (1) { putchar(0x0A); putchar(0x0D); putchar(PINB); putchar(PINC); delay_ms(20); } }
کد:/***************************************************** Date : 2/24/2014 Author : Saman.Asadi Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega8.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 USART Receiver #ifndef _DEBUG_TERMINAL_IO_ #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { char status,data; while (1) { while (((status=UCSRA) & RX_COMPLETE)==0); data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) return data; } } #pragma used- #endif // Standard Input/Output functions #include <stdio.h> // Declare your global variables here void main(void) { DDRB=0xFF; DDRC=0x3F; PORTD=0x03; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: Off // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x10; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; while (1) { if(getchar() == 0x0A) if(getchar() == 0x0D) { PORTB=getchar(); PORTC=getchar(); } } }
خیالت راحت
فقط به جای کریستال 8مگا 11.0592 بزارید (مخصوص پورت سریال)
به همین راحتی ...
به همین خوشمزگی ... :agree:
موفق باشی
دیدگاه
دیدگاه