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 Bài Trong Ngày 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 19-10-2006, 08:33 PM   #1
anhquangngai
Đệ tử 2 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 33
:
Thảo luận về cách viết các lệnh dịch thanh ghi (RRF,RLF)

Dưới đây là chương trình dịch trái (phải) PortB sử dụng lệnh RRF(RLF):
Code:
title		"leddichtutraiquaphai_Port_B.asm"
		processor	p16f877a
		include		<P16f877a.inc>
		__CONFIG	_CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
		;=========================================================================
		; Chuong trinh chinh
		;=========================================================================
		count1		equ		0x20
		counta		equ		0x22
		countb		equ		0x23
				org			0x000
	;-------------------------------------------------------------
	;khoi tao Port B
	;------------------------------------------------------------
				banksel		TRISB
				clrf		TRISB
				banksel		PORTB
				movlw		b'00000001'
				movwf		PORTB
		loop	call		delay100ms;
				rlf			PORTB,1
				goto		loop

;-----------------------------------------------------------------
;chuong trinh delay
;-----------------------------------------------------------------
delay100ms ; chuong trình con delay 100 ms
				MOVLW d'100'
				MOVWF count1
	d1
				MOVLW 0xC7
				MOVWF counta
				MOVLW 0x01
				MOVWF countb
	delay_0
				DECFSZ counta,1
				GOTO $+2
				DECFSZ countb,1
				GOTO delay_0
				DECFSZ count1,1
				GOTO d1
				RETURN
;----------------------------------------------------------------
		end
Mô tả chương trình:
- Led sáng sẽ dc dịch từ PB0-->PB7 và sẽ tắt hoàn toàn và bắt đầu lại từ đầu.
Câu hỏi dc đặt ra:
-Muốn kiểm tra cờ C thì làm như thế nào?
- Có cách nào để led chạy liên tục PỎTB ko bi tắt hoàn toàn khi 1 dc chuyển vào cờ C?

Mong các bác có thể giúp đỡ những người mới học như tụi em dc ko?
Cảm ơn các bác!
anhquangngai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-10-2006, 10:37 PM   #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
Câu thứ nhất: Thanh ghi STATUS chứa cờ C cũng là một thanh ghi như mọi thanh ghi, có thể dùng các lệnh BTFSS/BTFSC để kiểm tra trạng thái của cờ C và thực hiện các thao tác cần thiết.

Câu thứ hai: Dùng kỹ thuật đã nói trong câu thứ nhất, kiểm tra cờ C sau mỗi lần quay (chứ không phải là dịch nhé), nếu cờ C đổi trạng thái thì quay thêm một lần nữa.

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 02-11-2006, 07:44 PM   #3
anhquangngai
Đệ tử 2 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 33
:
sẵn đây mình hỏi luôn vấn đề mà mình dang thắc mắc:
ví dụ mình có hai thanh ghi 0x20 và 0x21 có mang nội dung là một số Hẽ chẳng hạn
Câu hỏi đc đặt ra là muốn so sánh hai thanh ghi này có giá trị bằng nhau ko thì phải làm sao?va như thế nào?
To:chipchipvn
mình cũng ở QNgai
rất mong cùng trao đổi với bạn!
anhquangngai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-11-2006, 03:16 PM   #4
anhquangngai
Đệ tử 2 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 33
:
sao ko ai tra loi hết vậy?
Nếu muốn kiểm tra PORTB có bằng 255 thì lam như sau có đúng ko ?
Code:
 if PORTB==255
 lenh if....
else
lệnh.........
endif
anhquangngai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-11-2006, 07:25 PM   #5
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
Để so sánh hai biến nằm trong 2 ô nhớ thì có thể copy một ô nhớ vào thanh ghi W, rồi so sánh nó với ô nhớ còn lại (điều kiện so sánh bằng có thể thực hiện bằng phép toán XOR-exclusive OR và kiểm tra cờ Z), đó là dành cho các PIC cấp thấp và hợp ngữ (assembly language).

Với các ngôn ngữ cấp cao như C hay Basic thì bạn nên đọc hướng dẫn của phần mềm, nói chung cú pháp là chuẩn, nhưng cũng có một vài ngoại lệ. Ví dụ như có một số trình dịch C không hoàn toàn tuân theo ANSI-C.

Ví dụ mà bạn đưa ra là so sánh một ô nhớ với một hằng số, không chính xác là trường hợp mà bạn đã hỏi ban đầu. Chương trình của bạn đã viết có vẻ giống như cho Basic (nhưng không hoàn toàn là Basic), nhưng biểu thức so sánh lại dùng cú pháp C =>

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


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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Làm sao để đọc dữ liệu từ ô nhớ vào thanh ghi W nghaiha RTOS và Thuật toán với PIC 5 27-12-2007 11:08 AM
Vi xử lý âm thanh, bạn nào rành thì chỉ giúp. jean Trao đổi ngoài luồng 4 23-01-2007 07:31 PM
Xử lý âm thanh bachelor1979 Cảm biến 0 10-06-2006 06:01 PM


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