Chợ thông tin Thiết bị Viễn thông Việt Nam
Trở lại   Chợ thông tin Thiết bị Viễn thông Việt Nam Quảng Cáo - Tuyển dụng - Thảo Luận - Tìm mua - Đặt hàng Tâm tình dân kỹ thuật
 
 
Công cụ bài viết Kiểu hiển thị
Cũ 11-03-2013, 11:12 AM   #1
psmvn
Member
 
Tham gia ngày: May 2012
Bài gửi: 45
Online Status: psmvn đang online
Mặc định Thí nghiệm nho nhỏ với PIC/ AVR với RF

Hệ thống quảng cáo SangNhuong.com

Với đoạn code lệnh như sau đc viết trong ngắt ngoài của PIC/ AVR:
Mã:
if((13*T_T)>>2 <=RF_time_copy && RF_time_copy< (15*T_T)>>2 && RF_check_start_bit==0)// 3.5bit { RF_check_start_bit=1;//Bao da nhan dc bit start RF_number_recive=0;//Dem so lan nhan data RF_shift_data=0;//Bat dau tinh so lan dich bit } //_____________________Vi tri bat dau o cuoi(1.5bit)____________________________________________ else if((5*T_T)>>2 <=RF_time_copy && RF_time_copy < (7*T_T)>>2 && RF_check_start_bit==1 && RF_number_recive==0 && RF_end==0) { RF_end=1;//Xung canh len dau tien o vi tri end RF_middle=0; RF_number_recive=1; } //____________________Vi tri bat dau o giua(2bit)________________________________ else if((7*T_T)>>2 <=RF_time_copy && RF_time_copy< (9*T_T)>>2 && RF_check_start_bit==1 && RF_number_recive==0 && RF_middle==0) { RF_middle=1;//Xung canh len dau tien o vi tri middle RF_end=0; RF_number_recive=1; } //_______________________________________________________________________ else if((3*T_T)>>2 <=RF_time_copy && RF_time_copy< (5*T_T)>>2 && RF_end==1)//Neu do rong bit=1bit va bat dau la vi tri end { if(RF_shift_data<8) { RF_data_in=RF_data_in<<1;//Dich trai 1 bit RF_data_in=RF_data_in|0x00; RF_shift_data++;//Dem so lan dich bit } RF_end=1;//Xung canh len sau do o vi tri end RF_middle=0; } else if((3*T_T)>>2 <=RF_time_copy && RF_time_copy< (5*T_T)>>2 && RF_middle==1)//Neu do rong bit=1bit va bat dau la vi tri middle { if(RF_shift_data<8) { RF_data_in=RF_data_in<<1;//Dich trai 1 bit RF_data_in=RF_data_in|0x01; RF_shift_data++;//Dem so lan dich bit } RF_middle=1;//Xung canh len sau do o vi tri middle RF_end=0; } //_______________________________________________________________________ else if((5*T_T)>>2 <=RF_time_copy && RF_time_copy< (7*T_T)>>2 && RF_end==1)//Neu do rong bit=1.5bit va bat dau la vi tri end { if(RF_shift_data<8) { RF_data_in=RF_data_in<<1;//Dich trai 1 bit RF_data_in=RF_data_in|0x00; RF_shift_data++;//Dem so lan dich bit } RF_middle=1;//Xung canh len sau do o vi tri middle RF_end=0; } else if((5*T_T)>>2 <=RF_time_copy && RF_time_copy< (7*T_T)>>2 && RF_middle==1)//Neu do rong bit=1.5bit va bat dau la vi tri middle { if(RF_shift_data<8) { RF_data_in=RF_data_in<<1;//Dich trai 1 bit RF_data_in=RF_data_in|0x01; RF_shift_data++;//Dem so lan dich bit } if(RF_shift_data<8) { RF_data_in=RF_data_in<<1;//Dich trai 1 bit RF_data_in=RF_data_in|0x00;//Xac dinh duoc them gia tri giai ma ke tiep RF_shift_data++;//Dem so lan dich bit } RF_end=1;//Xung canh len sau do o vi tri end RF_middle=0; } //_______________________________________________________________________ else if((7*T_T)>>2 <=RF_time_copy && RF_time_copy< (9*T_T)>>2 && RF_middle==1)//Neu do rong bit=2bit va bat dau la vi tri middle { if(RF_shift_data<8) { RF_data_in=RF_data_in<<1;//Dich trai 1 bit RF_data_in=RF_data_in|0x01; RF_shift_data++;//Dem so lan dich bit } if(RF_shift_data<8) { RF_data_in=RF_data_in<<1;//Dich trai 1 bit RF_data_in=RF_data_in|0x00;//Xac dinh duoc them gia tri giai ma ke tiep RF_shift_data++;//Dem so lan dich bit } RF_middle=1;//Xung canh len sau do o vi tri middle RF_end=0; } else if((9*T_T)>>2 <=RF_time_copy && RF_time_copy< (11*T_T)>>2)// Neu co Byte Stop// 2.5bit { if(RF_shift_data==8)//Neu du 8bit { //RF_data=RF_data_in;//Copy du lieu_Dam bao an toan du lieu da nhan duoc RF_Buffer[RF_counter]=RF_data_in; RF_data=RF_data_in; RF_counter++;// Overlow Buffer if(RF_counter==4)// Neu nhan du 4 gia tri { RF_Buffer_Overlow=1;// Overlow Buffer RF_counter=0; } } //RF_data_in=0;//Xoa du lieu nhan RF_shift_data=0; RF_middle=0; RF_end=0; RF_time=0; RF_enable_time=1; RF_number_recive=0; RF_check_start_bit=0; } else//Neu du lieu nhan ko dung ma manchester { RF_data_in=0;//Xoa du lieu nhan RF_shift_data=0; RF_middle=0; RF_end=0; RF_time=0; RF_enable_time=1; RF_number_recive=0; RF_check_start_bit=0; RF_time_copy=0; }
Mọi người đừng quan tâm code viết gì_Mà chỉ quan tâm viết như thế nào thôi nhé( Ko bàn tính tối ưu ở đây nhé)
Chú ý màu xanh đậm, nếu viết dạng biểu thức thì PIC887 ko giải mã đc, AVR vẫn ok. Nếu mình tính toán hộ Pic887 thì Pic887 giải mã đc.
Kết quả:
AVR( Mega8) giải mã tốt với code trên.
PIC 16F887 ko giải mã đc theo code trên.
Anh em cứ chém tẹt ga để mọi người thêm kinh nghiệm và lựa chọn.=D>
  Trả lời với trích dẫn


CHUYÊN MỤC ĐƯỢC TÀI TRỢ BỞI
 


Công cụ bài viết
Kiểu hiển thị

Quyền viết bài
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is Mở
Mặt cười đang Mở
[IMG] đang Mở
HTML đang Mở
Chuyển đến

SangNhuong.com

© 2008 - 2025 Nhóm phát triển website và thành viên SANGNHUONG.COM.
BQT không chịu bất cứ trách nhiệm nào từ nội dung bài viết của thành viên.
Diễn đàn được xây dựng bởi SangNhuong.com