PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Hàm delay_ms (http://www.picvietnam.com/forum/showthread.php?t=9598)

handsome3746 31-05-2011 08:56 PM

Hàm delay_ms
 
Mấy huynh cho em hỏi tí nha...mới học pic nên mong mấy huynh chỉ bảo giùm em.
em dùng ccs để xuất tín hiệu làm đèn chớp tắt ở chân C1...Đoạn code như sau:

#include <18f4620.h>
#BYTE PORTC=0xf82
#byte TRISC=0xf94
#use delay (clock=20000000)

void main()
{
TRISC=0x00;
PORTC=0x00;
WHILE(TRUE)
{
output_high(PIN_C1);
delay_ms(1000);
output_low(PIN_C1);
delay_ms(1000);
}
}

khi mô phỏng trên proteus thì đúng là đèn sáng 1 giây sau đó tắt 1 giấy...
nhưng khi làm mạch thật thì không phải là 1 giây mà là 5-6 giây gì đó...
em không hiểu tại sao...
mấy huynh bỏ ra vài phút giúp em nha...
Thạch anh em dùng là 20Mhz như trong code...
cảm ơn mấy huynh trước nha.

phatcddt08a 31-05-2011 09:45 PM

tốt nhất là dùng ngắt timer để làm chuẩn hơn

lionking 31-05-2011 10:25 PM

Trích:

Nguyên văn bởi handsome3746 (Post 45716)
Mấy huynh cho em hỏi tí nha...mới học pic nên mong mấy huynh chỉ bảo giùm em.
em dùng ccs để xuất tín hiệu làm đèn chớp tắt ở chân C1...Đoạn code như sau:

#include <18f4620.h>
#BYTE PORTC=0xf82
#byte TRISC=0xf94
#use delay (clock=20000000)

void main()
{
TRISC=0x00;
PORTC=0x00;
WHILE(TRUE)
{
output_high(PIN_C1);
delay_ms(1000);
output_low(PIN_C1);
delay_ms(1000);
}
}

khi mô phỏng trên proteus thì đúng là đèn sáng 1 giây sau đó tắt 1 giấy...
nhưng khi làm mạch thật thì không phải là 1 giây mà là 5-6 giây gì đó...
em không hiểu tại sao...
mấy huynh bỏ ra vài phút giúp em nha...
Thạch anh em dùng là 20Mhz như trong code...
cảm ơn mấy huynh trước nha.

thêm dòng này vào phần khai báo thử xem: #fuses HS,NOWDT

hcmut.khoamaisi 31-05-2011 10:27 PM

Vấn đề là thạch anh của bạn ghi 20Mhz nhưng co đúng như vậy không!đồ mua ngoài chợ nhật tảo thì có trời mới biết!code ổn không vấn đề gì!mạch thật chạy gần đúng( chỉ sai thời gian!)
Bạn thay con thạch anh khác thử xem,nếu không được thì đó là do lỗi PIC,lỗi linh kiện.....hay là do cái lỗi vặt vãnh nào đó(chỉ có trời mới biết)và đừng nên tìm hiểu thêm nữa sẽ mất thời gian,lựa cái khó hơn mà làm !đừng quá cầu toàn mọi thứ!

handsome3746 31-05-2011 10:40 PM

vì em cần điều khiển động cơ không hồi tiếp nhưng cần độ chính xác tương đối... chỉ xuất led mà xuất không chính xác thì sao xuất pwm chính xác được hả anh... mong anh giup đỡ...

handsome3746 31-05-2011 10:44 PM

cảm ơn bác lionking nha...em làm đc rồi...vậy mà mò cả ngày không ra..

phatcddt08a 01-06-2011 12:08 PM

sao kỳ vậy ta bạn không khai báo dòng fuse làm sau có thể chạy được mạch thật. không có dòng fuse làm sao nạp vào mà pic chạy dc.cái này đọc vậy.mình tưởng là bạn chạy mạch thật thì phải có dòng fuse chứ

handsome3746 01-06-2011 03:39 PM

mình chạy mạch thật vẫn sáng led mà,chỉ có điều thời gian không đúng 1 giây thôi... có thêm #fuses cấu hình cho thạch anh mình là HS nên chạy đúng 1 giây...


Múi giờ GMT. Hiện tại là 10:18 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam