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 17-03-2009, 10:15 PM   #1
npbaoduy
Đệ tử 2 túi
 
Tham gia ngày: Sep 2008
Nơi Cư Ngụ: Tp. HCM
Bài gửi: 38
:
Hỏi về ngắt INT0

em có viết 1 đoạn chương trình như sau
Code:
void main()
{
x=1;
set_TRIS_A(1);
EXT_INT_EDGE(0,L_TO_H);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while (x==1)
{
output_toggle(PIN_E0);
delay_ms(100);
output_toggle(PIN_E1);
delay_ms(100);
output_toggle(PIN_E2);
delay_ms(100);
}
#INT_EXT
void ngat()
{
x=0;
}
Không hiểu sao, khi em test thử, chỉ khi chân INT0 lên mức cao thì vòng lặp mới dừng lại (các LED nối ở porte ko chớp) khi chân INT0 về mức thấp, vòng lặp vẫn tiếp tục (LED chớp( trở lại), tức là x vẫn bằng 1?
Ai biết xin chỉ giúp, em xin cám ơn nhiều.

thay đổi nội dung bởi: npbaoduy, 17-03-2009 lúc 11:14 PM. Lý do: định dạng code
npbaoduy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-03-2009, 10:34 PM   #2
mtuankct
Đệ tử 6 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 125
:
Hình như bạn viết thiếu dấu } của hàm main
còn lỗi theo mình là do sau vòng while(x==1) bạn không có bất kỳ lệnh nào tiếp nên vđk sẽ reset và chạy lại từ đầu, cần đặt một vòng while(1); vào cuối chuơng trình main để tránh hiện tượng này
mtuankct vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-03-2009, 10:47 PM   #3
npbaoduy
Đệ tử 2 túi
 
Tham gia ngày: Sep 2008
Nơi Cư Ngụ: Tp. HCM
Bài gửi: 38
:
cám ơn bạn, mình sẽ thử lại
Cũng như trên, mình viết thêm
void ngat()
{
if (PIN_a0==1)
x=0;
}
CCS luôn warning là: Condition always FALSE
Ý mình muốn là khi ngắt sẽ kiểm tra PIN A0, xem PIN này mức cao hay thấp để thực hiện lệnh gì đó, vậy có ai có gợi ý giúp mình ko?
npbaoduy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-03-2009, 11:08 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 npbaoduy View Post
cám ơn bạn, mình sẽ thử lại
Cũng như trên, mình viết thêm
void ngat()
{
if (PIN_a0==1)
x=0;
}
CCS luôn warning là: Condition always FALSE
Ý mình muốn là khi ngắt sẽ kiểm tra PIN A0, xem PIN này mức cao hay thấp để thực hiện lệnh gì đó, vậy có ai có gợi ý giúp mình ko?
Theo tôi, CCS C hiểu là bạn lấy giá trị địa chỉ của PIN_a0 để so sánh với 1, dẫn đến kết quả luôn luôn là false. Cách đọc giá trị của ngõ vào I/O có trong tài liệu hướng dẫn của CCS C (hàm input()), có cả ví dụ, tại sao bạn không đọc tài liệu hướng dẫn?

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 17-03-2009, 11:13 PM   #5
npbaoduy
Đệ tử 2 túi
 
Tham gia ngày: Sep 2008
Nơi Cư Ngụ: Tp. HCM
Bài gửi: 38
:
cám ơn anh namqn, tại em cũng mới dùng CCS, chưa biết hàm INPUT này, em sẽ nghiên cứu kỹ lại.
npbaoduy 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à 11:51 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