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 02-04-2009, 10:06 PM   #1
dvtrieu89
Đệ 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...
dvtrieu89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-04-2009, 10:42 PM   #2
phandinh
Đệ 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.
phandinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 12:12 AM   #3
dvtrieu89
Đệ 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
dvtrieu89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 12:23 AM   #4
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi dvtrieu89 View Post
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
không cần phải khai báo lại đâu bạn
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 12:25 AM   #5
dvtrieu89
Đệ 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
dvtrieu89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 12:34 AM   #6
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi dvtrieu89 View Post
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
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ôi
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 12:46 AM   #7
dvtrieu89
Đệ 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?
dvtrieu89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 01:25 AM   #8
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi dvtrieu89 View Post
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?
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 sai
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 08:52 AM   #9
dvtrieu89
Đệ 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.
dvtrieu89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 11:00 AM   #10
cskiller
Đệ 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
cskiller vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 08:04 PM   #11
dvtrieu89
Đệ 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
dvtrieu89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-09-2010, 02:50 AM   #12
hcmut.khoamaisi
Đệ tử 4 túi
 
hcmut.khoamaisi's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TPHCM
Bài gửi: 79
:
Send a message via Yahoo to hcmut.khoamaisi
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
hcmut.khoamaisi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-09-2010, 04:45 PM   #13
vinh2809
Đệ tử 1 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 13
:
Trích:
Nguyên văn bởi hcmut.khoamaisi View Post
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
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
vinh2809 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-09-2010, 03:03 AM   #14
caovanhuong
Đệ tử 2 túi
 
caovanhuong's Avatar
 
Tham gia ngày: Jul 2009
Bài gửi: 40
:
Trích:
Nguyên văn bởi vinh2809 View Post
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
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)

caovanhuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-09-2010, 11:56 AM   #15
vinh2809
Đệ tử 1 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 13
:
Trích:
Nguyên văn bởi caovanhuong View Post
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.
<def_887.h> là file do người dùng tự định nghĩa có đúng không? Có 1 vài bài nói là tìm được file này trên diễn đàn nhưng em ko tìm thấy. Mấy file đó lấy ở đâu vậy anh
vinh2809 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


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