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 20-06-2005, 02:27 AM   #12
zero2one
Đệ tử 1 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 19
:
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
;====================================================================================================
theo em biết thì khi vào chương trình ngắt ta phải lưu lại giá trị của hai thanh ghi : STATUS và W để sau khi thực hiện trình phục vụ ngắt sẽ khôi phục lại. Còn PC thì được tự động lưu vào STACK. Vậy, các tác động vào PCLATH... trên đoạn CODE của bác là nhằm mục đích gì vậy ?

còn nữa : CLRF STATUS
thì chưa chắc STATUS = 0 ! vì trong STATUS có một số bit không chịu tác động - giá trị của chúng không đổi ?

em mới học, mong bác chỉ rõ hơn.
zero2one 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à 08:27 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