Điểm khác nhau của Timer0 va hàm deley...

pad17x2

Trứng gà
Các bạn cho mình xin y kiến về điểm khác nhau của Timer0 và hàm delay. Mình thấy nó chung chung quá...Cái nào cũng là chờ 1 khoảng thời gian rồi thực hiện 1 lệnh nào đó...Càng nghĩ càng rối...cám ơn đã chia sẽ...hihi
 

zbloodelfz

Cố Vấn CLB
Staff member
Hàm delay tức là bạn cho CPU thực hiện một chuỗi lên NOP <không làm gì cả> => Phí CPU Cycles
Timer là ngoại vi sử dụng chức năng đếm của riêng nó , trong lúc đó nó đếm, CPU có thể thực hiện các tác vụ khác => hiệu quả hơn
 
Chính xác hơn thì thời gian đầu các bạn lập trình sẽ dùng hàm delay đơn giản dạng cho PIC tự kỉ với nó sau xxxx nào đó chu kỳ máy để có thời gian delay là xxxx * chu kỳ máy.
Nhưng như anh elf đã nói rất chính xác, nhằm hiệu quả hơn, người ta dùng timer cũng là tạo 1 hàm delay dạng phức tạp, trong đó riêng phần timer sẽ quản lí delay đó, còn các phần khác của PIC vẫn hoạt động bình thường.:D
mà không chỉ PIC,MCU nào cũng phải dùng timer mới hiệu quả, thậm chí có cái còn dùng các clock khác nhau cho các timer khác nhau nữa kìa :))
 

messier

Ban Chủ Nhiệm
Mấy a cho e hỏi là chương trình ngắt của timer0 chạy song song với main hay là khi cờ báo ngắt bật lên thì nó mới chạy?
 
Mấy a cho e hỏi là chương trình ngắt của timer0 chạy song song với main hay là khi cờ báo ngắt bật lên thì nó mới chạy?
Ngắt nó là cờ - có thể coi như 1 biến bình thường của riêng Timer0, khi timer0 hết thời gian thì cờ ngắt/biến ngắt sẽ lên 1, và cần phải clear cờ trước khi chạy timer lại thôi:D
 
nguyên tắc hoạt động của tất cả mọi dòng MCU với một Core xử lý thì khi vào chương trình ngắt ( hay là xử lý các ngoại lệ) thì bộ core sẽ được dùng cho chức năng xử lý đó nên tất cả các chương trình nền đều được dừng lại cho đến khi chương trình phục vụ ngắt (hay ngoại lệ được xử lý xong). vì chương trình ngắt cũng cần có bộ xử lý để xử lý mà.:))
 

messier

Ban Chủ Nhiệm
Vậy theo em hiểu là khi cờ báo ngắt được bật lên thì sẽ nhảy vào chương trình ngắt. Vậy tại sao trong ct ngắt lại phải thêm dòng lệnh if(T0IE && T0IF)? Khi nhảy vào ct ngắt rồi thì chắc chắn cờ báo ngắt đã bật rồi chứ nhỉ ?
 

light

Thành Viên PIF
khi timer tràn thì nhảy zô thực hiện chương trình ngắt (main đang làm gì kệ nó), làm xong mới nhảy ra lại main. nó đâu có làm cùng lúc 2 việc được, hehe
 
cái lệnh đó dùng để kiểm tra xem ngắt nào đã xảy ra nếu nhiều ngắt được kích hoạt. và cũng để chắc chắn là cờ ngắt được bật và chương trình đã cho phép dùng ngắt. nếu chương trình em dùng có 1 ngắt thì em có thể bỏ qua lệnh đó.
 
Top