![]() |
|
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ử 3 túi
Tham gia ngày: Apr 2008
Bài gửi: 48
: |
![]() anh à!cho em hỏi đoạn chương trình sau có vài chỗ em không hiểu lắm(trích từ chương trình khởi đầu cho interrupt của Falleaf)
Code:
MOVWF W_SAVE ;W_SAVE(bank unknown!) = W SWAPF STATUS, W CLRF STATUS ; force bank 0 for remainder of handler tiện thể cho em hỏi lệnh Code:
MOVF với lệnh MOVWF khác nhau như thế nào thay đổi nội dung bởi: doremino, 19-05-2008 lúc 07:17 PM. Lý do: thiếu |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
Ở cuối chương trình xử lý ngắt, quá trình phục hồi thanh ghi STATUS chỉ diễn ra theo trình tự ngược với quá trình lưu nó, nhưng với thanh ghi W thì cần phải dùng hai lệnh SWAPF để phục hồi thanh ghi W từ ô nhớ W_TEMP, vì không thể dùng lệnh MOVF để chép nội dung của W_TEMP (sẽ làm ảnh hưởng cờ Z trong thanh ghi STATUS vừa được phục hồi). Code mẫu trong các datasheet cho quá trình lưu ngữ cảnh khi xử lý ngắt là rất chuẩn, không có cách nào hiệu quả hơn. Trong phần giải thích trên đã đề cập đến sự khác biệt giữa MOVF và MOVWF (MOVF dùng để sao chép thanh ghi F vào chính nó hay vào W, MOVWF để sao chép thanh ghi W vào F, nếu địa chỉ của F là 0 là lệnh sẽ sao chép thanh ghi W vào chính nó). 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 |
|
![]() |
![]() |
![]() |
|
|