View Single Post
Old 01-01-2010, 03:05 PM   #5
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
Answer for the New Year!^^

Hi all!
Lời đầu cho Bài viết đầu tiên trong năm mới 2010 này! Cho phép tôi gửi tới toàn thể Anh, Chị, Em, bạn bè trong diễn đàn "PIC VIET NAM" lời chúc mừng năm mới: Sức khỏe- thành công và gặp nhiều may mắn!

Về câu hỏi của bạn.
File mô phỏng của bạn mình ko mở được!
Tuy nhiên theo như code bạn viết:
Code:
#include <16f877a.h>
#include <def_877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=400000)

void main(void)
{
 trisd=0x1;
 portd=0x0;
 while(1)
 {
  if(rd0==1)
    rd6=0;
  else 
  {
     if(rd0==0)
      rb6=0;
     else 
     {
      if(rd6==0)
       rd6=1;
      else
       rd6=0;
     }
   }
 }
}
Mình có mấy góp ý sau:
Thứ nhất: Bạn khai báo sai Clock. Nếu sử dụng 4MHz thì còn thiếu 1 số 0. Nhưng theo mình nên dùng thạch anh 20MHz và tương ứng trong mô phỏng Proteus bạn phải khai báo tần số thạch anh giống như thế.

Thứ 2: Đoạn khai báo TRISD, ở đây RD0 của bạn là chân INPUT, còn RD6 là chân OUTPUT. Khai báo trisd=0x1 như bạn là chưa đúng (Khi chạy thì vẫn OK,nhưng PIC sẽ phải mất time để set lại). Có thể không cần khai báo gì.

Thứ 3: Thường thì nên thiết kế nút nhấn nối đất. Khi nhấn nút sẽ đưa mức logic của chân đc nối về 0. Theo như bạn làm thì đưa nó lên 1--> Khi đó, đưa RD6 về 0. Tuy nhiên khi RD6 về 0 thì bạn lại cho nó lên 1 ngay. Không thấy có thời gian delay để quan sát. Mà viết như bạn hơi dài dòng. Sửa lại và tìm cách viết ngắn hơn nhé!

Thân.
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn