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 09-06-2009, 10:46 PM   #1
p2009kc
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 6
:
đếm ngoài dùng timer0

Em mới n/cứu về PIC, khi viết c.trình dùng timer để đếm nhưng không được, em cũng không biết code sai ở đâu nữa. Các bác chỉ giúp em với, các bác thông cảm em vẫn còn gà lắm.
Code em viết như sau:
Code:
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#byte PORTB = 0x06
int8 leds;

#int_timer0
void interrupt_timer0()
{
   set_timer0(0);
   ++leds;
   if(leds == 255)
      {
         leds=1;
       }
}

void main(void)
{       enable_interrupts(global);
        enable_interrupts(int_timer0);
        setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_2);
        set_timer0(0);  
        leds=1;
         while (1)
            {
               PORTB=leds;
            }
}
Mạch điện có 8 leds đấu vào cổng B, xung 1Hz bên ngoài đưa vào RA4.

thay đổi nội dung bởi: namqn, 10-06-2009 lúc 12:10 AM. Lý do: định dạng code
p2009kc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-06-2009, 09:02 AM   #2
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
u nhầm oy , khai báo trên của u là timer0 làm bộ counter . Có phải í u là
+ vô ngắt timer0 thì biến leds tăng
+ ra hàm chính sẽ lấy giá trị leds đó xuất ra PORTB ?
Nếu vậy thì phải khai báo lại chỗ này setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_2);
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-06-2009, 11:54 AM   #3
phamhoangthong
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 6
:
u sai chổ này nè ! biến led của em chỉ tăng sau 256 second ! Có phải khi có 1 clock vào thì giá trị bộ counter của timer0 tăng lên 1. Nhưng khi giá trị bộ counter là 256 thì interrupt_timer mới thực hiện => portB tăng theo chu kỳ 1/256 Hz
phamhoangthong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-06-2009, 02:08 PM   #4
p2009kc
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 6
:
Cám ơn bác Mr.Bi và bác phamhoangthong nhưng em sửa vẫn không được. Ý của em như bác Mr.Bi đã nói nhưng bác bảo sửa setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_2); thành gì? Còn như bác phamhoangthong nói vậy thì sau 256 second thì led phải sáng nhưng ở đây không thấy gì các bác ạ.
Các bác giúp em nhé vì em thực hiện trên cả mô phỏng và mạch đều không được.
p2009kc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-06-2009, 07:32 PM   #5
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
xung 1hz thì cần gì phải dùng tới timer0 hả bạn?dùng đại chân io bình thường là tốt rùi!

bạn thử thêm:
set_tris_a(0xff);
set_tris_b(0x00); thử coi.
set_timer_0(0); xung vào *2 vậy là có 128 xung 1hz (tương đương 128s)vào chân ra4 thì xảy ra ngắt.

còn không được thì bỏ quách thằng |RTCC_DIV_2 đi(hình như là dùng ở chế độ counter không có tiết mục này).
bạn muốn cứ có 1 xung thì xảy ra ngắt thì bạn phải set_timer_0(255); chứ bạn!
__________________
A&A

thay đổi nội dung bởi: lequocbao, 10-06-2009 lúc 07:42 PM.
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-06-2009, 12:02 AM   #6
p2009kc
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 6
:
Cám ơn bác lequocbao nhiều, em đã làm được rồi, nguyên do đúng như bác, nói do em thiếu: set_tris_a(0xff); set_tris_b(0x00); phải set_timer_0(255); để đúng 1 second thì phải set_timer_0(255);
Trước đó em đã thử ngắt trên R0 thì đã OK rồi.
p2009kc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-06-2009, 12:03 AM   #7
p2009kc
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 6
:
Cám ơn bác lequocbao nhiều, em đã làm được rồi, nguyên do đúng như bác nói do em thiếu: set_tris_a(0xff); set_tris_b(0x00); phải set_timer_0(255); để đúng 1 second thì phải set_timer_0(255);
Trước đó em đã thử ngắt trên R0 thì đã OK rồi.
p2009kc 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à 03:04 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