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 13-12-2009, 12:16 AM   #1
conchocon
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 8
:
timer

chào các bạn mình mới học Pic nên mình có nhiều thứ không biết
thứ 1 : lúc mình xài ngắt timer (mình xài con 16f877a) thì phải khai báo ra sao ??
và bạn nào có thể cho mình xem ví dụ cụ thể thì tốt quá.
thứ 2: giả sử mình muốn sau 10s hoặc 1 phút thì led sáng chẳng hạn thì mình tính toán như thế nào (thạch anh 20Mh)
thứ 3 : bạn nào có thể cho mình ví dụ 2 led sáng tắt sau 1 phút mà dùng ngắt timer ko ?
Mình viết = C. (CCS)
cám ơn các bạn nhiều.
conchocon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-12-2009, 07:03 AM   #2
dung h
Đệ tử 4 túi
 
Tham gia ngày: May 2009
Bài gửi: 74
:
muốn sử dụng ngắt timer bạn cần thiết lập như sau: mình giả sử dùng ngắt timer 0
setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_4); // TIMER0 sử dụng dao động nội
// xung cho timer0 = osc/4
enable_interrrupts(INT_TIMER0) ; // cho phep ngắt timer0
enable_interrupts(GLOBAL) ; // cho phep ngat toàn cục

set_timer0( timer) ; // giả sử sử dung osc 20MHz ,timer0 8bit
// timer = (256-value)*div*(4/20000000)= xx us
khi đó cứ mỗi khi có cờ timer tràn thì chương trình nhảy đến ngắt timer
#int_timer0
void ngat_timer0()
{
// công việc
}
còn bạn muốn ngắt 1s hay 1 phút thì cho 1 biến tăng dần số lần tràn
counter++;
dung h vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-12-2009, 05:14 PM   #3
conchocon
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 8
:
#fuses LP, HS, RC, WDT, NOWDT

#int_timer0
void ngat_timer0()
{
output_high(PIN_B0);
////khai bao timer ra sao o day ;
output_low(PIN_B0);
}
void main()
{ /////con conter ++ thi minh phai khai bao ra sao minh chua hieu ve 1s hay 1 phut la phai lam sao
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
set_timer0(100);////minh ko hieu nen khai gia tri bao nhieu ca.
while(1)
{
ngat_timer0();
}

}
minh viet chuong trinh sang va tat trong vong 1 phut nhung chua biet phai lam timer ra sao ca
conchocon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-03-2010, 08:39 PM   #4
dienbk36
Nhập môn đệ tử
 
Tham gia ngày: Jan 2010
Bài gửi: 6
:
//minh vua viet dc chuong trinh tao tre 0,5s dung timer0,ban thu doc xem co giup gi dc ko nhe
#include<16f877a.h>
#byte PORTB=0x06
#byte TRISB=0x86

#use delay(clock=20000000)
#int_timer0
int16 count=0;
//chuong trinh ngat timer0
void interrupts_timer0()
{
set_timer0(0);//khoi tao gia tri dem ban dau la 0
++count;
if(count==39062)//Ttimer0=256*3906220000000)=0,5
{
count=0;

PORTB^=(1<<0);
}
}
//chuong trinh chinh

void main()
{
TRISB=0x00;//dat cac chan cua portb o la chan ra
PORTB=1;//dat dien ap cao cho pin RBO}
enable_interrupts(int_timer0);//cho phep ngat timer0
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); //prescaler=1:256
enable_interrupts(global);


while(1)
{
interrupts_timer0();
}


}
dienbk36 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-03-2010, 08:42 PM   #5
dienbk36
Nhập môn đệ tử
 
Tham gia ngày: Jan 2010
Bài gửi: 6
:
theo nhu minh hieu timer neu dung 1 minh no chi la lam nhiem vu dem,no chi co tac dụng khi chúng ta kết hợp với ngắt nữa đúng ko,các pro cho ý kiến với
dienbk36 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2010, 05:47 PM   #6
hcmut.khoamaisi
Đệ tử 4 túi
 
hcmut.khoamaisi's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TPHCM
Bài gửi: 79
:
Send a message via Yahoo to hcmut.khoamaisi
Timer có tác dụng tạo ngắt,như trong con 8051 thì có 5 ngắt:2 ngắt bằng timer(timer0,timer1),2 ngắt ngoài và 1 ngắt cổng nối tiếp(SBUF).
Trong 8051 có thanh ghi IE(interrupt enable) ở địa chỉ A8H.Đây là thanh ghi 8 bit được địa chỉ hóa từng bit cụ thể như phía dưới nhằm xác định trạng thái ngắt nào(timer hay ngắt ngoài hay SBUF)
+ IE.7(kí hiệu:EA,địa chỉ AFH):khi IE.7=1 cho phép toàn bộ các ngắt hoạt động,ngược lại là cấm toàn bộ
+ IE.6(địa chỉ AFH) : chưa được định nghĩa
+ IE.5(kí hiệu:ET2,địa chỉ ADH):Cho phép ngắt timer 2(8052)
+ IE.4(kí hiệu:ES,địa chỉ ACH):Cho phép ngắt của cổng nối tiếp
+ IE.3(kí hiệu:ET1,địa chỉ ABH):Cho phép ngắt timer 1
+ IE.2(kí hiệu:EX1,địa chỉ AAH):Cho phép ngoài 1
+ IE.1(kí hiệu:ET0,địa chỉ A9H):Cho phép ngắt timer 0
+ IE.0(kí hiệu:EX0,địa chỉ A8H):Cho phép ngoài 0
Đối với con 8051 là như vậy còn PIC thế nào thì mình chưa học.
hcmut.khoamaisi 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à 02: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