![]() |
|
Tài trợ cho PIC Vietnam |
MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ... |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Nov 2006
Bài gửi: 19
: |
Bác namqn phân tích hoàn toàn đúng, ở đây câu lệnh XORLW bị thừa. Nhưng nếu để nguyên như cũ của nó thì vòng lặp này đúng là chỉ chạy được một vòng duy nhất thôi bác ah.
namqn: bạn nói chính xác, đã được xác nhận từ các người dùng có kinh nghiệm trên diễn đàn của Microchip: http://forum.microchip.com/tm.aspx?m...1&key=𸁴. thay đổi nội dung bởi: namqn, 17-02-2007 lúc 08:39 AM. |
![]() |
![]() |
![]() |
#2 |
PIC Bang chủ
|
Trong hai cách sửa XORLW, thì cách đảo INCF với MOVF của bạn hungpq hiệu quả hơn và chuẩn hơn so với cách sửa XORLW 0x00.
Tuy nhiên bạn dùng lệnh RETURN rất không ổn. Bản thân lệnh RETURN nó không làm gì hết, nhưng có có một nhiệm vụ là lôi cái Top of Stack ra và nhảy tới đó. Giả sử đoạn chương trình trên của bạn, bạn viết dạng CALL thì lập tức nó nhảy về chỗ CALL đó mà không thực hiện tiếp lệnh bên dưới. Nhưng nếu bạn không sử dụng CALL, và TOS đang trống!!? Do vậy, cách viết an toàn là GOTO $+3 Rồi nếu bạn dùng CALL thì ngay sau dòng GOTO LOOP, bạn sử dụng RETURN. Nếu bạn không dùng CALL, thì bạn có thể làm gì đó cũng được, ngay sau đó. Hồi F viết, F hay đặt một cái nhãn chỗ RETURN và nếu cần RETURN thì F nhảy tới đó. Viết như vậy để giữ cấu trúc: Code:
CALL LOOP ... ... LOOP .. RETLOOP RETURN Về phần bạn hỏi về ghi WR, đã gần 3 năm F không đụng tới PIC, cho nên F không thực sự nhớ rõ lắm. Tuy nhiên, bạn thử kiểm tra lại đoạn này. Đó là khi ghi Flash thì WR sẽ được tự xóa, và nó hoàn toàn được thực hiện bởi phần cứng. Khi đó nó không hề được xử lý gì cả. Có nghĩa là việc thì bạn có quyền bật trong chương trình, nhưng sau đó, thì bạn sẽ không thấy gì cả mà tự động tắt. Trong MPLAB, nó cho bạn xem EEPROM bằng MPLAB SIM. Vì vậy, bạn có thể theo dõi kết quả EEPROM có được ghi hay chưa. Bạn cũng có thể xem PROGRAMME MEMORY. Bạn chọn View và chọn các mục tương ứng để quan sát tại các địa chỉ mà bạn tương tác. Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
![]() |
![]() |
![]() |
#3 |
Trưởng lão PIC bang
|
Tôi xin lỗi vì một số nhận định không chính xác ở các post trước. Tôi (và có lẽ nhiều người dùng lâu năm) thường tin tưởng một cách chủ quan vào các datasheet của nhà sản xuất.
Tôi xin xác nhận là những ý kiến của bạn hungpq về sai sót của đoạn code mẫu trong datasheet của PIC16F87xA là chính xác: đoạn code đó chỉ thực thi 1 lần nếu đúng theo các điều kiện ban đầu được đặt ra, và cách sửa tốt là bỏ lệnh XOR và đổi BTFSC thành BTFSS. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 thay đổi nội dung bởi: namqn, 18-02-2007 lúc 12:36 AM. Lý do: bổ sung thông tin |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Chuỗi được lưu trong Flash | bien_van_khat | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 24 | 15-12-2010 09:43 AM |
về Pickit 1 FLASH Starter Kit | hawinter | Cơ bản về vi điều khiển và PIC | 2 | 19-12-2006 01:16 AM |