![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 21
: |
![]() Chào các bác.
Hiện tại em đang phải làm về mạch điều khiển quang báo từ xa (dùng RF). Em đang gặp phải một số vấn đề sau mong các bác chỉ giúp ! Giả sử em đã thành công trong việc thu và phát sóng RF. Em đang gặp vấn đề là khi chương trình 1 của em đang chạy nếu ấn nút khác (tức là nhận được dữ liệu khác) thì chương trình tương ứng không thực hiện. Thứ 2 là chương trình của em chỉ chạy được một lần là thoát khỏi vòng lặp. Các bác xem giùm rồi chỉ giáo cho: Chương trình của em đây: void giai_ma() { i=0; while(i<=35) { set_timer0(0); while(rx); while(!rx); t0=get_timer0(); if(t0>89) i=0; if(t0>=77&&t0<=80) i++; } j++; i=0; data[1]=0; while(i<8) { data[1]=data[1]<<=1; bit=rx; data[1]=data[1] | bit; if (bit==0) { while(!rx); } if(bit==1) { while(rx); } i++; delay_us(410); } data[0]=data[1]; } void kiem_tra() { if(data[0]==data_2[1]) { bien=1; } else if(data[0]==data_2[2]) { bien=2; } else if(data[0]==data_2[3]) { bien=3; } else if(data[0]==data_2[4]) { bien=4; } } void chuong_trinh_1() { for(m=0; m<=232;m++) { for(l=0;l<=50;l++) { RC1 = 1; RC0 = 1; RC0 = 0; RC1 = 0; giai_ma(); kiem_tra(); for(k=0;k<=40;k++) { RC0 = 1; RC0 = 0; output_d(UTEHY[m+k]); delay_us(50); output_d(0x00); } } } } void chuong_trinh_2() { for(m=0; m<=320;m++) { for(l=0;l<=50;l++) { RC1 = 1; RC0 = 1; RC0 = 0; RC1 = 0; giai_ma(); kiem_tra(); for(k=0;k<=40;k++) { RC0 = 1; RC0 = 0; output_d(QKVN[m+k]); delay_us(50); output_d(0x00); } } } } void chuong_trinh_3() { for(m=0; m<=348;m++) { for(l=0;l<=50;l++) { RC1 = 1; RC0 = 1; RC0 = 0; RC1 = 0; giai_ma(); kiem_tra(); for(k=0;k<=40;k++) { RC0 = 1; RC0 = 0; output_d(NGVN[m+k]); delay_us(50); output_d(0x00); } } } } void chuong_trinh_4() { for(m=0; m<=212;m++) { for(l=0;l<=50;l++) { RC1 = 1; RC0 = 1; RC0 = 0; RC1 = 0; giai_ma(); kiem_tra(); for(k=0;k<=40;k++) { RC0 = 1; RC0 = 0; output_d(HPNY[m+k]); delay_us(50); output_d(0x00); } } } } //=============chuong trinh chinh=================\\ void main() { set_tris_a(0x00); set_tris_b(0xff); set_tris_c(0x00); set_tris_d(0x00); enable_interrupts(int_timer0); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64); enable_interrupts(global); data[0]=0; j=0; bien=0; while(true) { giai_ma(); kiem_tra(); while(bien==1) { chuong_trinh_1(); } while(bien==2) { chuong_trinh_2(); } while(bien==3) { chuong_trinh_3(); } while(bien==4) { chuong_trinh_4(); } } } |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 21
: |
cái data_2[]; là code để em so sánh với code bên phát
thay đổi nội dung bởi: JumboT, 25-11-2010 lúc 04:44 PM. |
![]() |
![]() |
![]() |
#3 |
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 21
: |
Em thay đoạn code if(data[0]==data_2[1]) bằng đoạn code if(rb0==0) (em thay bằng nút bấm để dễ kiểm tra)
Dưới đây là đoạn code của em. Tại sao khi em sử dụng lệnh goto nhan; như vậy mà nó toàn báo lỗi. Em cũng không biết là lỗi gì nữa ! Các bác giúp em với Em đang gấp lắm rồi ! |
![]() |
![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 21
: |
vậy là ko có cao thủ nào chịu giúp em rồi.
Kiều này ko biết qua đc cơn hiểm nghèo này ko |
![]() |
![]() |
![]() |
|
|