View Single Post
Old 23-02-2008, 03:47 PM   #1
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Bật tắt LED không được?

Một số bạn viết chương trình với C và thử trên mạch thấy LED không sáng hoặc không tối được khi đặt PORTx.i ở mức cao.

Các bạn chú ý cần phải đặt chương trình trong vòng lặp

while(1){}

Hoặc đặt lệnh này ở cuối chương trình, hoặc thêm vào đoạn mã MPASM:

#asm
SLEEP
#endasm

Điều này xảy ra do chương trình sau khi chạy tới cuối cùng trên C sẽ không hiểu được đoạn END của chương trình. Khi đó chương trình tiếp tục chạy tiếp và nhận toàn các giá trị không hiểu được của phần chương trình không được viết ở phía dưới.

Khi viết bằng MPASM ta luôn nhớ và luôn khoá chương trình bằng GOTO $ hoặc SLEEP, nhưng khi viết bằng C thì lại thường hay quên gọi while(1){} nên xảy ra tình trạng này.

Điều này không chỉ xảy ra với việc bật tắt LED, nhưng mà thường khi viết chương tình dài thì ta không bị gặp lỗi này do đã có vòng lặp while. Nhưng nhất là những lúc làm chương trình test thì lỗi này hay xảy ra.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn