Thông báo

Collapse
No announcement yet.

cần giúp dỡ lich van nien

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

  • cần giúp dỡ lich van nien

    xin chào các cao thủ,minh đang bạp bẹ học vdk mình đang làm mạch đồng hồ mà gạp chút trục trạc cụ thẻ như sau.
    mạch mình mo phổng thì chạy ok nhưng khi ra mạch thực tế thì led bị chớp.mình có thay dổi chỗ minh boi đỏ ở bên dưới nhưng vẫn không đươc.
    //############ngat time_0 dung quet led 7 doan ###############
    void timer0_ISR (void) interrupt 1 //ngat time_0 (tao ngat 2ms)
    { TR0 = 0;
    TH0 = 0xf0; // 2ms
    TL0 = 0x00;
    data595(0xff);data595(0xff);data595(0xff);data595( 0xff);chot();//xoa bong ma
    tam_gio_phut_giay=(gio_phut_giay[quay]);
    tam_thu_ngay_thang_nam=(thu_ngay_thang_nam[quay]);
    if(chon_hien_thi==0){}
    else{//####################
    if(nhap_nhay==0xaa){}
    còn đây là file mo phong va code rat mong nhận được sự chỉ giáo.
    linhk:lich_am_duong.zip
    Y!M: xindungquentoi_hp16
    Mail:
    Sites:

  • #2
    Theo mình thì bạn nên bỏ cặp TR0=0 và TR0=1 đi, vì thông thường các lệnh của bạn chắc là nó không quá được 2ms kia mà nên không có hiện tượng đang thực hiện chuơng trình phục vụ ngắt thì ngắt lại được gọi "void timer0_ISR (void) interrupt 1" vì bạn top count trên timer nên ngắt 2ms của bạn sẽ bị sai thời gian sai đúng bằng thời gian thực hiện các lênh ở sau TR0=0; còn nếu khi bỏ TR0=0 mà không chạy đựoc thì bạn nên tăng thời gian không để 2ms nữa mà là 3 hoặc lớn hơn chẳng hạn và nhớ đừng có để TR0=0, nó sẽ làm sai lệch thời gian tính toán.

    Comment


    • #3
      À mà quên, bạn có thể bỏ "các cao thủ" đựoc không? không lẽ lìu tìu như mình thì không được có ý kiến vào đây à?

      Comment


      • #4
        Mà bạn có thể tham khảo cách mà mình dùng ds18b20 ở đây thực sự thì mình chỉ code theo ý tưởng và mô phỏng chứ chưa làm trên mạch thực nên không biết có gì sai xót không. Còn khoản chạy giờ thì bạn đã dùng chân SQW/OUT đúng như mình mong đợi cái này mình thích, mình không để ý bên trong đó bạn dùng cái ngắt đó thế nào, nhưng mình có ý thế này: Bạn cho chính cái ngắt đó "ngắt 1s tạo bởi SQW/OUT" chạy giờ với cách như sau
        Code:
        //khi chương trình bắt đầu chạy thì đọc thông tin giờ trên RTC sau đó cài đặt vào các biến ss, mm, hh
        void runTimer(void)interrupt // Hàm này được gọi lại sau mỗi giây đựoc kích bởi SQW/OUT
        {
            ss++;
            if(ss>59)
            {
                ss=0;
                mm++;
                if(mm>59)
                {
                    mm=0
                    hh++;
                    if(hh>24)
                    {
                        //Tiến hành đọc lại ngày giớ nếu muốn
                    }
                }
            }
        }
        Đối với nhiệt độ thì bạn có thể dùng hàm sprintf để tạo định dạng chuỗi với đầu vào số thực sau đó phân tích chuỗi đó cho hiển thị trên LED7 đoạn thì ta được 1 chuơng trình Có nhiệt độ thực nhưng lại với LED7 đoạn điều mà bình thường chỉ thực hiện đựoc với LCD.

        Comment


        • #5
          trước hết xin cảm ơn bạn.để mình thử xem sao.
          Y!M: xindungquentoi_hp16
          Mail:
          Sites:

          Comment


          • #6
            minh thử bỏ cặp TR0=0 và TR0=1 đi thì không chạy được mà tăng lên thì chỉ đõ giật hơn thôi chứ vận còn chớp nhìn đau mắt lắm.mình ngĩ là do tần số quét led không dúng.bạn có cách nào không khả thi hơn không?
            Y!M: xindungquentoi_hp16
            Mail:
            Sites:

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X