Tôi làm một mạch đồng hồ dùng pic16f877a theo bài học I2C mà CLB đã cung cấp.
Dùng CCS để viết code, nói chung là khá ổn, song còn mỗi việc chưa biết dùng ngắt ngoài như thế nào để chỉnh giờ cả.
Ý tưởng của tôi là dùng 3 nút nhấn đặt vào RB4, RB5, RB6 cùng với điện trở treo 2k7 lên nguồn để set time, khi nhấn nút tương ứng thì RB4,5,6 sẽ có điện áp 0.
nếu nhấn giữ nút RB4 và nhấn RB5 thì giờ tăng 1 đơn vị, nếu nhấn giữ nút RB4 và nhấn RB6 thì phút tăng 1, tức là khi không nhấn giữ nút RB4 thì bấn nút khác không có tác dụng chỉnh giờ.
Vui lòng giúp cho cách dùng ngắt như thế nào để thực hiện ý tưởng trên. Mình tìm mãi chưa có bài viết nào nói kỹ về interrupt cả nên bí.
đây là đoạn code do tự nghĩ ra không biết có đúng không (các bạn đừng cười mình nhé, mình dân IT tự nghiên cứu PIC thôi)
Xin vui lòng chỉ giúp, hoặc ai đó viết bài hướng dẫn kỹ về interrupt càng tốt.
(Tôi tự mình nghiên cứu PIC, không có điều kiện để đi học và ngay bên cạnh tôi cũng chưa có ai cùng sở thích, nên gặp nhiều khó khăn. Xin cảm ơn những bài viết của các anh chị falleaf, namqn, 2death, nhh ... và tất cả các bạn tham gia diễn đàn này cũng như bên picvietnam đã mở ra cho tôi những kiến thức mới trong khoa học)
mail của tôi anhtt01@gmail.com, rất vui nếu có thêm bạn cùng giao lưu!
Dùng CCS để viết code, nói chung là khá ổn, song còn mỗi việc chưa biết dùng ngắt ngoài như thế nào để chỉnh giờ cả.
Ý tưởng của tôi là dùng 3 nút nhấn đặt vào RB4, RB5, RB6 cùng với điện trở treo 2k7 lên nguồn để set time, khi nhấn nút tương ứng thì RB4,5,6 sẽ có điện áp 0.
nếu nhấn giữ nút RB4 và nhấn RB5 thì giờ tăng 1 đơn vị, nếu nhấn giữ nút RB4 và nhấn RB6 thì phút tăng 1, tức là khi không nhấn giữ nút RB4 thì bấn nút khác không có tác dụng chỉnh giờ.
Vui lòng giúp cho cách dùng ngắt như thế nào để thực hiện ý tưởng trên. Mình tìm mãi chưa có bài viết nào nói kỹ về interrupt cả nên bí.
đây là đoạn code do tự nghĩ ra không biết có đúng không (các bạn đừng cười mình nhé, mình dân IT tự nghiên cứu PIC thôi)
và rồi cũng chưa biết là sử dụng nó ra sao trong hàm main()./*
#int_RB
void interrup_RB()
{
if(RBIE && RBIF)
{
if(RB4==0)
{
if(RB5==0)
{
if(gio<24) gio++;
else gio=0;
}
if(RB6==0)
{
if(phut<60) phut++;
else phut = 0;
}
}
RBIF=0;
}
}
*/
Xin vui lòng chỉ giúp, hoặc ai đó viết bài hướng dẫn kỹ về interrupt càng tốt.
(Tôi tự mình nghiên cứu PIC, không có điều kiện để đi học và ngay bên cạnh tôi cũng chưa có ai cùng sở thích, nên gặp nhiều khó khăn. Xin cảm ơn những bài viết của các anh chị falleaf, namqn, 2death, nhh ... và tất cả các bạn tham gia diễn đàn này cũng như bên picvietnam đã mở ra cho tôi những kiến thức mới trong khoa học)
mail của tôi anhtt01@gmail.com, rất vui nếu có thêm bạn cùng giao lưu!