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 ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 24-12-2007, 11:23 AM   #1
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
Tham gia ngày: Sep 2006
Bài gửi: 101
:
1. Thiếu phần định nghĩa các chân cổng là digital I/O
Code:
	BSF 	STATUS, RP0 	; Select Bank 1
	MOVLW 	0x06 		; Configure all pins
	MOVWF 	ADCON1 		; as digital inputs
	BCF 	STATUS, RP0 	; Select Bank 0
2. Sao lại dùng lệnh này khi khởi tạo chương trình? “BSF PIR1,TMR1IF”???? Đây là cờ báo tràn Timer1, được tự động đặt là 1 bằng phần cứng để báo tràn Timer1.
3. Trong chương trình chưa thấy phần định nghĩa hướng dữ liệu (vào/ra) cho PORTC và PORTB, vậy mà lại out dữ liệu ra:
Code:
	MOVLW	B'00000011'
	MOVWF	PORTC
	MOVLW	B'11111111'
	MOVWF	PORTB
Như vậy mà sáng được LED thì quá lạ. Bạn xem lại nhé. Xem xong tui sẽ phân tích tiếp cho bạn thấy một số vấn đề nữa.
Jerry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-12-2007, 12:07 PM   #2
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi Jerry View Post
1. Thiếu phần định nghĩa các chân cổng là digital I/O
Code:
	BSF 	STATUS, RP0 	; Select Bank 1
	MOVLW 	0x06 		; Configure all pins
	MOVWF 	ADCON1 		; as digital inputs
	BCF 	STATUS, RP0 	; Select Bank 0
Phần khai báo này mình chưa xài bao giờ, hôm nay mới biết, thế nhưng thử vào rồi vẫn ko chạy được (mình đã viết thành chương trình riêng cho ngắt timer1)

Trích:
Nguyên văn bởi Jerry View Post
2. Sao lại dùng lệnh này khi khởi tạo chương trình? “BSF PIR1,TMR1IF”???? Đây là cờ báo tràn Timer1, được tự động đặt là 1 bằng phần cứng để báo tràn Timer1.
Cái này gọi là ép ngắt, thay vì ở lần đầu tiên nó phải chạy đến giá trị đặt trong 2 thanh ghi timer1 thì ở đây nó được ép ngắt nhảy vào ngắt luôn ở vòng đầu tiên. Nhưng theo lời bạn, mình đã bỏ dòng lệnh này. Kết quả vẫn vậy.
Trích:
Nguyên văn bởi Jerry View Post
3. Trong chương trình chưa thấy phần định nghĩa hướng dữ liệu (vào/ra) cho PORTC và PORTB, vậy mà lại out dữ liệu ra:
Code:
	MOVLW	B'00000011'
	MOVWF	PORTC
	MOVLW	B'11111111'
	MOVWF	PORTB
Như vậy mà sáng được LED thì quá lạ. Bạn xem lại nhé. Xem xong tui sẽ phân tích tiếp cho bạn thấy một số vấn đề nữa.
Mình quên khai báo hướng dữ liệu cho PORTC, còn PORTB thì khai báo rồi. Chương trình này mình xuất led thử nghiệm ra portB nên kết quả không ảnh hưởng gì.
Bạn giúp mình những vấn đề khác đi. Thực sự mình đang rất rối, mọi chuyện đang như đám rừng. bó tay.
Do thời gian học về PIC của mình ngắn quá nên có nhiều chổ chưa hiểu đúng bản chất vấn đề. Rất mong các đọc qua đoạn code của mình, xem thử có lỗi sai nào trầm trọng về kiến thức thì cho mình biết để mình giải quyết vấn đề timer1 này.

thay đổi nội dung bởi: uydanh, 24-12-2007 lúc 12:21 PM.
uydanh 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à 04:34 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