Các bác cho em hỏi về cách sử dụng các khai báo #use fast_io(port). Khi nào mình dùng? Không dùng thì chương trình có bị ảnh hưởng gì không? Cảm ơn các bác nhiều lém lém...
Hỏi về việc khai báo #use fast_io(port)???
Collapse
X
-
đây là bài nhấp nháy 8 led port B theo 2 cách để bạn tham khảo & so sánh
Code:///////////////////////// dùng #use fast_io//////////////////////////// #include <16f877a.h> #fuses nowdt,hs,noprotect #use delay(clock = 4000000) #use fast_io(b) // #byte portb=0x06 // phải khai báo địa chỉ port B nếu dùng fast_io(b) void main() { set_tris_b(0); while(1) { portb = 0xff ; delay_ms(500); portb = 0; delay_ms(500); } }Code:////////////////////// không dùng #use fast_io//////////////////////////// #include <16f877a.h> #fuses nowdt,hs,noprotect #use delay(clock = 4000000) void main() { while(1) /// vòng lặp luôn xảy ra { output_high(pin_b0); output_high(pin_b1); output_high(pin_b2); output_high(pin_b3); output_high(pin_b4); output_high(pin_b5); output_high(pin_b6); output_high(pin_b7); delay_ms(500); output_low(pin_b0); output_low(pin_b1); output_low(pin_b2); output_low(pin_b3); output_low(pin_b4); output_low(pin_b5); output_low(pin_b6); output_low(pin_b7); delay_ms(500); } }Last edited by namqn; 02-04-2009, 09:55 PM.
-
khi minh khai báo #include <def_877a.h> thì nó đã định nghĩa #byte portb=0x06 rồi phải không các bác, vậy có cần khai báo thêm không. Cụ thể đoạn khai báo của em dưới đây, các bác xem dùm nha.
#include <16f877A.h>
#include <def_877a.h>
#fuses NOWDT,HS,PUT,NOPROTECT,NOLVP,NODEBUG
#use delay(clock=16000000)
#use fast_io(b)
void khoitao()
{
set_tris_d(0x00);
set_tris_c(0x00);
set_tris_e(0xff);
set_tris_b(0xff);
}
......
if((rb1==1)&&(rb2==1)&&(rb3==1)&&(rb4==1))
.....
cảm ơn bác nha
Comment
-
không cần phải khai báo lại đâu bạnNguyên văn bởi dvtrieu89 View Postkhi minh khai báo #include <def_877a.h> thì nó đã định nghĩa #byte portb=0x06 rồi phải không các bác, vậy có cần khai báo thêm không. Cụ thể đoạn khai báo của em dưới đây, các bác xem dùm nha.
#include <16f877A.h>
#include <def_877a.h>
#fuses NOWDT,HS,PUT,NOPROTECT,NOLVP,NODEBUG
#use delay(clock=16000000)
#use fast_io(b)
void khoitao()
{
set_tris_d(0x00);
set_tris_c(0x00);
set_tris_e(0xff);
set_tris_b(0xff);
}
......
if((rb1==1)&&(rb2==1)&&(rb3==1)&&(rb4==1))
.....
cảm ơn bác nha
Comment
-
các bác cho em hoi thêm khi mình khai báo #use fast_io(b) thì mình sử dụng các lệnh ví dụ như:
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);
Có vấn đề gì không?
Thankssssssssss
Comment
-
khi khai báo như vậy thì trong chương trình khi dùng các lệnh io như output_low(), output_high() , thì no chỉ mất 1 lệnh ma thôiNguyên văn bởi dvtrieu89 View Postcác bác cho em hoi thêm khi mình khai báo #use fast_io(b) thì mình sử dụng các lệnh ví dụ như:
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);
Có vấn đề gì không?
Thankssssssssss
Comment
-
trong main() ban phải dùng hàm set_tris_X() để chỉ chân vào ra thì khai báo #ues fast_io() mới có hiệu lực, không thì chương trình sẽ chạy saiNguyên văn bởi dvtrieu89 View PostEm không khai báo #use fast_io(b) thì chương trình không có lỗi, có phải là chắc chắn nó cahj sai không các bác?
Comment
-
S ử dụng #use fast_io() sẽ báo cho CCS biết việc thực hiện lệnh SET_TRIS_X() một lần trước khi sử dụng tới IO, điều này sẽ làm cho việc Read/Write các IO nhanh hơn so với việc không khai báo(mặc định CCS sẽ thực hiện gán lại TRIS của IO trước khi Read/Write).
Vậy nên nếu ứng dụng của bạn chắc chắn dùng port 1 IO vào 1 chức năng nào đó làm Input hoặc Output thôi thì khai báo #use_fast_io() sẽ rất hiệu quả.
Comment
-
Mình không khai báo được dòng #include <def_877a.h> .CCS cứ báo lỗi là không tìm thấy file trên trong mục device.Bạn nào có kinh nghiệm rồi xin chỉ giáo giùm.Cám ơn nhiều lắmMy blog: http://autumnneverreturn.blogspot.com/
Đối thủ khó chiến thắng nhất là bản thân !!!
Comment
-
Ui y hệt em, bỏ đi chương trình vẫn chạy tốt ko sao cả. Em cũng chẳng hiểu tại sao, ai biết chỉ giùmNguyên văn bởi hcmut.khoamaisi View PostMình không khai báo được dòng #include <def_877a.h> .CCS cứ báo lỗi là không tìm thấy file trên trong mục device.Bạn nào có kinh nghiệm rồi xin chỉ giáo giùm.Cám ơn nhiều lắm
Comment
-
bạn phải có cái file này và bỏ chung vào một thư mục mà bạn lưu dự án thì mới được.Nguyên văn bởi vinh2809 View PostUi y hệt em, bỏ đi chương trình vẫn chạy tốt ko sao cả. Em cũng chẳng hiểu tại sao, ai biết chỉ giùmCao Văn Hưởng
SĐT: 01672754113
Email: caovanhuong@webdien.com
Nhận thiết kế mạch điện tử, PCB (Orcad)
Comment

Comment