![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| 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 |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#3 |
|
Nhập môn đệ tử
Tham gia ngày: May 2007
Bài gửi: 9
: |
E biết vậy nhưng ý e hỏi là khi nó đang thực hiện ngắt thì nó có đếm không hay là khi thực hiện xong ngắt và trở về chương trình chính nó mới đếm tiếp ?
ngắt của e nó thế này : Code:
void timer0()
{
set_timer0(6); // T = 16*(256 - 6)*0.2us = 800us (ne^'u dùng tha.ch anh 4M thi thay 0.2us thành 1us)
++count;
set_adc_channel(0); // RA0/AN0(Pin2) is analog input channel
delay_us(10);
ap_adc=read_adc();
ap_dc=ap_dc+ap_adc;
set_adc_channel(1);
delay_us(10);
dong_adc=read_adc();
dong_dc=dong_dc+dong_adc;
power=(ap_adc-v_offset)*(dong_adc-i_offset);
value=power+ value;
if(count==625) //800*200=240000
{
count=0;
v_offset=ap_dc/625;
i_offset=dong_dc/625;
power_tb=(value/625)*1.13; //Ki=480
//Kv=639
//power_tb=(ap_adc*Kv*(5/1024))*(dong_adc*Ki*(5/1024))
power_sum=power_tb*0.5/(3600*1000); //power_tb*0.2/(3600*1000) __10 chu ky
temp=power_sum+temp;
if(temp>=0.001)
{
sum=sum+temp;
temp=temp-0.001;
RB7=1;
delay_ms(20);
RB7=0;
}
ap_dc=0;
dong_dc=0;
value=0;
}
}
thay đổi nội dung bởi: phamminhtuan, 10-12-2009 lúc 11:15 AM. Lý do: Định dạng code |
|
|
|
|
|