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 22-01-2008, 12:33 AM   #1
wave_zx
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 8
:
Question thắc mắc

Code:
;****************************************************************************************
PROCESSOR	P16F877A
INCLUDE 	<P16F877A.inc>
__CONFIG   	_CP_OFF	& _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF &_BODEN_OFF
;****************************************************************************************
	ORG		0X20
COUNT1		EQU		0X20
COUNT2		EQU		0X21
COUNT3		EQU		0X22
;****************************************************************************************
	ORG	0X0000
	GOTO	MAIN
;	ORG	0X0004
;	GOTO	INTERRUPT
;*****************************************************************************************
	ORG	0X0005
MAIN
	BCF	STATUS,RP1
	BSF	STATUS,RP0		;BANK1
	CLRF	TRISC			;PORTC IS OUTPUT
	BCF	STATUS,RP0		;BANK0
	CLRF	PORTC
	GOTO	C0
C0
	BSF	PORTC,0
	CALL	DELAY_LONG
	BCF	PORTC,0
	CALL	DELAY_LONG
C1
	BSF	PORTC,1
	CALL	DELAY_LONG
C2
	BSF	PORTC,2
	CALL	DELAY_LONG
	BCF	PORTC,2
	CALL	DELAY_LONG
	GOTO	C0

;*****************************************************************************************
DELAY_LONG
	MOVLW	D'5'
	MOVWF	COUNT3
DELAY_LONG_START
	DECFSZ 	COUNT3,F
	GOTO	$+2
	RETURN
	CALL	DELAY
	GOTO	DELAY_LONG_START
;******************************************************************************
DELAY
	MOVLW	D'255'
	MOVWF	COUNT1
LOOP1
	MOVLW	D'255'
	MOVWF	COUNT2
	DECFSZ	COUNT1,F
	GOTO	LOOP2
	RETURN
LOOP2
	DECFSZ	COUNT2,F
	GOTO	LOOP2
	GOTO	LOOP1

END
ĐOẠN CODE TRÊN EM VIẾT THỬ CHO PORTC, EM THẮC MẮC LÀ TẠI SAO BIT1 NÓ SÁNG RỒI TẮT.NHỜ MỌI NGƯỜI CHỈ HỘ.CẢM ƠN NHIỀU.
wave_zx vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-01-2008, 01:51 AM   #2
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
Bạn chú thích các lệnh từ nhãn C2 đến lệnh GOTO C0 như sau:
Code:
C2
;	BSF	PORTC,2
;	CALL	DELAY_LONG
;	BCF	PORTC,2
;	CALL	DELAY_LONG
	GOTO	C0
xem chuyện gì xảy ra.

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
Old 22-01-2008, 09:38 AM   #3
wave_zx
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 8
:
Em đã Thử Rồi ạh. Bit1 Vẫn. Cứ Sáng Rồi Tắt.nếu Thử Bit Khác Của Portc Nó Cũng Thế.?
wave_zx vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-01-2008, 07:50 PM   #4
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
À, tôi quên. Chương trình lại chạy lại từ C0, nên vẫn bị ảnh hưởng của các lệnh bật tắt RC0. Bạn sửa lại như sau và thử lại xem.
Code:
C2
;	BSF	PORTC,2
;	CALL	DELAY_LONG
;	BCF	PORTC,2
;	CALL	DELAY_LONG
	GOTO	C2
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
Old 23-01-2008, 08:05 AM   #5
wave_zx
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 8
:
Nếu Ghi Chú Thích Như đoạn Anh Nói Thì Bit1 Sẽ Sáng Hoài.nhưng Nói Như Vậy Nghĩa Là Các Bit Của Portc Ko độc Lập Với Nhau.cứ Tác động Bit Này Là ảnh Hưởng Bit Kia A.em Thử Porta Cũng Thế. Còn Portb Thì Ko Bị ảnh Hưởng.liệu Có Cách Nào để Bật Tắt Các Bit Portc độc Lập Ko ạ.mong Các Anh Giúp đỡ.
wave_zx vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-01-2008, 08:06 PM   #6
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
Trích:
Nguyên văn bởi wave_zx View Post
Nếu Ghi Chú Thích Như đoạn Anh Nói Thì Bit1 Sẽ Sáng Hoài.nhưng Nói Như Vậy Nghĩa Là Các Bit Của Portc Ko độc Lập Với Nhau.cứ Tác động Bit Này Là ảnh Hưởng Bit Kia A.em Thử Porta Cũng Thế. Còn Portb Thì Ko Bị ảnh Hưởng.liệu Có Cách Nào để Bật Tắt Các Bit Portc độc Lập Ko ạ.mong Các Anh Giúp đỡ.
Bạn đang gặp vấn đề liên quan đến hoạt động read-modify-write. Vì bạn mới bắt đầu học PIC (tôi đoán như vậy), bạn có thể chưa cần tìm hiểu sâu về nó. Cách đơn giản nhất để bật tắt các bit của các port ngõ ra một cách độc lập là dùng một ô nhớ 8-bit trung gian làm ảnh trạng thái của port ngõ ra, sau đó thao tác các bit của ô nhớ đó, rồi ghi ô nhớ đó ra port ngõ ra.

Sau đó, nếu bạn muốn tìm hiểu thêm về hoạt động read-modify-write, bạn có thể tìm đọc trên diễn đàn (ở đây chẳng hạn: http://www.picvietnam.com/forum//showthread.php?p=8949, post #68), hay đọc datasheet của PIC (dùng chức năng tìm kiếm của phần mềm để tìm cụm từ 'read-modify-write').

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
Old 17-05-2009, 12:04 PM   #7
xhieu1908
Nhập môn đệ tử
 
Tham gia ngày: Jan 2009
Bài gửi: 8
:
search thấy có thắc mắc như mình nhg mình vẫn chưa hiểu nên đành đào mộ cổ vậy
Code:
;RA0-3 - output
;RA0-3 noi voi LED
;LED dau K chung - GND
	include <p16f628.inc>
	__config h'3fe6'
	org 	0x0
	goto 	init
init
	bsf		STATUS, RP0
	movlw	h'f0'
	movwf	TRISA
	bcf 	OPTION_REG, PS1		;WDT 1:64, khoang nua giay se reset
	bcf		STATUS, RP0
	bsf		PORTA, 0
loop
	nop
	bsf		PORTA, 1
	nop
	sleep
	nop
	bsf		PORTA, 2
	nop
	sleep
	nop
	bsf		PORTA, 3
	nop
	sleep
	nop
	clrf	PORTA
	nop
	goto 	loop
	end
mình thấy khi debug thì mọi chuyện suôn sẻ, nhg khi lắp vào mạch thật thì lại xay ra hiện tượng là khi bật được LED này thì LED trước tắt. Ai giải thích giùm mình với!!
xhieu1908 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à 03:42 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