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 Bài Trong Ngày 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 ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 19-03-2010, 11:45 PM   #1
kid1412hv
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 2
:
Giúp em sửa lỗi này với

Em mới học Pic, em không biết cách viết ngắt.

Nhờ các bác viết giúp em ngắt bằng timer sau mỗi giây một được không ạ?

Em viết bài đếm tăng dần led 7 thanh dùng ngắt mà khi chạy mô phỏng không đúng. Mong anh em xem dùm và chỉ giáo cho em biết với.
Code:
		processor		16f877a
		include			<p16f877a.inc>
		__CONFIG	_CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
;-------------------
;Khai bao bien
;--------------------
count1		EQU	0x20
counta		equ	0x21
countb		equ	0x22		;cac thanh ghi dung cho chuong trinh delay_1ms

hang_don_vi	equ	0x23
hang_chuc	equ	0x24		;cac thanh ghi chua cac gt hang chuc va hang dv

count		equ	0x25
display_reg	equ	0x26
xx			equ	0x27
xx1			equ	0x28		;cac thanh ghi phu

W_save		equ	0x29
PCLATH_save	equ	0x30
STATUS_save	equ	0x31
FSR_save	equ	0x32		;cac thanh ghi danh cho ct ngat

sodem		equ	0x33
		
			org	0x0004
			goto	isr

;---------------
;chuong trinh ngat
;-----------------------
isr
;---------------------
;doan chuong trinh bat buoc khi bat dau ct ngat
			movwf	W_save
			swapf	STATUS,w
			clrf	STATUS
			movwf	STATUS_save
			movf	PCLATH,w
			movwf	PCLATH_save
			clrf	PCLATH
			movf	FSR,w
			movwf	FSR_save
;----------------------------
;kiem tra co ngat
;---------------------------------
			btfss	PIR1,TMR1IF		;kiem tra co ngat cua timer1
			goto	exit_int	
			bcf		T1CON,TMR1ON	;tam thoi tat timer1 de khoi tao lai
;--------------------------------
;cac thao tac chinh cua chuong trinh ngat;
;-------------------------------------------
			clrf	TMR1L			;khoi tao lai cac gt trong thanh ghi TMRL
			clrf	TMR1H			;va TMRH
			movlw	0x61			;dua vao cac thanh ghi dem cua timer1
			movwf	TMR1H
			movlw	0xA8
			movwf	TMR1L

			bsf		T1CON,TMR1ON	;bat timer1
			bcf		PIR1,TMR1IF		;xoa co ngat

			incf	count
			movlw	d'5'
			xorwf	count,0
			btfss	STATUS,Z
			goto	exit_int		;neu chua bang 5 thoat
			clrf	count			;bang roai thi reset lai count

			incf	hang_don_vi,1	;tang hang don vi len 1
			movlw	0x0A
			xorwf	hang_don_vi,0	;so sanh voi 10
			btfss	STATUS,Z
			goto	exit_int		;neu khong bang 10 thi thoat ngat
			clrf	hang_don_vi		;neu bang thi xoa hang don vi
			incf	hang_chuc,1		;tang hang chuc len 1
			movlw	0x0A
			xorwf	hang_chuc,0
			btfss	STATUS,Z		;so sanh hang chuc voi 10
			goto	exit_int		;khong bang 10 thi thoat ngat
			
			clrf	hang_chuc		;neu bang thi xoa hang chuc
		
			
;------------------------
;doan chuong trinh de ket thuc ngat
;-------------------------------
exit_int
			movf	FSR_save,w
			movwf	FSR
			movf	PCLATH_save,w
			movwf	PCLATH
			swapf	STATUS_save,w	
			movwf	STATUS
			swapf	W_save,1
			swapf	W_save,0
			retfie

			org		0x0000
			goto	start
;-------------------------------
;chuong trinh chinh
;------------------------------
start
;--------------------------------
;khoi tao cac Port dieu khien
;------------------------------------
			bcf		STATUS,RP1
			bsf		STATUS,RP0		;chon bank1
			movlw	0x00			
			movwf	TRISD			;gan portD la output
			movlw	b'11000000'
			movwf	TRISB
			bcf		STATUS,RP0
			clrf	PORTD
			movlw	b'00111111'		;tat tat ca cac Led
			movwf	PORTB
;-----------------------------
;khoi tao timer1
;-----------------------------
			clrf	T1CON
			clrf	INTCON
			clrf	TMR1H
			clrf	TMR1L
			bsf		STATUS,RP0		;chon bank1
			clrf	PIE1
			bsf		PIE1,TMR1IE		;cho phep ngat timer1
			bcf		STATUS,RP0		;chon bank0
			clrf	PIR1			;xoa tat ca cac co ngat
			movlw	0x30
			movwf	T1CON
			movlw	0x61
			movwf	TMR1H
			movlw	0xA8
			movwf	TMR1L
		
			bsf		T1CON,TMR1ON	;bat timer1
			bsf		INTCON,TMR1IE	;cho phep ngat Timer1
			bsf		INTCON,PEIE		;cho phep ngat ngoai vi
			bsf		INTCON,GIE		;cho phep toan bo cac ngat
			
;-------------------------------------
;khoi tao cac bien
;-------------------------------------
			clrf	hang_don_vi	
			clrf	hang_chuc
		
;------------------------------
;vong lap chinh
;-------------------------------
main
			call	hien_thi
			goto	main
hien_thi
			movf	hang_chuc
			call	table
			movwf	PORTD
			movlw	b'11111101'
			movwf	PORTB
			call	delay_1ms
			movf	hang_don_vi
			call	table
			movwf	PORTD
			movlw	b'11111110'
			movwf	PORTB
			call	delay_1ms
			return
table
			addwf	PCL,1
			retlw	0xC0
			retlw	0xF9	
			retlw	0xA4
			retlw	0xB0
			retlw	0x99
			retlw	0x92
			retlw	0x82
			retlw	0xF8
			retlw	0x80
			retlw	0x90
delay_1ms
			movlw	d'1'
			movwf	count1
d2			movlw	0xC7
			movwf	counta
			movlw	0x01
			movwf	countb
delay_1
			decfsz	counta,1
			goto	$+2
			decfsz	countb,1
			goto	delay_1
			decfsz	count1,1
			goto	d2
			return
			END

thay đổi nội dung bởi: kid1412hv, 20-03-2010 lúc 02:03 AM.
kid1412hv vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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


Múi giờ GMT. Hiện tại là 08:35 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