![]() |
Cần giúp lỗi delay với ccs!
Mình đang lập trình chạy 6 led nối với RC0 - RC5! Dùng thạch anh 20mhz, chương trình như sau:
#INCLUDE <16F887.H> #INCLUDE <STDIO.H> #FUSES NOWDT,HS,PUT,NOLVP #USE DELAY(CLOCK=20000000) INT T; VOID MAIN() { SET_TRIS_C(0X00); T=1000; WHILE(1) { OUTPUT_C(0B00000011); DELAY_MS(T); OUTPUT_C(0B00000110); DELAY_MS(T); OUTPUT_C(0B00001100); DELAY_MS(T); OUTPUT_C(0B00011000); DELAY_MS(T); OUTPUT_C(0B00110000); DELAY_MS(T); OUTPUT_C(0B00100001); DELAY_MS(T); } } Nhưng đến khi chạy thì nó ko delay 1 giây mà nhanh hơn, giống như là 300ms! Đến khi thay DELAY_MS(T); bằng DELAY_MS(1000); thì lại chạy đúng?! Pro nào xin chỉ giáo! Thanks! |
Trích:
Time = 0-255 nếu là biến số hay = 0-65535 nếu là hằng số. ==> Phải trui luyện lại CCS cơ bản!!. Bạn muốn lên 1000, thì đổi thành T=100 và lặp 10 lần!!!. for(i=1;i<=10;i++) {delay_ms(T);} |
Trích:
|
nếu muốn delay 1s sao không viết thẳng là delay_ms(1000).Nếu không ra đúng 1s thì bạn nên xem lại thạch anh của bạn vì mình đã bị vấn đề này rồi , còn không thích thì ta có thể dùng timer 0 cũng được.
|
Trích:
Viết delay_ms() theo biến số nó cũng có ý nghĩa riêng của nó!,...một ví dụ đơn giản như bạn chỉnh "thời gian báo động" bằng cách chỉnh biến trở bên ngoài!,...đọc giá trị ADC của biến trở và delay theo đó!... Chỉnh thời gian delay theo nút nhấn thì nhiều khi rắc rối và không cần thiết vì nó cần phải có màn hình hiển thị mới được!!!.. |
Trích:
|
Múi giờ GMT. Hiện tại là 03:38 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam