Ðề tài: CCS C for PIC16F877A
View Single Post
Old 26-03-2006, 06:39 PM   #8
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Delay 1s portB

Ăc..ặc..đang post thì bị cúp điện,bực cả mình...

Và đây là câu trả lời cho việc delay led ở portB 1s

Code:
#include<16F877A.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=10000000)
#use fast_io(b)
#byte portb=0x6
main()
{
set_tris_b(0);
while(true)
{
portb=255; 	//all led on
delay_ms(1000);
portb=0;		//all led off
delay_ms(1000);
}
}
Code:
#byte portb=0x6
Khai báo địa chỉ portB, không như trong MPLAB đã định nghĩa luôn cái này cho ta, nếu không có dòng này chương trình sẽ báo lỗi chưa định nghĩa portB
Code:
set_tris_b(0)
Tất cả các chân của portB là output, muốn set tất cả các chân là input thì trong ngoặc là 255,....
Trong HELP hướng dẫn lệnh này như sau:

"These functions allow the I/O port direction (TRI-State) registers to be set. This must be used with FAST_IO and when I/O ports are accessed as memory such as when a #BYTE directive is used to access an I/O port. Using the default standard I/O the built in functions set the I/O direction automatically."

Rõ ràng khi set byte làm I/O nếu ta thêm khai báo:
Code:
#use fast_io(b)
Dùng khai báo này thì CCS sẽ chỉ thực hiện đúng một lệnh cho việc I/O các chân trên port tương ứng, nếu ko nó phải mất khoảng 3 hay 4 lệnh gì đó.

Phần I/O + Delay tạm thời xong như vậy, bác nào có phản hồi thì tiếp tục thảo luận.Xong phần này có thể viết về xuất led 7 đoạn, quét phím, LCD,....Bác nào viết thì cứ post lên cho bà con thảo luận nhé !
Hẹn gặp lại vài hôm nữa ở bài Timer/Counter !
Chào!

File Kèm Theo
File Type: rar Delay 1s portB.rar (12.5 KB, 2652 lần tải)
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263

thay đổi nội dung bởi: nhh, 17-12-2006 lúc 11:59 AM.
nhh vẫn chưa có mặt trong diễn đàn