View Single Post
Old 30-12-2007, 06:04 AM   #16
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Khi sao lưu các thanh ghi đặc biệt như FSR, STATUS, PCLATH, và W trong chương trình xử lý ngắt, nhất thiết phải dùng các thanh ghi có thể truy xuất từ một bank bất kỳ, vì ngắt có thể xảy ra ở bất kỳ thời điểm nào, nên bank hiện thời dùng để truy xuất các thanh ghi dữ liệu có thể là bất kỳ giá trị nào từ 0 đến 3. Vì lý do đó, các thanh ghi 0xF0 - 0xFF, 0x170 - 0x17F, và 0x1F0 - 0x1FF được ánh xạ vào các thanh ghi 0x70 - 0x7F trong PIC16F877A. Trong trường hợp PIC không có tính năng này, các thanh ghi dùng để sao lưu cần phải được khai báo ở mọi bank, tại địa chỉ tương ứng.

Bạn chỉ cần sửa địa chỉ cho các thanh ghi FSR_save, STATUS_save, PCLATH_save, và W_save như sau, thì sẽ có thể dùng khung chương trình xử lý ngắt chuẩn mà bạn đã tham khảo:

Code:
	W_save		EQU	0x70
	PCLATH_save	EQU	0x71
	STATUS_save	EQU	0x72
	FSR_save	EQU	0x73
Những điều trên đã được đề cập đến trong mục 14.12 - Context Saving During Interrupts, trong datasheet của PIC16F877A.

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, 03-01-2008 lúc 12:37 AM.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn