![]() |
![]() |
#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); } } } ![]() |
|
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề 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 |