PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

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
Prev Previous Post   Next Post Next
Old 26-07-2012, 05:51 PM   #22
dinhquanghiep
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 1
:
Code:
;============================================================================================
INTERRUPT

;-------------------------------------------
;Doan ma bat buoc de vao ngat
;-------------------------------------------

			        MOVWF	W_SAVE          	;W_SAVE(bank unknown!) = W
         			SWAPF   	STATUS,	W
         			CLRF    	STATUS  		; force bank 0 for remainder of handler
         			MOVWF 	STAT_SV		; STAT_SV = swap_nibbles( STATUS )
                                 					; STATUS = 0
         			MOVF	PCLATH,	W
         			MOVWF	PCH_SV    	; PCH_SV = PCLATH
		         	CLRF    	PCLATH  	; PCLATH = 0
         			MOVF   	FSR,	W
         			MOVWF	FSR_SV		; FSR_SV = FSR
        						; 10 cycles from interrupt to here!

;-----------------------------------
;Doan chuong trinh ngat
;-----------------------------------

; cac ban se viet chuong trinh ngat o day

;--------------------------------------------------
;Doan ma bat buoc de ket thuc ngat
;--------------------------------------------------

			MOVF	FSR_SV,	W
	      	   	MOVWF 	FSR		; FSR = FSR_SV
         			MOVF    	PCH_SV,	W
		         	MOVWF	PCLATH		; PCLATH = PCH_SV
         			SWAPF	STAT_SV,	W
		         	MOVWF  STATUS  		; STATUS = swap_nibbles( STAT_SV )
         			SWAPF   	W_SAVE,	F
   		      	SWAPF  	W_SAVE,	W	; W = swap(swap( W_SAVE )) (no change Z bit)

		         	BSF	INTCON,	GIE
			RETFIE
;====================================================================================================
em có thắc mắc ở chương trình trên, em không hiểu dòng này:

MOVWF W_SAVE ;W_SAVE(bank unknown!) = W

giả sử các biến W_SAVE,STAT_SV,PCH_SV được khai báo ở bank0 (địa chỉ từ 0X20 đến 0x7F), khi chương trình chính đang làm việc ở bank 2 thì xảy ra ngắt vậy thì câu lệnh trên không thực hiện đúng do biến W_SAVE được lưu ở bank0, các anh giải thik giúp em chỗ này với ạ
dinhquanghiep vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 4 10-10-2005 06:23 PM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf PIC - Thiết kế và Ứng dụng 4 10-10-2005 06:23 PM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf Chương trình dịch & các công cụ mô phỏng 0 24-05-2005 12:52 AM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf MPASM 0 24-05-2005 12:52 AM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf dsPIC - Bộ điều khiển tín hiệu số 16-bit 0 24-05-2005 12:52 AM


Múi giờ GMT. Hiện tại là 02:43 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam