PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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
Prev Previous Post   Next Post Next
Old 08-10-2006, 11:01 AM   #1
hoangminh1234
Đệ 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);
            }
rồi đến chương trình slave
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);
}}
sơ đồ mô phỏng proteus

/*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
*/
Hình Kèm Theo
File Type: gif hinhve.GIF (89.3 KB, 427 lần tải)
File Kèm Theo
File Type: rar proteus.rar (14.6 KB, 696 lần tải)

thay đổi nội dung bởi: hoangminh1234, 09-10-2006 lúc 02:26 PM.
hoangminh1234 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

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


Múi giờ GMT. Hiện tại là 12:33 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam