![]() |
|
Tài trợ cho PIC Vietnam |
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 |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Mar 2008
Bài gửi: 25
: |
Hỏi về việc khai báo #use fast_io(port)???
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...
|
![]() |
![]() |
![]() |
#2 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
đâ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); } } thay đổi nội dung bởi: namqn, 02-04-2009 lúc 10:55 PM. |
![]() |
![]() |
![]() |
#3 |
Đệ tử 1 túi
Tham gia ngày: Mar 2008
Bài gửi: 25
: |
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 |
![]() |
![]() |
![]() |
#4 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
|
|
![]() |
![]() |
![]() |
#5 |
Đệ tử 1 túi
Tham gia ngày: Mar 2008
Bài gửi: 25
: |
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 |
![]() |
![]() |
![]() |
#6 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
|
|
![]() |
![]() |
![]() |
#7 |
Đệ tử 1 túi
Tham gia ngày: Mar 2008
Bài gửi: 25
: |
Em 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?
|
![]() |
![]() |
![]() |
#8 |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 1 túi
Tham gia ngày: Mar 2008
Bài gửi: 25
: |
Vậy để đảm bảo chương trình không sai thì ta nên khai báo #ues fast_io() cho tất cả các port phải không bác.
Em mới chuyển qua C nên còn gà lắm. Cảm ơn bác đã tận tình chỉ dẫn. |
![]() |
![]() |
![]() |
#10 |
Đệ tử 4 túi
Tham gia ngày: Aug 2008
Bài gửi: 89
: |
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ả.
__________________
Quang báo RG/RGB 6/8/12/16 bits màu Phone No: 0905.034.086 Email: lmquyen@gmail.com |
![]() |
![]() |
![]() |
#11 |
Đệ tử 1 túi
Tham gia ngày: Mar 2008
Bài gửi: 25
: |
Mình đã hiểu rồi cảm ơn các bạn nhiều nha. Khi nào có gì thắc mắc lại nhờ các bạn tiếp nhé! Hihi
|
![]() |
![]() |
![]() |
#12 |
Đệ tử 4 túi
|
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ắm
|
![]() |
![]() |
![]() |
#13 |
Đệ tử 1 túi
Tham gia ngày: Mar 2009
Bài gửi: 13
: |
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ùm
|
![]() |
![]() |
![]() |
#14 |
Đệ tử 2 túi
Tham gia ngày: Jul 2009
Bài gửi: 40
: |
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.
__________________
Cao Văn Hưởng SĐT: 01672754113 Email: caovanhuong@webdien.com Nhận thiết kế mạch điện tử, PCB (Orcad) |
![]() |
![]() |
![]() |
#15 |
Đệ tử 1 túi
Tham gia ngày: Mar 2009
Bài gửi: 13
: |
|
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|