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

            • bqviet
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi bqviet
              Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
              06-12-2025, 17:17
            • nguyendinhvan
              Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
              bởi nguyendinhvan
              Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
              05-12-2025, 19:59
            • afrendly
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi afrendly
              Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
              04-12-2025, 01:27
            • nick22
              Trả lời cho Máy điện châm ?
              bởi nick22
              Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
              01-12-2025, 13:23
            Đang tải...
            X