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 30-12-2008, 10:14 AM   #1
quang_nhon84
Nhập môn đệ tử
 
Tham gia ngày: Dec 2008
Bài gửi: 10
:
làm thế nào để viết chương trình DElay dai?

Giúp em với,em đang lập trình cho con 16F628 để viết delay 7 tiếng tác động 1 lần nhưng viết thử thì chỉ được 2 s là lệnh Decfsz của vòng lặp không thực hiện được nữa,không hiểu tại sao Em dùng thạch anh 4M. Làm thế nào để viết được Delay dài hơn,giúp em với.Chương trình thử của em:
Code:
	org	0x005
start
	BSF	STATUS,RP0
	MOVLW	0x00
	MOVWF	TRISB
	BCF	STATUS,RP0
	MOVLW	0x00
	MOVWF	PORTB
loop
	CALL	DELAY1p
	CALL	DELAY1p
	BCF	STATUS,RP0
	MOVLW	0xF0
	MOVWF	PORTB

	goto loop

DELAY1s
	MOVLW	d'249'
	MOVWF	COUNT1
D1
	MOVLW	d'255'		
	MOVWF	COUNTA
	MOVLW	0X01
	MOVWF	COUNTB

DELAY_0
	DECFSZ	COUNTA,1
	GOTO	$+2
	DECFSZ	COUNTB,1
	GOTO	DELAY_0
	DECFSZ	COUNT1,1
	GOTO	D1
	RETLW	0x000
DELAY1p
	MOVLW	D'6'
	MOVWF	COUNTC	
LOOP
	CALL	DELAY1s
	DECFSZ	COUNTC,1
	GOTO	LOOP
	RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Lệnh Call Delay1p đầu thì chạy được nhưng lệnh thứ 2 thì bó tay

thay đổi nội dung bởi: namqn, 30-12-2008 lúc 07:21 PM.
quang_nhon84 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-12-2008, 10:38 AM   #2
quang_nhon84
Nhập môn đệ tử
 
Tham gia ngày: Dec 2008
Bài gửi: 10
:
Nếu tăng giá trị của vòng lặp Delay1p như ví dụ ở trên là từ 6 lên 10 thì nó cũng chịu luôn, không chạy được vì DECFSZ không giảm về không để thực hiện tiếp.
quang_nhon84 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-12-2008, 07:27 PM   #3
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
Nguyên tắc là bạn thực hiện một thao tác delay ngắn nhiều lần để có được thời gian delay dài hơn. Theo tôi, bạn không nên có hai nhãn "loop" và "LOOP" trong chương trình (đề phòng trường hợp vì lý do gì đó mà case sensitive bị tắt, mặc nhiên là nó được bật).

Bạn thử dùng MPLAB SIM để mô phỏng, xem chương trình của bạn bị vướng ở chỗ nào.

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
namqn 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à 01:40 PM.


Đượ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