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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 17-02-2006, 09:59 AM   #11
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Nếu sử dụng vòng lặp như thế này với giá trị nạp vào của count1,count2,count3 là a,b,c:
------------------------------
LOOP
DECFSZ COUNT1,1
GOTO LOOP
DECFSZ COUNT2,1
GOTO LOOP
DECFSZ COUNT3,1
GOTO LOOP
RETURN
------------------------------
Khi count1 giảm đến 0,sau đó giảm count2 xuống 1 và quay về LOOP
count1 giảm thêm 1 nên sẽ là 255.Do vậy giá trị a không có ý nghĩa.
Tương tự giá trị b cũng vậy.

THỜI GIAN CHO VÒNG LẶP LOOP NÀY:

Khi con trỏ đang ở dòng DECFSZ COUNT2,1 thì count1 có giá trị 0
Khi con trỏ đang ở dòng DECFSZ COUNT3,1 thì count1,count2 đều có giá trị 0

1) DECFSZ COUNT1,1 mất 1 chu kỳ máy
GOTO LOOP mất 2 chu kỳ máy
Để count1 giảm từ 0 về 1 mất 255*3 chu kỳ máy,giảm từ 1 về 0 mất thêm 1 chu kỳ máy nữa.Bây giờ con trỏ đang ở dòng DECFSZ COUNT2,1
Vậy thời gian đã thực thi là :
(255*3 + 1)*t (t là thời gian thực thi 1 chu kỳ máy)

2) Mỗi lần count2 giảm 1 thì lại quay lại giảm count1
Thời gian giảm count2 cũng tính tương tự
Vậy khi con trỏ ở DECFSZ COUNT3,1 thì thời gian đã thực thi là:
((255*3 + 1)*t)*255 + (255*3 + 1)*t

3) Tương tự tính cho giảm count3 từ c về 0.
Vậy thời gian cho vòng lặp LOOP sẽ là:
{[(255*3 + 1)*t]*255 + (255*3 + 1)*t}*(c-1) + [(c-1)*3 + 1]*t
= {{[(255*3 + 1)]*255 + (255*3 + 1)}*(c-1) + (c-1)*3 + 1}*t
= [(766*255 + 766)*(c-1) + (c-1)*3 + 1]*t
= [196096*(c-1) + (c-1)*3 + 1]*t
= (196099*c - 196098)*t

Với c = 14 ,t = 0,4us thời gian này là (196099*14 - 196098)*0.4us = 1.02s

Chắc không khó khăn gì để tính thời gian lặp kiểu này với n biến count!
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263

thay đổi nội dung bởi: nhh, 17-02-2006 lúc 10:14 AM.
nhh vẫn chưa có mặt trong diễn đàn  
 


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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
CCS C for PIC16F877A nhh Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 405 24-04-2008 12:00 PM


Múi giờ GMT. Hiện tại là 01:05 AM.


Đượ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