PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC > Những câu hỏi thường gặp

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

Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 22-07-2011, 12:57 PM   #1
maino17771
Nhập môn đệ tử
 
Tham gia ngày: Jun 2011
Bài gửi: 4
:
help set timer 0

Mình muốn sao mỗi giây thì tăng giá trị của Port D lên 1 lần.

Sao mình mô phỏng trên protues thì lâu hơn 1 giây nó mới tăng lên 1 lần.Không lẽ mình giá trị của set_Timer0 không đúng.
Ai giúp mình với.

#include <16F877A.h>
#include <DEF_877a.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#byte PORTB = 0x06

int16 count;
int8 a,b;
int8 c;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(6);
++count;
if(count == 2000) // 2000*500us = 500000us = 1s
{
count=0;
a++;
if(a ==10)
{
a=0;
b++;
if(b==6)
b=0;
}
c=b<<4;
c=c+a;
PORTD = c;
}
}
//Chuong trinh chinh
void main(void)
{
set_tris_d(0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
enable_interrupts(int_timer0|global);
set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us
a=0;
b=0;
c=0;
while(true)
{
}
}
maino17771 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-07-2011, 05:59 PM   #2
pstin
Đệ tử 7 túi
 
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
:
Cái này trên mạch thật tui thấy cũng có sai chút ít về thời gian!!!!!!!!. Đoán là trong CCS nó bị trễ vài chu kỳ lệnh ở chổ nào đó!!!!!!!!!.
Chơi cùi là tính toán nhập lại giảm giá tri của count hoặc set lại giá trị ban đầu của timer0 sao cho nó đúng 1S là OK thôi!!!!!!!!!!!!!
pstin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-08-2011, 12:19 PM   #3
dinhthem
Đệ tử 2 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 34
:
Không phải đâu, thời gian trong Protues bị sai đó!
Mình đã làm rồi, nếu không tin thì bạn xài realtime của nó, chạy chậm hơn 5 - 6s / 1 phút
Góp ý thêm cho bạn là dùng timer1, 16bit + 3bit prescale = 19 bit rồi, sẽ hạn chế nhiều chu kì lệnh, thời gian sẽ chính xác hơn. (khi đó biến count của bạn = 2 là đủ)
dinhthem vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-03-2012, 02:33 PM   #4
onkhacdokh
Nhập môn đệ tử
 
Tham gia ngày: Mar 2012
Nơi Cư Ngụ: hà nội
Bài gửi: 4
:
có bạn nào hiểu tường tận về timer và counter không giúp mình với và minh còn có một thắc mắc nữa là làm thế nào để tăng thêm cổng nhập dữ liệu cho pic nhỉ
onkhacdokh 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à 06:32 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