![]() |
|
|
#21 | |
|
Nhập môn đệ tử
Tham gia ngày: Jun 2008
Bài gửi: 10
: |
Trích:
vì khi bạn dùng Set_timer0(X) thì thời gian để 1 lần Timer của bạn tràn là : T = 4.(256 - X) / Tấn số thạch anh Cụ thể ở đây của bạn : X = 6 và Tần số thạch anh là : 4MHz -> T = 4.(256 -6) / 4000000 = 250uS . Vậy để trễ 1s bạn cần tràn Timer 4000 lần Nhưng bạn dùng chế độ RTCC_DIV_16 nên Timer tràn 250 lần là bạn có 1s Vì thế bạn chỉ cần sửa chương trình lại như sau là ngon lành : Code:
#include <16f877a.h>
#fuses HS, NOWDT
#use delay(clock=4000000)
#byte portb=0x06
#byte trisb=0x86
#byte INTCON=0x0b
#bit TMR0IF=INTCON.2
#byte TMR0=0x01
#use fast_IO (b)
INT8 I=0;
int8 a,b;
int8 C[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
#INT_TIMER0
VOID TRAN_TIMER0()
{
I ++;
SET_TIMER0(6);
}
void tre1s (int so)
{
int i,j;
TMR0IF=0;
setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_16);
set_timer0 (6);
for (i=0;i<=so;i++)
{
while (TMR0IF==0)
{
}
}
}
void main ()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
set_tris_b (0x00);
a=0;
while (1)
{
for (a=0;a<=9;a++)
{
//tre1s(250);
portb=C[a];
tre1s(250);
}
}
}
![]() |
|
|
|
|
|
|
Similar Threads
|
||||
| Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
| dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 92 | 19-02-2017 11:15 PM |
| dsPIC Tutorial 2-Các kỹ thuật cơ bản | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 33 | 17-10-2013 11:09 PM |
| dsPIC Tutorial 4-Module UART và I2C | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 76 | 09-05-2012 10:55 AM |
| Tutorial LCD cua Nigel??????? | spirit | Cơ bản về vi điều khiển và PIC | 16 | 16-03-2009 05:32 PM |
| tutorial hay cho newbie | FUD84 | Cơ bản về vi điều khiển và PIC | 2 | 04-12-2005 02:29 AM |