PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 31-12-2008, 11:10 AM   #1
nms48
Đệ tử 1 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 11
:
xin lỗi các bạn và đặc biệt là anh namqn. mình sơ ý wa. cám ơn anh đã giúp em.
em post lên diễn đàn cái code cũ mà kô để ý.xin chân thành xin lỗi về sai sót này .

Code:
#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

// ngat ngoai
#int_EXT
void EXT_isr()
{
   set_timer0(7);   //4ms tran
}

//ngat timer0
#int_timer0
void timer0_isr()
{

    set_timer1(40534);
    output_high(pin_D0);
    delay_us(10);
    output_low(pin_D0);

}
// ngat timer1
#int_timer1
void timer1_isr()
{
     output_high(pin_D1);
     delay_us(10);
     output_low(pin_D1);

}

// chuong trinh chinh
void main()
{  
   enable_interrupts(INT_EXT);
   ext_int_edge(L_TO_H);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);
   enable_interrupts(int_timer0);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   enable_interrupts(int_timer1);
   enable_interrupts(global);


while(true)
{

   output_high(pin_d2);
   delay_ms(10);
   output_low(pin_d2);
   delay_ms(10);
}
}
chuong trình chạy được timer0 nhưng khỏang 0.8ms là xuất xung rồi trong khi đó em cần timer0 chờ ngắt ngoài rồi mới được phép ngắt. còn timer1 thì kô chạy(tại vì kô thấy xuất xung ra D1).
mong anh giup em lần này nữa.thân chào anh

thay đổi nội dung bởi: namqn, 31-12-2008 lúc 05:06 PM.
nms48 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-12-2008, 05:16 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Với Timer 0, bạn đang định thời bằng 16*(256 - 7) = 3984 chu kỳ máy, tức là 0,7968 ms với tần số xung clock là 20 MHz. Timer 0 là timer chạy tự do, không thể tắt (bạn sẽ không tìm thấy bit nào trong các thanh ghi liên quan đến Timer 0 để tắt nó). Do đó, những gì bạn quan sát được với Timer 0 là hợp lý.

Bạn làm thế nào để biết chân D1 có thay đổi trạng thái hay không? Bạn không quan sát được sự thay đổi của chân D1 bằng những biện pháp hiện thời không có nghĩa là chân D1 không thay đổi trạng thái.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-12-2008, 05:42 PM   #3
nms48
Đệ tử 1 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 11
:
em xin lỗi,nhưng anh có thể chỉ cho em cách làm như thế nào để xuất xung được như ý không. nếu timer0 kô thể tắt thì phải làm như thế nào (chuyển qua dùng timer2 chăng)

ko trách gì em đã clear cờ ngắt của timer0 cũng kô dc.(timer0 là timer chạy tự do -em cám ơn anh về thông tin này lắm lắm)

còn chân d1 em quan sát bằng osillicope nhưng ko thấy xung nào cả.em nghĩ lả do timer0 ngắt thì timer1 mới hoạt động nhưng có lẽ do timer1 chưa kip ngắt timer0 đã sét lại giá trị cho timer1 rùi.

chân thành cám ơn anh và mong anh giúp.chúc anh vui
nms48 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-12-2008, 06:01 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi nms48 View Post
em xin lỗi,nhưng anh có thể chỉ cho em cách làm như thế nào để xuất xung được như ý không. nếu timer0 kô thể tắt thì phải làm như thế nào (chuyển qua dùng timer2 chăng)

ko trách gì em đã clear cờ ngắt của timer0 cũng kô dc.(timer0 là timer chạy tự do -em cám ơn anh về thông tin này lắm lắm)

còn chân d1 em quan sát bằng osillicope nhưng ko thấy xung nào cả.em nghĩ lả do timer0 ngắt thì timer1 mới hoạt động nhưng có lẽ do timer1 chưa kip ngắt timer0 đã sét lại giá trị cho timer1 rùi.

chân thành cám ơn anh và mong anh giúp.chúc anh vui
Theo tôi, đúng như bạn đã nghĩ rằng Timer 1 không hề tạo ngắt. Lý do là sau mỗi 0,8 ms thì ngắt Timer 0 sẽ đặt lại số đếm cho Timer 1, nên ngắt Timer 1 sẽ không bao giờ xảy ra (vì cần khoảng 5 ms mới đạt đến điều kiện tạo ngắt).

Bạn nên mô tả bài toán gốc, vì bạn chưa có được giải thuật đú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
namqn 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à 06:55 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