پاسخ : مشکل ارتباط سریال بین میکرو و کامپیوتر
تو رو خدا یکی کمکم کنه! این کد :
ارسال کار می کنه ولی دریافت از طرف کامپیوتر نه!
فقط اون آخرشو ببینین دیگه ... سه تا پورت رو یکی یکی خروجی کردم(وصلن به ال ای دی برای تست برنامه)
تا ال ای دی دوم روشن میشه و کامپیوتر اطلاعات رو میگیره. ولی از طرف کامپیوتر می فرستم چیزی نمی گیره! (ال ای دی سوم روشن نمیشه)
در حالی که اگه rx و tx میکرو رو به هم وصل کنم کدی که میکرو میفرسته خودش دریافت می کنه و برنامه عمل می کنه(ال ای دی سوم روشن میشه)
مشکل چیه که وصل میکنم به max232 از طرف کامپیوتر نمی گیره؟!؟
تو رو خدا یکی کمکم کنه! این کد :
ارسال کار می کنه ولی دریافت از طرف کامپیوتر نه!
کد:
#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
// Standard Input/Output functions
#include <stdio.h>
// Declare your global variables here
char ch;
void main(void)
{
// Declare your local variables here
// 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=0x00;
DDRA=0xff;
// 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=0x00;
// 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=0xff;
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;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
delay_ms (500);
PORTA.0 = 1;
putsf("Hello World! testing serial port ... !!");
PORTA.1 = 1;
ch = getchar();
PORTA.2 = 1;
while (1)
{
// Place your code here
};
}
تا ال ای دی دوم روشن میشه و کامپیوتر اطلاعات رو میگیره. ولی از طرف کامپیوتر می فرستم چیزی نمی گیره! (ال ای دی سوم روشن نمیشه)
در حالی که اگه rx و tx میکرو رو به هم وصل کنم کدی که میکرو میفرسته خودش دریافت می کنه و برنامه عمل می کنه(ال ای دی سوم روشن میشه)
مشکل چیه که وصل میکنم به max232 از طرف کامپیوتر نمی گیره؟!؟









دیدگاه