diễn đàn điện tử

Nội quy | Recent posts | chủ đề RSS | T́m kiếm | Đăng kư | Đăng nhập

timeout trong 89C51/89C52


Post new topic Reply to topic EDAboard.com Forum Index -> vi điều khiển -> timeout trong 89C51/89C52
Tác giả Thông báo
bán dẫn



Tham gia ngày: 04 tháng 4 năm 2003
Bài viết: 294
Đă giúp: 3
Địa điểm: Pháp


Post 27 Tháng Tư 2005 18:02

timeout trong 89C51/89C52


Tôi đang được giao một bài tập cho một chương tŕnh AT89C51 cho dự án cửa tự động.

Tôi đang phải đối mặt với một vấn đề: TIMEOUT

nếu các cảm biến phát hiện người bên ngoài có sẵn, nó sẽ mở cửa và chờ đợi cảm biến bên trong phát hiện người dân có sẵn. Sau 20s, nếu không có tín hiệu được phát hiện, nó sẽ tự động đóng cửa và trở về đầu của chương tŕnh (chờ đợi tín hiệu từ các cửa bên ngoài.

với AT89C51, tôi là lập tŕnh C nhưng tôi không biết làm thế nào để thiết kế TIMEOUT thuật toán với AT89C51 (20 giây).

Ai đó có thể giới thiệu cho tôi giải pháp?
Trở về đầu trang
IanP



Tham gia: ngày 05 tháng 10 năm 2004
Bài viết: 6.490
Đă giúp: 1542
Địa điểm: West Coast


Post 28 tháng 4 năm 2005 01:25

Re: timeout trong 89C51/89C52


Sử dụng TIMER1 trong Mode1 (16-bit truy cập) để đếm (Fclock/12): FFFFh.
Nếu tinh thể là 11.0952MHz ngắt sẽ xảy ra mỗi (11095200/12) / 65536 = 14,108 .. lần thứ hai.
Tạo biến TimeH và TimeL.
Tăng TimeHTimeL mọi gián đoạn. Để đạt đến 20 giây, bạn sẽ cần ≈ 282 ngắt và sẽ rời khỏi TimeHTimeL = 01 1A (h) = 0282 (d).
Bây giờ bạn có thể thiết lập lại 20s truy cập (TimeHTimeL) và thực hiện bất cứ điều ǵ nên được thực hiện sau khi 20s ..

Chúc may mắn ..
Trở về đầu trang
mrcube_ns



Tham gia ngày: 10 Tháng 4 năm 2002
Bài viết: 429
Đă giúp: 11
Địa điểm: Dark side of the Moon


Post 28 tháng 4 năm 2005 21:17

Re: timeout trong 89C51/89C52


IanP là hoàn toàn đúng,

nhưng, tôi khuyên bạn nên sử dụng 12MHz tinh thể, do đó, một chu kỳ là 1us.

Sau đó, bạn sử dụng bộ đếm thời gian là 1 giờ 16-bit và làm 50ms hẹn giờ (T1H = 0x3C T1L = 0xAF), v́ vậy bạn có 20 số lần trong một 20sec thứ hai => để giàu bạn cần đếm chính xác 400.


Lời chúc mừng tốt đẹp nhất,


Mr.Cube
Trở về đầu trang
Google
AdSense
Google Adsense




Post 28 tháng 4 năm 2005 21:17

Quảng cáo




Trở về đầu trang
Anh hùng



Tham gia: ngày 06 tháng 3 năm 2002
Bài viết: 145
Đă giúp: 2


Post 29 Tháng Tư 2005 03:51

Re: timeout trong 89C51/89C52


Chào,

Đối với khoảng thời gian dài bạn cần sotware truy cập.

Sử dụng phần cứng 16-bit truy cập cho các thế hệ intterupt định kỳ.

Trong gián đoạn dịch vụ thường lệ đặt biến CNT_FLAG.

unsigned char CNT_FLAG;
unsigned long cnt;
unsigned char TIMEOUT;
unsigned char TIMEOUT_ENABLED;

# define TIMEOUT_THRESHOLD 1024

void interrupt_routine ()
(
CNT_FLAG = 1;
)

void main ()
(
init ();

trong khi (1) (
...
cnt_process ();
ngủ (); / / go to sleep mode
)
)

void cnt_process ()
(
nếu (CNT_FLAG) (
CNT_FLAG = 0;
nếu (TIMEOUT_ENABLED) (
if (cnt <TIMEOUT_THRESHOLD)
cnt ;
TIMEOUT = (cnt == TIMEOUT_THRESHOLD);
)
)
)

Khi cnt đạt TIMEOUT_THRESHOLD TIMEOUT sẽ được thiết lập.

Giải pháp khác là cnt tăng trong ngắt thường lệ

void interrupt_routine ()
(
nếu (TIMEOUT_ENABLED) (
if (cnt <TIMEOUT_THRESHOLD)
cnt ;
TIMEOUT = (cnt == TIMEOUT_THRESHOLD);
)
)
Trở về đầu trang
Phiên bản tiếng Ả Rập Tiếng Bulgaria phiên bản Catalan phiên bản Séc phiên bản Đan Mạch phiên bản Tiếng Đức phiên bản Hy Lạp phiên bản Bản tiếng Anh Phiên bản tiếng Tây Ban Nha Phiên bản tiếng Phần Lan Tiếng Pháp phiên bản Phiên bản tiếng Hin-ddi Croatia phiên bản Indonesia phiên bản Phiên bản tiếng Ư Phiên bản tiếng Do Thái Phiên bản tiếng Nhật Hàn Quốc phiên bản Lithuanian phiên bản Latvia phiên bản Phiên bản tiếng Hà Lan Na Uy phiên bản Phiên bản tiếng Ba Lan Phiên bản tiếng Bồ Đào Nha Rumani phiên bản Phiên bản tiếng Nga Tiếng Slovak phiên bản Tiếng Slovenia phiên bản Serbia phiên bản Thụy Điển phiên bản Tagalog phiên bản Phiên bản tiếng Ukraina Bản tiếng Việt Trung Quốc phiên bản
Post new topic Reply to topic EDAboard.com Forum Index -> vi điều khiển -> timeout trong 89C51/89C52
Trang 1 / 1

subj

text

Múi giờ GMT 1 Hour
Tương tự các chủ đề:
Máy tính sử dụng 89C51 hoặc 89C52 (6)
sự khác biệt trong Atmel 89c51 và 89C52 (9)
timeout lỗi trong vb (1)
C mă (Tesitng một thời gian chờ phần cứng) (7)
SIM700D: Timeout lần của AT lệnh? (3)
89C52 Serial Interface (3)
interfacing 89C52 với PC (5)
89C52 desing vấn đề (4)
lcd mă 89C52 (5)
Truy vấn liên quan đến 89C52 .... (2)


Lạm dụng | | Quản trị | | Moderators | | Hỗ trợ chúng tôi | | sitemap
đề RSS