Chào mừng các bạn đến với forum lớp DTVT_K7A CNTT Thái Nguyên
Bạn hãy "Đăng nhập" để tham gia cùng chúng tôi

Join the forum, it's quick and easy

Chào mừng các bạn đến với forum lớp DTVT_K7A CNTT Thái Nguyên
Bạn hãy "Đăng nhập" để tham gia cùng chúng tôi

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Top posters

banmun08 (721)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
Toanlt_GP (368)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
tiendientu343 (344)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
hany_mitu (281)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
TranTuyen_BG (275)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
Capkama (271)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
VDuy_NĐ (260)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
Minh (257)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
tieuthantien_3t (173)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 
Hangvt_gc (171)
[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_left[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar[HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Bar_right 

Latest topics

» Game dân gian thuần việt 2014 ra mắt phiên bả
by banmun08 Fri May 02, 2014 5:38 pm

» Ứng dụng Bóng đá trực tuyến - Chia sẻ mới dàn
by meocontt89 Fri May 02, 2014 3:44 pm

» Bài bào cáo mạch bấm chuông trò chơi
by tuyenbk2009 Sun Apr 27, 2014 10:48 pm

» Tư vấn học công nghệ thông tin - lập trình
by wyuru Thu Apr 24, 2014 5:17 pm

» Hero Chibi - Khai mở máy chủ S10 - SonGoKu
by Poligon121 Wed Apr 16, 2014 2:15 pm

» mạch đông hồ vạn niên sư dụng DS1307
by ttd2506 Mon Apr 14, 2014 9:45 pm

» Game8 phát 1000 GiftCode mừng máy chủ mới của
by Poligon121 Mon Apr 14, 2014 3:07 pm

» HIỆP KHÁCH 4U.COM OPEN GAME HỒI 10H00 SÁNG
by anata Fri Apr 11, 2014 1:34 pm

» Đua tốp Mu Thần Tài nhận iphone iphone 5s
by muthantai Sun Apr 06, 2014 12:26 pm

» Hiệp khách 4u.com OPEN game hồi 10h00 chủ nh
by anata Sat Apr 05, 2014 7:48 am


2 posters

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Empty [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    Bài gửi by tiendientu343 Thu Aug 11, 2011 7:53 am

    Để các bạn dễ dàng lập trình trong một số ứng dụng nên trước khi post các ứng dụng mình sẽ viết trước một bài về " Ngắt và timer"
    Trong này mình sẽ hướng dẫn các bạn cách dùng và các ứng dụng trong các ví dụ cụ thể để các bạn tiện theo dõi .
    Đây chỉ là Bài mang tính chất hướng dẫn cho người mới bắt đầu, Có gì anh em chém nhè nhẹ thôi nhé!
    // ok do sáng nay có việc bận nên bây giờ mới viết tiếp đc
    1. Giới thiệu về Timer( Bộ Định thời)
    Chắc anh em đã biết Timer đc sử dụng rất rộng rãi trong các ứng dụng đo lường và điều khiển. có thể hiểu thế này timer giống như một bộ đếm.
    Timer n bit như là bộ đếm dc tạo bởi n flip-flop mắc nối tiếp với nhau
    .Đầu vào của bộ timer chính là đầu vào của flip-fop đầu tiên, đầu ra báo tràn thể hiện trạng thái tràn( Đã đếm hết của nó)
    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER H33DL16%20mach
    Tùy vào ứng dụng các ứng dụng khác nhau mà đầu vào nguồn xung clock như hình trên có thể lấy từ dao động nội(Bên trong vi điều khiển hoắc nguồn dao động Thạch anh bên ngoài
    Nói chung mình sẽ nói về con cụ thể là AT89S52 có 3 bộ đinh thời 16 bít trong đó 2 bộ định thời timer 0 và timer 1 có 4 chế độ hoạt động. timer 2 có 3 chế độ
    hoạt động.....
    Nói chung là các anh em đều biết cả ( lý thuyết mà)
    //===============Ứng dụng của timer -============\
    Nói chung mình chỉ thấy mấy ứng dụng như sau thôi:
    --Dùng để định khoảng thời gian(hẹn giờ chính là e nó quy định)
    --Đếm sự kiện xảy ra bên ngoài vi điều khiển(lập trình đếm sự kiện)
    --Thiết lập tốc độ baud cho cổng nối tiếp (Cổng Com đó) dùng cho truyền thông giữa vi điều khiển và máy tính
    //============Bắt đầu nha=====================
    Để bắt Đầu lập trình đc chúng ta hãy xem qua các thanh ghi của các bộ định thời nhé! nơi chứa các thao tác điều khiển
    *============Nhớ nhé- Tất cả là ngôn ngữ lập trình C=====
    *Các thanh ghi của timer0 và timer 1
    Đầu tiên sẽ là thanh ghi chế độ định thời (TMOD)
    Thanh ghi TMOD chứa 2 nhóm(mỗi nhóm 4 bít) dùng để đặt chế độ cho timer 0 và timer 1


    GATE1

    C/#T1

    M1

    M0

    GATE0

    C/#T0

    M1

    M0



    4 BÍT Cao là dùng để thiết lập cho timer1 bốn bít thấp thiets lập cho timer 0
    Nói chung 2 nhóm như nhau:
    Minh xin sơ qua thế này
    Bit GATE1 là bít mở cổng cho timer1 .Nếu đặt bít này bằng `1 thì timer1 chỉ chạy khi chân INT1 ở mức cao.Nếu đặt bằng 0 thì hoạt động của timer1 ko bị ảnh hưởng bởi chân (INT1).ok
    như vậy bây giờ các bạn sẽ để là GATE1=0;
    bÍT C/T1 : chon chế độ nếu bằng 1 (C) đếm sự kiện(lấy xung từ bên ngoài qua chaanTx t1,t2,t0)
    Bằng 0 (t) dùng để định khoảng thời gian(lấy xung trong từ vdk)
    M1M0 chon chế độ : 00 : timer13bit
    01: timer16 bít
    10: 8 bít tự nạp lại
    11 chế độ 3 tách timer.
    Tương tự với 4 bít thấp của thanh ghi TMOD dùng cho timer 0 cũng tương tự
    // Thanh ghi điều khiển timer TCON



    TF1

    TR1

    TF0

    TR0

    IT1

    IE1

    IT0

    IE0



    Trong đóbít TF1 cờ báo tràn của timer1 khi bộ dếm bị tràn,đc xóa bởi phần mềm hoặc phần cứng khi VDK chỉ đến chương trình phục vụ ngắt
    --Bít TR1 thiết lập timer1 bắt đầu chạy
    IT1 : cờ ngắt do timer1
    IE1: cờ ngắt do ngắt ngoài 1
    Tương tự với timer 0 nha.
    //===Các thanh ghi của bộ timer2===========
    hehe Nói chung cái này mình đọc trong datasheet chưa hiểu nên ko post anh e nào hiểu thì bổ xung nha!Hix
    //====Cách tính toán Giá trị nạp vào timer thì các bạn xem lại sách ====
    mình ko đề cập nữa vì nó cũng ko khó.Nếu bạn nào có nhu cầu cung cấp sách tham khảo thì pm cho mình nhé! Mình sẽ cho mượn và photo(Cấu trúc và lập trình cho VĐK 8051 Nguyễn Tăng Cường
    //=========Bây giờ bắt đâu làm việc nhé----------
    Ví dụ 1:Tạo xung có tần số 10khz trên chân P2.0.Biết thạch anh dùng là 12Mhz.
    Các bạn xem xét nhé!
    10khz => T=0.1ms
    Suy ra số cần nạp là 65536-0,1ms/1us=65536-100=65436;
    bạn có thẻ dùng timer1 và timer 0 thoải mái.ok
    Code:

    // chuong trinh tao xung tren chan P2.0
    // HAND IN HAND
    //dtvtk7a---cntt Thai Nguyen
    #include<reg52.h>
    sbit xung = P2^0;
    void main(void)
    {
    TMOD=0x01;// chon timer 0 16 bit
    TH0=65436/256; // nap gia tri *** ban dau cho timer
    TL0=65436%256;
    TR0=1;// chay timer0
    while(!TF0); kiem tra khi co bao bị tran thi xoa
    TF0=0;
    TR0=0;
    xung=~xung; // va dao muc tin hieu o chan P2.0
    }
    // Đó chỉ là một ứng dụng tao xung
    Bây giờ chúng ta sẽ dùng timer để tạo trễ.
    Thông thường thì các bạn hay dùng vòng lặp for để tạo trễ. Nhưng điều đó đôi khi không chính xác cho những ứng dụng yêu cầu độ chính xác thời gian sai lệch nhỏ.
    khi đó timer là giải pháp đc coi là chính xác hơn cả.
    //chúng ta bắt đầu nhé!
    Timer của 8051 tối đa 16 bít ở chế dộ 1 do đó có thể đếm tối đa là
    2^16(65536) giá trị đếm. Nếu như dùng tần số thạch anh 12M gì thời gian để timer tràn là 65536x1us=65,536ms;
    Do đó các bạn nếu muốn tạo trễ dài hơn thì phải dunf thêm 1 vòng for ben ngoài.
    // hãy làm ví dụ sau
    Hãy tạo trễ 1 phút
    như vậy mình sẽ lấy thời gian timer tràn là 50ms tương ứng giá trị đếm là 50000
    vậy giá trị nạp ban đầu vào timer sẽ là 65536-50000=15536;
    và mình sẽ cho vòng for chạy 20 lần như code ở dưới
    Code:

    void tre_1_phut(void)
    {
    int i;
    for(i=0;i<20;i++)
      {
      TMOD=0x01;// timer 0 che do 1(16 bit)
      TH0=15536/256;
      TL0=15536%256;
      TR0=1;
      while(!TF0);
        TF0=0;
        TR0=0;
      }
    }
    ==-----------ứng dụng đếm sự kiện ở các chaanT0,T1--------//
    Cũng như tại trễ ta dùng tần số thạch anh. khi đếm sự kiện
    ta chỉ cần đặt bít C/T lên mức 1 là ok.
    khi đó bộ đếm sẽ nhận xung ngoài từ chân (T0 hoặc T1) vói từng timer.
    xem code duoi dAY
    Code:

    #include<stdio.h>
    #includ<reg52.h>
    sbit xung = P3^4; // chan T0
    void main(void)
        {
        while(1)
        {
        TMOD=0x05;// 00000101 *** su kien timer 0
        TH0=65530/256;
        TL0=65530%256;
        xung=1;
        TR0=1;
        while(TF0=1)     
        P2=TL0;
        TF0=0;
        TR0=0;
        }
        }
    // *** O CHAN T0 VA HIENT HI RA P2
    Đây là mô phỏng và code



    =================================================
    Về ngắt hôm nay chúng ta sẽ xét ngắt của 8051
    để sử dụng ngắt
    Attachments
    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Attachmentdemxung.zip
    demxung
    You don't have permission to download attachments.
    (16 Kb) Downloaded 20 times


    Được sửa bởi langtuvotinh ngày Sun Nov 06, 2011 10:42 am; sửa lần 16.
    Minh
    Minh
    Trung Úy
    Trung Úy


    Gender : Nam Số bài : 257
    Birthday : 22/01/1990
    Họ và tên : Lê Đức Minh Đến từ : ĐTVT.K7A
    Ước mơ : Làm việc tại Tập Đoàn Viettel.
    Status : Tu dưỡng đạo đức, học văn hóa, tập sống cho tốt hơn.

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Empty Re: [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    Bài gửi by Minh Thu Aug 11, 2011 11:31 am

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER 84933 ủa chưa thấy j` cả, post lên cho anh em tham khảo đi langtu. Hè đang rỗi.
    Minh
    Minh
    Trung Úy
    Trung Úy


    Gender : Nam Số bài : 257
    Birthday : 22/01/1990
    Họ và tên : Lê Đức Minh Đến từ : ĐTVT.K7A
    Ước mơ : Làm việc tại Tập Đoàn Viettel.
    Status : Tu dưỡng đạo đức, học văn hóa, tập sống cho tốt hơn.

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Empty Re: [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    Bài gửi by Minh Fri Aug 12, 2011 1:33 am

    Trong loại bài này thì cần khai báo thư viện như thế nào vậy Tiến:
    //Thế này là đúng ko và đủ chưa?
    Code:


    #include < AT89X52.H >
    hoặc
    #include "AT89X52.H"
    #include < stdio.h >
    Hôm nào ông dậy cho anh e vài cái cơ bản về C đi, sau này lên phòng thực hành kiểu j` chả đụng tới C, Chíp AVR nữa chứ, éc éc.
    Code:
    // chuong trinh tao xung tren chan P2.0
    // HAND IN HAND
    //dtvtk7a---cntt Thai Nguyen
    #include
    sbit xung = P2^0;
    void main(void)
    {
    TMOD=0x01;// chon timer 0 16 bit
    TH0=65436/256; // nap gia tri dem ban dau cho timer
    TL0=65436%6;
    TR0=1;// chay timer0
    while(!TF0); kiem tra khi co bao bị tran thi xoa
    TF0=0;
    TR0=0;
    xung=~xung; // va dao muc tin hieu o chan P2.0
    }
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Empty Re: [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    Bài gửi by tiendientu343 Fri Aug 12, 2011 1:51 am

    Trong bài này hả?
    Code:


    //Thế này là đúng ko và đủ chưa?
    #include < AT89X52.H >
    hoặc
    #include "AT89X52.H"
    #include < stdio.h >


    ok. như vậy là đủ rồi mà.Nói chung có vài cách dùng thư viện cho 8051.
    Có thể là "AT89x52.h" có thể là"REG52.h>
    hoặc có thể là "Tien52.h" cái này do người dùng tự định nghĩa,bạn thử tạo xem.Copy mã nguồn của thư viện cũ sau đó đổi tên là ok .
    Minh
    Minh
    Trung Úy
    Trung Úy


    Gender : Nam Số bài : 257
    Birthday : 22/01/1990
    Họ và tên : Lê Đức Minh Đến từ : ĐTVT.K7A
    Ước mơ : Làm việc tại Tập Đoàn Viettel.
    Status : Tu dưỡng đạo đức, học văn hóa, tập sống cho tốt hơn.

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Empty Re: [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    Bài gửi by Minh Fri Aug 12, 2011 2:08 am

    Oh oh, thanks Tiến. It is very helpful for me.
    English is really difficult but I have chosen it as my second language since it is very helpful to me in my job.
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Empty Re: [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    Bài gửi by tiendientu343 Fri Aug 12, 2011 3:04 am

    oh yeah! Good luck! Success!
    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER 182414

    Sponsored content


    [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG  NGẮT VÀ TIMER Empty Re: [HƯỚNG DẪN KỸ THUẬT]ỨNG DỤNG NGẮT VÀ TIMER

    Bài gửi by Sponsored content


      Hôm nay: Wed May 08, 2024 2:57 am