PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp USB, CAN, I2C, SPI, USART... (http://www.picvietnam.com/forum/forumdisplay.php?f=45)
-   -   Giao tiêp RS232 giữa 2 pic8f4620 (http://www.picvietnam.com/forum/showthread.php?t=26873)

thuong_123 17-06-2012 04:20 PM

Giao tiêp RS232 giữa 2 pic8f4620
 
Mình đang làm về giao tiếp RS232 giữa 2 con pic 18f4620. Mình thắc mắc khi mình cho 2 con pic giao tiếp thực tế. Ban đầu khi cấp điện cho 2 con pic hoạt động, thì data được truyền đi và con pic (nhận) data hiển thị đúng giá trị sau khi truyền là hiển thị từ 0 đến 9. Nhưng khi reset con pic (truyền), thì con pic (nhận) không hiển thị đúng giá trị, hay nói cách khác là nó không cập nhật giá trị mới. Mà phải reset lại nó mới nhận được. Như vậy có cách nào khắc phục lỗi này không, mong các bạn giúp đỡ. Thanks!

Chương trình của việc truyền
void main()
{
set_tris_c(0x00);
set_tris_b(0b00000010);

setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_4);
set_uart_speed(9600); //giao tiep RS232
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

// TODO: USER CODE!!
while(1)
{
for(i=0;i<10;i++)
{
InValueOut=maled[i];
output_d(maled[i]);
putc(InValueOut);
Delay_ms(255);
}
}
}

Chương trình nhân data
void main()
{set_tris_b(0x01); //SPI data in B0, chan cho chip slave B2
set_tris_c(0b10000000); //chan RC7 nhan RS232
set_tris_d(0x00); //lcd
//setup_spi( SPI_MASTER | SPI_L_TO_H| SPI_CLK_DIV_16 ); //giao tiep SPI
set_uart_speed(9600); //giao tiep RS232
//LCD_Init();
while(1)
{ if(kbhit())
{
inDataIn=getch(); //nhan
// delay_ms(200);
output_d(inDataIn);
delay_ms(200);
}
}
}

lambaotrung 12-07-2012 11:18 AM

chúc bạn thành công
 
1 Attachment(s)
mình đã làm chủ đề từ rất lâu rồi.... nhưng ở mức cơ bản.
minh chia sẽ với bạn cái này nhe....
chúc bạn thành công.


Múi giờ GMT. Hiện tại là 04:08 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam