Thông báo

Collapse
No announcement yet.

Xin giúp em với các bác ơi

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xin giúp em với các bác ơi

    EM MỚI VÀO NGHỀ NÊN CHƯA HIỂU RÕ MONG CÁC BÁC CHỈ GIÚP EM ! EM XIN CHÂN THÀNH CẢM ƠN Ạ!
    EM CÓ BÀI TOÁN LÀ HẸN GIỜ MỚI 3 KHOẢNG THỜI GIAN DÙNG NGẮT TIMER !
    NHẤN NÚT CHUYỂN SANG CHẾ ĐỘ 1
    NHẤN TIẾP CHUYỂN SANG CHẾ ĐỘ 2
    NHẤN TIẾP CHUYỂN SANG CHẾ ĐỘ 3
    ĐÂY LAD CODE EM LẬP TRÌNH MONG CÁC BÁC GIÚP EM VỚI NHÁ. EM KHÔNG BIẾT SAO NO KHÔNG CHẠY CÁC BÁC GIÚP EM VỚI
    #include <REGX51.H>
    #define timer P3_0
    #define timer1 P1_0
    #define timer2 P1_1
    #define timer3 P1_2
    unsigned int i,time_now,hengio,time_off,kt_hengio,count,sec;
    void setup_timer(void)
    {
    TMOD = 0x01 ;
    TH0 = 0x3C ;
    TL0 = 0xAF ;
    IE = 0x82 ;
    TF0 = 0;
    TR0 = 1;
    }
    void T0_ISR (void) interrupt 1
    {
    TR0 = 0;
    TH0 = 0x3C;
    TL0 = 0xAF ;
    count++;
    if (count==20)
    {
    count = 0;
    sec++;
    }
    TF0 = 0;
    TR0 = 1;
    }
    void setup_gio(void)
    {
    if (kt_hengio==1)
    {
    if(sec>time_off)
    {
    timer1=timer2=timer=1;
    hengio = 0;

    }
    }

    if(timer)
    {
    while(timer)
    kt_hengio=1;
    sec=0;
    hengio++ ;
    if(hengio> 3)
    {hengio = 0;}
    switch(hengio)
    {
    case 0: {kt_hengio=0;
    timer1=1; timer2=1; timer3=1; break;}
    case 1: {time_off=1800; // 30 minutes
    timer1=0; timer2=1; timer3=1; break;}
    case 2: {time_off=3600; // 1 hour
    timer1=1; timer2=0; timer3=1; break;}
    case 3: {time_off=7200; // 2 hours
    timer1=1; timer2=1; timer3=0; break;}
    }

    }
    }
    void main(void)
    {
    hengio=0;
    count = 0;
    timer1=timer2=timer3= 1;
    setup_timer();
    P1= 0xff;
    P3= 0x00;
    while(1)
    {
    setup_gio();
    }
    }
    Last edited by tudoluong87; 11-05-2011, 10:46.

  • #2
    Nguyên văn bởi tudoluong87 Xem bài viết
    EM MỚI VÀO NGHỀ NÊN CHƯA HIỂU RÕ MONG CÁC BÁC CHỈ GIÚP EM ! EM XIN CHÂN THÀNH CẢM ƠN Ạ!
    EM CÓ BÀI TOÁN LÀ HẸN GIỜ MỚI 3 KHOẢNG THỜI GIAN DÙNG NGẮT TIMER !
    NHẤN NÚT CHUYỂN SANG CHẾ ĐỘ 1
    NHẤN TIẾP CHUYỂN SANG CHẾ ĐỘ 2
    NHẤN TIẾP CHUYỂN SANG CHẾ ĐỘ 3
    EM GỦI CẢ SƠ ĐỒ VÀ CODE EM LẬP TRÌNH MONG CÁC BÁC GIÚP EM VỚI NHÁ. EM KHÔNG BIẾT SAO NO KHÔNG CHẠY CÁC BÁC GIÚP EM VỚI
    http://www.mediafire.com/?i48vm8cjydf8bom
    thêm :interrupt 1 vào chỗ khai báo ngắt
    void T0_ISR (void) interrupt 1
    |

    Comment


    • #3
      cảm ơn bac nhá

      Comment


      • #4
        Nguyên văn bởi tudoluong87 Xem bài viết
        EM MỚI VÀO NGHỀ NÊN CHƯA HIỂU RÕ MONG CÁC BÁC CHỈ GIÚP EM ! EM XIN CHÂN THÀNH CẢM ƠN Ạ!
        EM CÓ BÀI TOÁN LÀ HẸN GIỜ MỚI 3 KHOẢNG THỜI GIAN DÙNG NGẮT TIMER !
        NHẤN NÚT CHUYỂN SANG CHẾ ĐỘ 1
        NHẤN TIẾP CHUYỂN SANG CHẾ ĐỘ 2
        NHẤN TIẾP CHUYỂN SANG CHẾ ĐỘ 3
        ĐÂY LAD CODE EM LẬP TRÌNH MONG CÁC BÁC GIÚP EM VỚI NHÁ. EM KHÔNG BIẾT SAO NO KHÔNG CHẠY CÁC BÁC GIÚP EM VỚI
        #include <REGX51.H>
        #define timer P3_0
        #define timer1 P1_0
        #define timer2 P1_1
        #define timer3 P1_2
        unsigned int i,time_now,hengio,time_off,kt_hengio,count,sec;
        void setup_timer(void)
        {
        TMOD = 0x01 ;
        TH0 = 0x3C ;
        TL0 = 0xAF ;
        IE = 0x82 ;
        TF0 = 0;
        TR0 = 1;
        }
        void T0_ISR (void)
        {
        TR0 = 0;
        TH0 = 0x3C;
        TL0 = 0xAF ;
        count++;
        if (count==20)
        {
        count = 0;
        sec++;
        }
        TF0 = 0;
        TR0 = 1;
        }

        void setup_gio(void)
        {
        if (kt_hengio==1)
        {
        if(sec>time_off)
        {
        timer1=timer2=timer=1;
        hengio = 0;

        }
        }

        if(timer)
        {
        while(timer)
        kt_hengio=1;
        sec=0;
        hengio++ ;
        if(hengio> 3)
        {hengio = 0;}
        switch(hengio)
        {
        case 0: {kt_hengio=0;
        timer1=1; timer2=1; timer3=1; break;}
        case 1: {time_off=1800; // 30 minutes
        timer1=0; timer2=1; timer3=1; break;}
        case 2: {time_off=3600; // 1 hour
        timer1=1; timer2=0; timer3=1; break;}
        case 3: {time_off=7200; // 2 hours
        timer1=1; timer2=1; timer3=0; break;}
        }

        }
        }
        void main(void)
        {
        hengio=0;
        count = 0;
        timer1=timer2=timer3= 1;
        setup_timer();
        P1= 0xff;
        P3= 0x00;
        while(1)
        {
        setup_gio();
        }
        }
        Mình không rành về C lắm, nhưng hình như vấn đề nẳm ở chỗ mình tô đỏ ấy. Các cao thủ C xem thử dùm mình phải chỗ đó count = 20 thì Timer0 mới được chạy lại không vậy?
        thêm :interrupt 1 vào chỗ khai báo ngắt
        void T0_ISR (void) interrupt 1
        Chõ này hình như bạn tdm có sự nhầm lẫn hay sao ấy, trong chương trình chỉ sử dụng timer0 thôi chứ đâu có timer1 hả bạn.
        Công ty TNHH Tự Động Hóa Đạt Lân
        32/36, Ông Ích Khiêm, F14, Q11
        ĐT: 08.3974 7308 - 0937.197.001
        email:
        Webite:

        Comment


        • #5
          Nguyên văn bởi vothanhlong Xem bài viết
          Mình không rành về C lắm, nhưng hình như vấn đề nẳm ở chỗ mình tô đỏ ấy. Các cao thủ C xem thử dùm mình phải chỗ đó count = 20 thì Timer0 mới được chạy lại không vậy?

          Chõ này hình như bạn tdm có sự nhầm lẫn hay sao ấy, trong chương trình chỉ sử dụng timer0 thôi chứ đâu có timer1 hả bạn.
          chỗ tô đỏ không có gì sai.
          count = 20//để kéo dài thời gian[khi ngắt sảy ra 20 lần thì biến sec mới được tăng]

          |

          Comment


          • #6
            Nguyên văn bởi tdm Xem bài viết
            chỗ tô đỏ không có gì sai.
            count = 20//để kéo dài thời gian[khi ngắt sảy ra 20 lần thì biến sec mới được tăng]

            Thanks tdm nhé, bạn có thể giải thích cụ thể đoạn chương trình đó cho mình không, mình gà về C lắm.
            Công ty TNHH Tự Động Hóa Đạt Lân
            32/36, Ông Ích Khiêm, F14, Q11
            ĐT: 08.3974 7308 - 0937.197.001
            email:
            Webite:

            Comment

            Về tác giả

            Collapse

            tudoluong87 Tìm hiểu thêm về tudoluong87

            Bài viết mới nhất

            Collapse

            Đang tải...
            X