PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 10-02-2010, 08:08 PM   #1
tppdua
Nhập môn đệ tử
 
Tham gia ngày: Dec 2009
Bài gửi: 6
:
giải thích code

em mới học pic, đang tìm hiểu về ngắt và định thời của pic, nhưng ko có tài liệu cụ thể, nên em coi về các thanh ghi liên quan trong datasheet rồi xem các vd, có chỗ em ko hiểu , mong anh chị giải đáp

Code:
TITLE 		" nhap nhay rb0_dung timer0 "				
	PROCESSOR	P16F877A
	INCLUDE 	<P16F877A.inc>
	__CONFIG   	_CP_OFF	& _PWRTE_ON & _WDT_OFF &_HS_OSC &_LVP_OFF &_CPD_OFF &_BODEN_OFF
;============phan dat bien=============================
			COUNT	EQU	0X23
;===========Phan chuong trình chính======================
			ORG	0x00
			GOTO	MAIN
			ORG	0X04		; dia chi vector ngat, tat ca ngat chi co dia chi nay
			GOTO	NGAT		
			ORG	0x0005
MAIN
	MOVLW		.56		; nap 56 vao de timer0 dem dc 200 lan thi tran
	MOVWF		TMR0
	BANKSEL		TRISB
	CLRF		TRISB
	MOVLW		B'10100000'	; cho phep ngat GLOBAL, ngat TIMER0
	MOVWF		INTCON
	MOVLW		B'00000111' ; che do chia 256 , tuc la 256 ckm thi timer0 dem len 1
	MOVWF		OPTION_REG	; nap vao OPTION, timer0 bat dau chay
	BANKSEL		PORTB
	CLRF		PORTB
	MOVLW		.20    ; viec tang giam thoi gian la do gia tri nap trong COUNT
	MOVWF		COUNT
	GOTO		$		; cho ngat o day
NGAT
	BTFSS		INTCON,T0IF ; Kiem tra xem co phai ngat xay ra la ngat timer_0 hay khong
	GOTO		THOAT_NGAT	; khong phai ngat timer_0 thi thoat
	BCF			INTCON,7	; ko cho phep ngat nao xay ra nua
							; ko can thiet vi khi ngat xay ra, c.trinh tu dong 
							; xoa bit GIE ( ngat toan cuc).
	DECFSZ		COUNT,1		; giam COUNT de duoc 20 lan ngat
	GOTO		THOAT_NGAT	; chua du thi thoat
	MOVLW		.20
	MOVWF		COUNT
;########## doan c.trinh set / clear RB0.############
	BTFSS		PORTB,0	
	GOTO		SET_RB0
CLR_RB0
	BCF			PORTB,0
	GOTO		THOAT_NGAT	
SET_RB0
	BSF			PORTB,0
;######### ket thuc doan c.trinh set / clear RB0 ###########
THOAT_NGAT		
	
	MOVLW		.56			; nap lai gia tri ban dau cho timer 0
	MOVWF		TMR0
	BCF			INTCON,2	; xoa co tran timer 0 (cung la co bao ngat)
							; phai xoa co nay de co ngat tiep theo xay ra
						
	RETFIE					; lenh nay cung set bit GIE ( ngat toan cuc).					
END

_CHỗ kiểm tra ngắt xem có phải là ngắt timer 0 hay ko?? Tại sao phải kiểm tra và bit T0IF là bit gì (trong datasheet em thấy trong thanh ghi INTCON, chỉ có bit INT0IF (bit 1) là cờ của ngắt ngoài RB0, ko bik INT0IF có phải là nó T0IF hay ko? Và nếu là nó thì liên quan gì tới ngắt timer 0, vì em nghĩ là cờ ngắt timer phải là TMR0IF (bit 2). Anh chị giải thích dùm em chỗ đếm và ngắt nha. Còn biến count , theo như code là để nạp số lần ngắt, ngắt đủ 20 lần rồi mới đổi trạng thái PB.0. Cho em hỏi là tại sao cần phải có count? Có phải là để tăng thời gian giữa 2 lần Pb.0 sáng/tắt

thay đổi nội dung bởi: tppdua, 10-02-2010 lúc 08:17 PM.
tppdua vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-02-2010, 08:58 PM   #2
nghia_tdh21
Đệ tử 3 túi
 
nghia_tdh21's Avatar
 
Tham gia ngày: Oct 2006
Bài gửi: 46
:
Hi hi! lâu ngày ko lên diễn đàn tết nhất anh em về quê hết thấy vắng vẻ ghê!
Vấn đề của tppdua mình chỉ khuyên bạn như sau:
Thứ nhất: Bạn muốn biết chính xác T0IF là bit gì thì bạn phải xem trong file P16F877A.inc. Theo mình nghĩ TMR0IF là cờ ngắt của timer0 chứ ko phải T0IF.
Thứ 2: Khi bạn phân tích một chương trình (kể cả ngôn ngữ cấp cao) bạn phải vẽ lại lưu đồ giải thuật, đây là kinh nghiệm của mình. Khi bạn đã quen và có kinh nghiệm rồi thì rất nhanh. Cách vẽ lưu đồ thì bạn lần lượt từ câu lệnh đầu tiên, nếu gặp lệnh nhảy thì bạn lại cho rẽ nhánh sang nhãn sau lệnh nhảy đó và cứ lần lượt đến câu lệnh cuối cùng.
__________________
http://www.hieunghia.info
Lướt web thoải mái với USB3G của Viettel
http://www.hieunghia.info/tin-cong-n...3g-vietel.html
-----------------------------------------------------------------------------------
Một chút giận,hai chút tham,lận đận cả đời ri cũng khổ.
Trăm điều lành,ngàn điều nhịn,thong dong tấc dạ rứa mà vui
nghia_tdh21 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ð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


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