![]() |
|
Tài trợ cho PIC Vietnam |
Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
Code:
#include <16F877A.h> #use delay (clock=20000000) void main() { do { output_bit(pin_a0,1); delay_ms(200); output_bit(pin_a1,1); delay_ms(200); output_bit(pin_a2,1); delay_ms(200); output_bit(pin_a3,1); delay_ms(200); output_bit(pin_a4,1); delay_ms(200); output_bit(pin_a5,1); delay_ms(200); }While(true); }//sau 6s thì tất cả chân của portA phải ở mức áp cao #use delay (clock=20000000) và delay_ms(200) là trì hoãn 1s (cái này mình thử đo bằng đồng hồ )chứ không biết có đúng là 1s không nữa?Ý mình muốn hỏi là 02 cặp lệnh trên dùng như thế nào?và con số 20000000 là gì? thay đổi nội dung bởi: namqn, 17-11-2008 lúc 03:19 PM. |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
#use delay (clock=20000000) báo cho trình biên dịch biết xung clock của vi điều khiển là 20 MHz, từ đó có thể tính ra các số đếm tương ứng cho các hàm delay_ms() và delay_us(). Theo hiện tượng bạn mô tả, hàm delay_ms(200) cho thời gian trễ khoảng 1 s, có thể thấy xung clock thực tế bạn đang dùng trong Proteus nhỏ hơn so với giá trị đã thiết lập trong code (20 MHz) khoảng 4, 5 lần. Với những ví dụ bật/tắt LED dùng hàm delay_ms(), mô phỏng trong Proteus chỉ tốn thời gian một cách không cần thiết. 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 |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
Có phải sử dụng lệnh: set_tris_a(0x00); để cấu hình portA là cổng xuất phải không bạn?
Như vậy nếu mình sử dụng thạch anh 4Mhz thì mình phải khai báo là: #use delay<4000000> phải không bạn? |
![]() |
![]() |
![]() |
#4 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
led
Trích:
#use delay<4000000> cái này là để khai báo tần số thạch anh ngoài mà bạn sử dụng. tuy nhiên bạn cần thêm phần fuses để thiết lập phần cứng cho pic. (4M khai báo hệ số XT, 20M khai báo hệ số HS).... tần số dao động của 16f bằng 1/4 tần số thạch anh ngoài, một lệnh của nó mất khoản 3-5 lần tần số dao động. do đó để tính được thời gian delay chính sát với thực tế bạn phải chạy mạch thật và tính chính sát các lệnh mà bạn sử dụng. thay đổi nội dung bởi: tungtot_vl, 21-11-2008 lúc 10:04 AM. Lý do: sai chính tả |
|
![]() |
![]() |
![]() |
#5 | |
Trưởng lão PIC bang
|
Trích:
Hoàn toàn có thể dùng MPLAB SIM để mô phỏng và xác định thời gian delay của một đoạn lệnh bất kỳ. Nếu chịu khó tính toán kỹ, bạn cũng có thể tính toán ra thời gian delay của một đoạn lệnh bất kỳ. Khi đó, bạn có thể dùng MPLAB SIM để kiểm chứng. 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 |
|
![]() |
![]() |
![]() |
|
|