![]() |
Page 1, page2, page3 của bộ nhớ chương trình
Khi chương trình của mình dài đi và mình bắt buộc phải sử dụng tới các page khác như page1 chẳng hạn. Mình nghiên cứu rất kỷ datasheet của Pic12F877 và nó nói rằng khi ta thực hiện lệnh GOTO hay lệnh CALL thì chúng ta cần lựa chọn page bằng cách set giá trị thích hợp cho PCLATH 4 và PCLATH 3 để lựa chọn page cần đến. Còn khi quay về thì không cần thiết xác định page vì CPU sẽ lấy từ Stack ra có đủ 13 bít rồi.
ORG 0x0100 ; PAGE1 . . . BSF PCLATH , 4 BCF PCLATH , 3 CALL DELAY04S_P1 . . . ORG 0x0900 DELAY04S_P1 BCF STATUS , RP0 BCF STATUS , RP1 MOVLW D'242' MOVWF DELAY_REG1 LOOP3_P1 BCF PCLATH , 4 BCF PCLATH , 3 CALL DELAY2000 BSF PCLATH , 4 BCF PCLATH , 3 DECFSZ DELAY_REG1 GOTO LOOP3_P1 RETURN Mình đã cố gắng hết sức nhưng vẩn không thế nào viết chương trình được trên page 1, 2, 3 khi dịch thì hầu như không có lổi gì nhưng khi xem lại code thì thấy nó gọi CALL và GOTO sai địa chỉ hết trơn. Nó toàn là đến page0 thôi. Mình nạp thử vào phần cứng thì sai bét hết. Bạn nào biết xin chỉ dùm với. Xin cám ơn. |
Nhảy tới page1 (0x100) : BSF PCLATH,0
page 2(0x200) : BCF PCLATH,0 BCF PCLATH,1 page 3(0x300) : BSF PCLATH,0 BSF PCLATH,1 |
Múi giờ GMT. Hiện tại là 11:31 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam