|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
|
Ðiều Chỉnh | Xếp Bài |
08-10-2006, 11:01 AM | #1 |
Đệ tử 1 túi
Tham gia ngày: Nov 2005
Bài gửi: 23
: |
Giao tiếp UART
Em đang viết chương trình giao tiếp giữa hai con 16f877 với mục đích là truyền hàng loạt byte từ con này sang con kia. Chương trình truyền được rồi và hiển thị khá đúng theo ý muốn. Nhưng cái hạn chế quá lớn của chương trình là tốc độ truyền chậm quá. Mỗi lần truyền một byte xong thì phải delay_ms(250) thì con tớ mới nhận được đúng.Mình đã thử nhiều số khác nhau nhưng khi giảm nhỏ xuống còn delay_ms(200) thì không nhận được nữa. Các huynh (đặc biệt là anh LaMuaThu ) cho xin ý kiến nhé
sau đây là .chương trình con master Code:
/*chuong trinh 1 MASTER MASTER MASTER MASTER MASTER MASTER MASTER MASTER xuat du lieu tu master ra cong noi tiep MASTER MASTER MASTER muc dich: truyen du lieu tu pic nay sang pic khac MASTER MASTER MASTER MASTER MASTER MASTER MASTER MASTER MASTER MASTER MMMMMASTER MASTER MASTER*/ //MASTER SAU KHI TRUYEN MOT SO BYTE NHAT DINH THI SAU DO KO LAM GI CA #include <16F877a.h> #fuses HS, NOWDT, NOLVP, XT #use delay(clock=4000000) #use rs232(baud=19200,xmit=pin_c6,rcv=pin_c7) byte data_out[8]={0x55,0Xaa,0X88,0x11,0x22,0x33,0x44,0x55}; void main() { set_tris_b(0x00);set_tris_d(0); output_d(data_out[0]);//1 putc(data_out[0]); delay_ms(250); output_d(data_out[1]);//2 putc(data_out[1]); delay_ms(250); output_d(data_out[2]);//3 putc(data_out[2]); delay_ms(250); output_d(data_out[3]);//4 putc(data_out[3]); delay_ms(250); output_d(data_out[4]);//5 putc(data_out[4]); delay_ms(250); output_d(data_out[5]);//6 putc(data_out[5]); delay_ms(250); output_d(data_out[6]);//7 putc(data_out[6]); delay_ms(250); output_d(data_out[7]);//8 putc(data_out[7]); delay_ms(250); } Code:
//SLAVE NHAN DU LIEU VA SAU DO CAT VAO CAC THANH GHI DA DUOC DINH SAN #include <16F877A.h> #fuses HS, NOWDT, NOLVP, XT #use delay(clock=4000000) #use rs232(baud=19200,xmit=pin_c6,rcv=pin_c7) int8 rcservo[8]; int8 next_in=0; void main() { set_tris_a(0);output_a(63); set_tris_d(0);output_d(255);delay_ms(20); for(;;){ if(kbhit()){ if(next_in==7) { goto xuatdulieu;} rcservo[next_in]=getch(); next_in++; } } xuatdulieu: delay_ms(100); for(;;){ output_d(rcservo[0]);output_a(1);delay_ms(1550); output_d(rcservo[1]);output_a(2);delay_ms(1550); output_d(rcservo[2]);output_a(3);delay_ms(1550); output_d(rcservo[3]);output_a(4);delay_ms(1550); output_d(rcservo[4]);output_a(5);delay_ms(1550); output_d(rcservo[5]);output_a(6);delay_ms(1550); output_d(rcservo[6]);output_a(7);delay_ms(1550); output_d(rcservo[7]);output_a(8);delay_ms(1550); }} /*muc dich cua ham output_a: a=1 => byte thu nhat dang hien thi ra portd a=2 => byte thu hai dang hien thi ra portd a=3 => byte thu ba dang hien thi ra portd .... delay de co the quan sat duoc su thay doi nay */ thay đổi nội dung bởi: hoangminh1234, 09-10-2006 lúc 02:26 PM. |
|
|
Similar Threads | ||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
dsPIC Tutorial 4-Module UART và I2C | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 76 | 09-05-2012 10:55 AM |
I2C, SPI, UART của PIC 16F877 dùng thế nào trên CCSC?? | zero_cd | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 8 | 28-03-2012 02:51 PM |
Alternate UART pin??? | alexjp | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 1 | 02-05-2006 06:26 PM |