PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và 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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 06-12-2008, 11:35 AM   #1
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Vậy là muốn sử dụng timer0 thì mình chỉ cần:
setup_TIMER_2(mode, period, postscale);
khi gặp câu lệnh:
set_TIMER2(value);
là timer 0 sẽ bắt đầu đếm phải không bạn?

Cho mình hỏi luôn là mình sử dụng thạch anh 4Mhz mà muốn tính số lần ngắt trên 1s thì mình phải tính như thế nào?(mục đích là mình muốn khi kích hoạt timer0 sau 1s thì mình sẽ làm việc khác đó mà!)
Mình có tham khảo trong mục help(mình sử dụng ccs c) thì với thạch anh 20Mhz thì số lần ngắt trên 1s là 76 nhưng mình không hiểu lắm về cách tính ra con số 76.Đại khái là:
20000000/(4*256*256) =76
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-12-2008, 05:33 PM   #2
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
pic

Trích:
Nguyên văn bởi lequocbao View Post
Vậy là muốn sử dụng timer0 thì mình chỉ cần:
setup_TIMER_2(mode, period, postscale);
khi gặp câu lệnh:
set_TIMER2(value);
là timer 0 sẽ bắt đầu đếm phải không bạn?

Cho mình hỏi luôn là mình sử dụng thạch anh 4Mhz mà muốn tính số lần ngắt trên 1s thì mình phải tính như thế nào?(mục đích là mình muốn khi kích hoạt timer0 sau 1s thì mình sẽ làm việc khác đó mà!)
Mình có tham khảo trong mục help(mình sử dụng ccs c) thì với thạch anh 20Mhz thì số lần ngắt trên 1s là 76 nhưng mình không hiểu lắm về cách tính ra con số 76.Đại khái là:
20000000/(4*256*256) =76
ngắt 1s
#include <16F877A.h>
#device 18F4680*=16 ADC=10
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(c)
#byte portc=0x07
int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void timer0()
{
set_timer0(56); // T = 2*(256 - 56)*1us = 400us (nếu dùng thạch anh 20M thi thay 1us thành 0,2us)
++count;
if(count == 2500) // 2500*400us = 1000000us = 1s
{
count=0;
rotate_left(&a,1);
}
}
//Chuong trinh dich led
void main()
{ set_tris_c(0);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
enable_interrupts(global);

a = 0x01;
while(true)
{
portc = a;
}
}
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-12-2008, 05:33 PM   #3
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
pic

tự tìm hiểu nhé

thay đổi nội dung bởi: tungtot_vl, 07-12-2008 lúc 05:36 PM. Lý do: sai
tungtot_vl 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à 10:10 AM.


Đượ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