| Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 | |
|
|
Tác giả | Thông điệp |
---|
huudotb Thành viên đặc biệt
Tổng số bài gửi : 397 Điểm : 1334 Danh tiếng : 63 Ngày tham gia : 30/11/2010 Tuổi : 35 Đến từ : Thái Bình
| Tiêu đề: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Fri Dec 31, 2010 11:10 am | |
| Bác nào rành chỉ mình với .thank | |
|
| |
kitty Điều hành viên
Tổng số bài gửi : 33 Điểm : 75 Danh tiếng : 5 Ngày tham gia : 02/12/2010 Tuổi : 34
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 2:31 pm | |
| Các bác không thấy ai giúp đỡ bạn huudotb à chả nhẽ bên tin sang giúp họ cười cho | |
|
| |
boyauto Thành viên chính thức
Tổng số bài gửi : 41 Điểm : 58 Danh tiếng : 4 Ngày tham gia : 12/12/2010
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 2:57 pm | |
| hôm nay mới có thời gian lên diễn đàn.hôm trước đang viết thì mất điện tiếc qua.mình cũng không rành lắm nhưng mình sẽ giới thiệu chút cho bạn.nếu ai bít thêm thì cùng vào giúp đỡ nạn huudotb nhé. mình sẽ chia ra làm 2 phần: giới thiệu cách tạo thời gian trễ và cách dùng bộ đếm nhé | |
|
| |
boyauto Thành viên chính thức
Tổng số bài gửi : 41 Điểm : 58 Danh tiếng : 4 Ngày tham gia : 12/12/2010
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 3:12 pm | |
| thứ nhất mình xin giới thiệu cách tạo trễ truyền thống và không quan tâm nhiều tới độ chính xác tuyệt đối trong quá trình tạo trế sử dụng asm và c. sử dụng tạo trễ trên asm như sau: vd: mov r0,#200; lap1: mov r1,#100; lap2: djnz r1,lap2; djnz r0,lap1; ret đây là cách tạo trễ và bạn tính toán thời gian vòng lặp và chu kì thì se ra thời gian cần trễ.vd lẹnh mov hoạt động 2 chu kì máy và thạch anh dao động xấp xỉ 1mcros/chu kì. cách tạo trễ bằng c thì bạn sử dụng vòng lặp for để tạo lặp.còn cách tạo thời gian trễ chính xác bằng timer mình sẽ giới thiệu ở phần sau. | |
|
| |
boyauto Thành viên chính thức
Tổng số bài gửi : 41 Điểm : 58 Danh tiếng : 4 Ngày tham gia : 12/12/2010
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 3:33 pm | |
| cách tạo trễ chính xác bằng thời gian sử dụng timer thì bạn phải nhớ được các mode sử dụng trong timer là 16 bit hay 8 bit...và cần thoeif gian trễ bao nhiêu thì quan trọng là giá trị bạn nạp vào 2 thanh ghi tl0 và th0. vd : tạo sóng xung vuông trên chân p0.1 sử dụng timer 0: mov tmod,#01; chọn chế độ 1 16 bit timer 0 main: mov tl0,#0f2h; mov th0,#0fh; cpl p1.0; lcall delay sjmp main delay: set tr0;khoi dong timer 0 laplai:jnb tf0,laplai;kiểm tra tf0 xem dã bằng 0 chưa clr tr0; dừng timer clr tfo; xóa bộ dịnh thời ret tạo trễ trên c sử dụng timer: void delay(unsigned ms) { while (ms--) { TMOD=0x01; //dùng timer 0 chế độ 1 ( 16bit ) TH0=0xfc; TL0=0x18; //hai câu lệnh nạp giá tri đếm TR0=1; // cho phép timer 0 hoạt động while (TF0); //chờ TF0=1(cờ tràn =1 ) TF0=0; //xóa cờ tràn TR0=0; // ngừng Timer } } | |
|
| |
boyauto Thành viên chính thức
Tổng số bài gửi : 41 Điểm : 58 Danh tiếng : 4 Ngày tham gia : 12/12/2010
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 4:00 pm | |
| tiếp theo là cách dùng counter trong 8051: counter thực chất là một bộ đếm các sự kiện từ bên ngoài hay nói cách khác la phát hiện sự thay đổi các tiến hiệu từ bên ngoài...cũng như timer ,counter cũng co ý nghĩa rất quan trọng trong vi điều khiển. counter và timer không khác nhau nhiều.bạn chỉ cần thiết lập bit c/t =1 trong thanh ghi tmod thì nó sẽ là bộ đếm.tương tự c/t=0 thì sẽ là bộ tạo trễ và quan tam tới điều kiện đếm,cho phếp đếm ,chế độ đếm ở các bit m0 và m1: các chân ở cổng p3 được sử dụng bbooj timer0 và timer 1.đó là chân 14 và chân 15 của vi điều khiển p3.4 là đầu vào của bộ đếm 0 , p3.5 là đầu vào của bộ đếm 1. vd:xung đồng hồ cấp tới chân p3.5.chương đếm các xung và hiển thị trạng thái của số đếm tl1 trên cổng p2: org 0000h mov tmod,#01100000b; chọn bộ đếm 1,chế độ 2 c/t=1 mov th1,#0;xóa th1 setb p3.5 lap: setb tr1 ;khởi động bộ đếm kitty: mov a,tl1 ; chuyên ssoos đém vào thanh ghi a mov p2,a; đưa dữ liệu tơi p2 jnb kitty; clr tr1; dừng bộ đếm clr tf1; xóa cờ tf sjmp lap end
Được sửa bởi boyauto ngày Thu Jan 06, 2011 1:06 pm; sửa lần 1. | |
|
| |
boyauto Thành viên chính thức
Tổng số bài gửi : 41 Điểm : 58 Danh tiếng : 4 Ngày tham gia : 12/12/2010
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 4:05 pm | |
| mình cũng không biết nhiều lắm về vi điều khiển chi giúp bạn huudotb như vậy thôi.có gì sai sót các bạn góp ý nha. còn bạn kitty nói "ác bác không thấy ai giúp đỡ bạn huudotb à chả nhẽ bên tin sang giúp họ cười cho" đùng là các bạn có kiến thức nhiều về ngôn ngữ lạp trình nhưng bạn chưa đủ trình để viết một chương trình vi điều khiển đâu .vì bạn nên hiểu một điều rằng muốn lập trình được vdk thi phần cứng là rất quan trọng và phần mềm chỉ là phục vụ cho các ý tưởng của phần cứng. | |
|
| |
huudotb Thành viên đặc biệt
Tổng số bài gửi : 397 Điểm : 1334 Danh tiếng : 63 Ngày tham gia : 30/11/2010 Tuổi : 35 Đến từ : Thái Bình
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 4:11 pm | |
| Rất hay nhưng bạn cái thể chỉ mình cách tính thời gian cụ thể nhanh nhất được không ?
TH0=0xfc; TL0=0x18; | |
|
| |
boyauto Thành viên chính thức
Tổng số bài gửi : 41 Điểm : 58 Danh tiếng : 4 Ngày tham gia : 12/12/2010
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 4:31 pm | |
| cách tính thời gian thì bạn sử dụng ở chế độ nào.ví dụ bạn cần thời gian trễ lớn bạn có thể dùng chế độ 16 bít vcaf giá trị lớn nhất có thể nạp là 65535 và bộ timer cũng như bộ counter đếm ngược lại.vì vậy bạn lấy chu kì 8051 với thich anh xấp xi 12m. vậy chu kì để thục hiện là 1mcogiaay khi đó bạn đổi giá trị nạp vào th0 và tl0 ra cơ số 10 và lấy 65535-số thập phân vừa đổi ra ,rồi nhân với 1,085 thì phải.đó ssex ra giá trị thời gian bạn cần. nếu thấy hay thì bạn thanhs cái đi | |
|
| |
huudotb Thành viên đặc biệt
Tổng số bài gửi : 397 Điểm : 1334 Danh tiếng : 63 Ngày tham gia : 30/11/2010 Tuổi : 35 Đến từ : Thái Bình
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 4:43 pm | |
| rất hay >Thank nhé .Mình chỉ biết qua nhưng nghe vậy cũng hiểu hình như vẫn còn cách tính nữa cơ nhưng giời không nhớ hehe khi nào nhớ sẽ post cho mọi người hehe. Chỉ cưỡi ngựa xem hoa thui nhưng kỳ nào học rùi cũng phải lao vào thui | |
|
| |
boyauto Thành viên chính thức
Tổng số bài gửi : 41 Điểm : 58 Danh tiếng : 4 Ngày tham gia : 12/12/2010
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Mon Jan 03, 2011 4:47 pm | |
| bạn muốn tính nhanh thời gian thì bạn nên sử dụng caculator ngay trên pc co đây.chuyển đổi qua lai giữa hex,binary...rất tiện | |
|
| |
Sunset_Pro Thành viên chính thức
Tổng số bài gửi : 55 Điểm : 97 Danh tiếng : 11 Ngày tham gia : 25/12/2010 Đến từ : UNETI
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Wed Jan 05, 2011 11:34 pm | |
| Tạo trễ bằng timer: ví dụ ta dùng timer 0 chế độ 16 bit:
TMOD=00000001B ; T0 chế độ 1 16 bit TR0=1 -->X (TH0) -->65535 (TL0) -->0 --> TF0 Ví dụ: tạo trễ 50 000 us=50 ms.Giá trị nạp vào hai thanh ghi TH0 và TL0: 65535-X=65535-15535. C1: Ta đổi 15535=11110010110000B=16bit.ta nạp byte cao vào TH0 và byte thấp vào TL0. TH0=00111100B=0B0H TL0=10110000B=3CH C2: Trong lập trình hợp ngữ đã cung cấp sẵn cho chúng ta 2 byte :HIGH VÀ LOW TH0=HIGH(15535) TL0=LOW(15535) C3: Chúng ta dựa vào chế độ quay vòng của thanh ghi.Cách này sẽ trực quan với chúng ta hơn: TH0=HIGH(-50000) TL0=LOW(-50000)
delay: ;50000 us=50 ms MOV TMOD,#01H ;1 CHU KỲ MOV TH0,#HIGH(-50000) ;1 CHU KỲ MOV TL0,#LOW(-50000) ; 1 CHU KỲ SETB TR0 JNB TF0,$ ; ĐỢI CHO TỚI KHI TF=1 CLR TR0 ; PHỤC VỤ CHO CLR TF0 ; LẦN GỌI TRỄ TIẾP THEO RET
Được sửa bởi sunset_sunset ngày Wed Jan 05, 2011 11:47 pm; sửa lần 1. | |
|
| |
Sunset_Pro Thành viên chính thức
Tổng số bài gửi : 55 Điểm : 97 Danh tiếng : 11 Ngày tham gia : 25/12/2010 Đến từ : UNETI
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Wed Jan 05, 2011 11:39 pm | |
| Chế độ T0 8 bit lặp lại: lưu đồ như sau: // thời gian trễ nhỏ, lớn nhất là 256 us TMOD=02H X=TH0 --> TL0=X -->256 -->X TR0=1 TF0=1 | |
|
| |
lucky Thành viên đặc biệt
Tổng số bài gửi : 240 Điểm : 580 Danh tiếng : 17 Ngày tham gia : 06/12/2010 Tuổi : 36 Đến từ : Việt Nam
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Wed Jan 05, 2011 11:42 pm | |
| | |
|
| |
kaka Thành viên chính thức
Tổng số bài gửi : 66 Điểm : 78 Danh tiếng : 10 Ngày tham gia : 16/12/2010 Tuổi : 36 Đến từ : uneti
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Wed Jan 05, 2011 11:53 pm | |
| như vậy chắc au cũng biết rùi bạn a?
| |
|
| |
huudotb Thành viên đặc biệt
Tổng số bài gửi : 397 Điểm : 1334 Danh tiếng : 63 Ngày tham gia : 30/11/2010 Tuổi : 35 Đến từ : Thái Bình
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Thu Jan 06, 2011 12:06 am | |
| - kaka đã viết:
- như vậy chắc au cũng biết rùi bạn a?
Kiến thức phải bắt đầu từ những cái nhỏ nhất mà bạn sunset_sunset viết vậy là cũng hay rùi mong bạn sunset_sunset đóng góp thêm nhé | |
|
| |
star_honxu Thành viên mới
Tổng số bài gửi : 9 Điểm : 9 Danh tiếng : 0 Ngày tham gia : 08/01/2011
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Sat Jan 08, 2011 10:06 am | |
| BẠN SUNSET VIẾT HAY QUÁ.BẠN HỌC Ở ĐÂU MÀ HAY ZẬY.CHỈ CHO AE VỚI.BẠN CÓ THỂ CHO MÌNH ĐỊA CHỈ ĐỂ TỚI HỌC HỎI BẠN ĐƯỢC KHÔNG | |
|
| |
Sunset_Pro Thành viên chính thức
Tổng số bài gửi : 55 Điểm : 97 Danh tiếng : 11 Ngày tham gia : 25/12/2010 Đến từ : UNETI
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 Sat Jan 08, 2011 10:49 am | |
| HỌC HỎI THÌ CÓ NHIỀU CÁCH.CÁCH TỐT NHẤT VÀ CHO DIỄN ĐÀN SÔI NỔI THÌ CỨ LÊN DIỄN ĐÀN THAM LUẬN.OK. [You must be registered and logged in to see this image.] | |
|
| |
Sponsored content
| Tiêu đề: Re: Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 | |
| |
|
| |
| Các cách tạo thời gian trễ và cách dùng bộ đếm trong IC 8051 | |
|