|
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 |
03-10-2006, 10:19 AM | #4 |
Đệ tử 4 túi
Tham gia ngày: Feb 2006
Bài gửi: 66
: |
Ta biết rằng nhãn LOOP ở đỉa chỉ 0000h và nhãn DELAY ở địa chỉ 0804h, cả hai lệnh CALL và GOTO đều sử dụng đến nội dung các bit PCLATH<4:3>
Vậy thì sau khi thiết lập PCLATH, thực thi xong chương trình DELAY, lệnh GOTO LOOP sẽ được thực thi? Câu trả lời là KHÔNG! Tại sao vậy? Để lệnh GOTO LOOP hoạt động đúng thì địa chỉ trỏ đến của lệnh này phải là 00h, tuy nhiên do giá trị của PCLATH vẫn là 0000 1000, điều này có nghĩa là lệnh GOTO LOOP sẽ trỏ đến địa chỉ 0800h chứ không phải là 0000h như ta mong muốn!Sửa chữa? Ta có thể Reset giá trị PCLATH trước khi quay trở về từ chương trình con như thế này: Code:
ORG 0x00 LOOP MOVLW HIGH(DELAY) ;W=08H MOVWF PCLATH ;PCLATH=0000 1000B CALL DELAY GOTO LOOP . . . ORG 0X0800 ERROR GOTO ERROR NOP NOP NOP DELAY NOP NOP CLRF PCLATH RETURN Trên đây là phần lược dịch của mình, do trình độ Anh ngữ và chuyên môn hạn hẹp nên có thể có vài từ ngữ chuyên môn không dịch đúng hoặc không hiểu đúng-->dịch sai.Còn rất nhiều những vấn đề khác mong được các bạn viết bài hưởng ứng, để những NEWUSER như mình có dịp học hỏi! thay đổi nội dung bởi: newuser, 03-10-2006 lúc 10:23 AM. |
|
|
Similar Threads | ||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
sách về 8051 | 111985 | Trao đổi ngoài luồng | 0 | 28-11-2006 08:26 AM |
8051 | thanhcong138 | Trao đổi ngoài luồng | 2 | 17-09-2006 12:25 AM |
chút xíu về 8051 | levan8421 | Trao đổi ngoài luồng | 2 | 11-07-2006 11:12 PM |