![]() |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Dec 2012
Bài gửi: 7
: |
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! |
![]() |
![]() |
![]() |
#2 | |
Đệ tử 7 túi
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
: |
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);} |
|
![]() |
![]() |
![]() |
#3 | |
Nhập môn đệ tử
Tham gia ngày: Dec 2012
Bài gửi: 7
: |
Trích:
![]() |
|
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Jan 2013
Bài gửi: 6
: |
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.
|
![]() |
![]() |
![]() |
#5 | |
Đệ tử 7 túi
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
: |
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!!!.. |
|
![]() |
![]() |
![]() |
#6 | |
Nhập môn đệ tử
Tham gia ngày: Dec 2012
Bài gửi: 7
: |
Trích:
|
|
![]() |
![]() |
![]() |
|
|