Thông báo

Collapse
No announcement yet.

các pro xem giúp em cái ctrình đồng hồ này sai chỗ nào?

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

  • các pro xem giúp em cái ctrình đồng hồ này sai chỗ nào?

    em làm mạch rùi chỉ chạy dc nhưng ko chỉnh giờ dc, các pác coi giúp em sai ót chỗ nào?
    tiện thể cho em hỏi: em chia giờ thành ra DV_giờ và chục_giờ, sau đó tẵng lên, khi muốn cập nhật giá trị đó lại vào RTc thì phãi làm cách nào?( kết ho8p5 lại 2 ô nhớ ch-giờ và dv-gio lại 1 ô nhớ rùi mới cập nhật dc phại ko? cách cập nhật như thế nào? ch8ãng lẽ phãi nạp lại giá trì đóa cho RTC như ctrình RTC_ nap hả?
    Attached Files

  • #2
    Đúng vậy.
    Sau khi chỉnh xong bạn cứ đưa nó vào ô nhớ h của RTC.
    Thế là xong.Rất đơn giản

    Comment


    • #3
      em làm mạch rùi chỉ chạy dc nhưng ko chỉnh giờ dc, các pác coi giúp em sai ót chỗ nào?
      tiện thể cho em hỏi: em chia giờ thành ra DV_giờ và chục_giờ, sau đó tẵng lên, khi muốn cập nhật giá trị đó lại vào RTc thì phãi làm cách nào?( kết ho8p5 lại 2 ô nhớ ch-giờ và dv-gio lại 1 ô nhớ rùi mới cập nhật dc phại ko? cách cập nhật như thế nào? ch8ãng lẽ phãi nạp lại giá trì đóa cho RTC như ctrình RTC_ nap hả?
      Tắch 2 số ra làm giờ và chục giờ, khi muốn ghép lại thì lấy chục giờ nhân 10 rồi cộng với giờ.
      VD:
      mov a,chuc_gio
      mov b,#10
      mul ab
      add a,gio
      Sau đó lưu lại vào ô nhớ h của RTC là được.

      Comment


      • #4
        Nguyên văn bởi big_sky Xem bài viết
        Tắch 2 số ra làm giờ và chục giờ, khi muốn ghép lại thì lấy chục giờ nhân 10 rồi cộng với giờ.
        VD:
        mov a,chuc_gio
        mov b,#10
        mul ab
        add a,gio
        Sau đó lưu lại vào ô nhớ h của RTC là được.
        lưu lại vào ô nhớ h của RTC là như thế này phải ko:
        mov a,20h;20h chứa giá trị của phút sau khi chỉnh
        mov r0,#02h;địa chỉ của ô nhớ phút
        movx @r0,a;lưu giá tị của a vào ô nhớ 02h của rtc

        tương tự đối với giờ nhưng em làm như vậy nhưng ko bỉ6t1 chương trình bị tranh chấp hay lỗi chổ nào mà khi nhấn nút chỉnh giờ thì led chỉ hiện thị toàn số 5 ko ah( liệu có phải em lưu các giá trị giờ phút giây , giá trị chỉnh giờ vào các ô nhớ từ 10h-30h có trùng với địa chỉ thanh ghi hay ô nhớ đẵ biệt nào ko, em đã kiêm tra nhưng ko thấy)
        còn nữa ngoài cách kết hợp chục giò và dv_h bằng cách nhân 10 thì có thể dùng cách quay trái 1 nidle ô nhớ chứa ch_h rùi cộng với dv_h như em làm có sai Ko?

        em hỏi cái này chắc hơi gà nhưng em quên mất rồi:" tại sao em thấy p0 và p2 thường người ta hay nối với đêi5 trở thanh còn p1 và p3 lại ko có"?
        mong các huynh giải thích giúp

        Comment


        • #5
          Nguyên văn bởi TrucQuanTu Xem bài viết
          em hỏi cái này chắc hơi gà nhưng em quên mất rồi:" tại sao em thấy p0 và p2 thường người ta hay nối với đêi5 trở thanh còn p1 và p3 lại ko có"?
          mong các huynh giải thích giúp
          Chỉ có P0 mới cần điện trở thanh kéo lên nguồn VCC bởi vì P0 là open-collector. Các port còn lại thì không cần.

          Comment


          • #6
            Cách lưu như vậy là đúng rồi.
            Có lẻ chương trình cập nhật giá trị chỉnh của bạn vào các ô nhớ chưa được tốt.
            Nên lưu ý là không nên dùng bit nhớ và ô nhớ trùng tên nhau.
            VD:20h có thể là bít nhớ cũng có thể là ô nhớ.
            Bạn nên dùng các ô nhớ bắt đầu từ 30h.
            Chúc may mắn!

            Comment


            • #7
              lưu lại vào ô nhớ h của RTC là như thế này phải ko:
              mov a,20h;20h chứa giá trị của phút sau khi chỉnh
              mov r0,#02h;địa chỉ của ô nhớ phút
              movx @r0,a;lưu giá tị của a vào ô nhớ 02h của rtc

              tương tự đối với giờ nhưng em làm như vậy nhưng ko bỉ6t1 chương trình bị tranh chấp hay lỗi chổ nào mà khi nhấn nút chỉnh giờ thì led chỉ hiện thị toàn số 5 ko ah( liệu có phải em lưu các giá trị giờ phút giây , giá trị chỉnh giờ vào các ô nhớ từ 10h-30h có trùng với địa chỉ thanh ghi hay ô nhớ đẵ biệt nào ko, em đã kiêm tra nhưng ko thấy)
              còn nữa ngoài cách kết hợp chục giò và dv_h bằng cách nhân 10 thì có thể dùng cách quay trái 1 nidle ô nhớ chứa ch_h rùi cộng với dv_h như em làm có sai Ko?

              em hỏi cái này chắc hơi gà nhưng em quên mất rồi:" tại sao em thấy p0 và p2 thường người ta hay nối với đêi5 trở thanh còn p1 và p3 lại ko có"?
              mong các huynh giải thích giúp
              khi bạn nhấn nút chỉnh giờ mà hiện số 5 tức là nó đọc được ở đâu đó giá trị 0FFH =255 cho nên nó hiển thị số 5.
              Cách cộng dồn giờ và chục giờ thì có nhiều cách. Nhưng còn tùy theo cách bạn sử dụng ô nhớ theo mode nào. Nếu dùng theo mode bin (số nhị phân) thì bạn làm theo cách trên. Nếu dùng theo mode số thập phân nén thì bạn chỉ cần dịch trái 4 lần rồi cộng vào ô nhớ giờ là được.
              P0 nối trở kéo lên, còn P2 thì không có cũng không sao.
              Từ 10H đến 30H là 32 ô nhớ, bạn lưu gì mà cần dữ vậy?
              Nếu bạn dùng ô nhớ 10H thì coi chừng chương trình chạy bậy vì vùng Stack sẽ chồng lên ô nhớ này khi bạn gọi vài chương trình con. Nếu muốn khắc phục thì cách 1 là đầu chương trình bạn thêm vào lệnh MOV SP,#5FH (khi vùng nhớ từ 60H-7FH của bạn chưa sử dụng). Cách 2 là bạn dời vùng nhớ mà bạn lưu tạm dữ liệu từ 10H - 30H lên Khoảng bắt đầu là 30H là được. Ví dụ từ 30H - 50H.

              Comment


              • #8
                Nguyên văn bởi big_sky Xem bài viết
                khi bạn nhấn nút chỉnh giờ mà hiện số 5 tức là nó đọc được ở đâu đó giá trị 0FFH =255 cho nên nó hiển thị số 5.
                Cách cộng dồn giờ và chục giờ thì có nhiều cách. Nhưng còn tùy theo cách bạn sử dụng ô nhớ theo mode nào. Nếu dùng theo mode bin (số nhị phân) thì bạn làm theo cách trên. Nếu dùng theo mode số thập phân nén thì bạn chỉ cần dịch trái 4 lần rồi cộng vào ô nhớ giờ là được.
                P0 nối trở kéo lên, còn P2 thì không có cũng không sao.
                Từ 10H đến 30H là 32 ô nhớ, bạn lưu gì mà cần dữ vậy?
                Nếu bạn dùng ô nhớ 10H thì coi chừng chương trình chạy bậy vì vùng Stack sẽ chồng lên ô nhớ này khi bạn gọi vài chương trình con. Nếu muốn khắc phục thì cách 1 là đầu chương trình bạn thêm vào lệnh MOV SP,#5FH (khi vùng nhớ từ 60H-7FH của bạn chưa sử dụng). Cách 2 là bạn dời vùng nhớ mà bạn lưu tạm dữ liệu từ 10H - 30H lên Khoảng bắt đầu là 30H là được. Ví dụ từ 30H - 50H.
                chỉ hiện hai số 5 ở đơn vị giờ và đơn vị phút thôi
                mình lưu 10h-24h là ô nhớ tạm giá trị h,p,giây, thứ.. của rtc sau đó đem chia ra và hiễn thị ra led, 25h-30h là giá trị khi chinh giờ
                cảm ơn bạn

                Comment


                • #9
                  Hiển thi đơn vị giờ, phút là số 5 vì khi lấy 255 chia cho 10 được 25 và dư 5. Số 5 thì hiển thị được, còn số 25 thì không nên bạn không thấy.
                  Bạn nên sử dụng ô nhớ từ 30h-7FH.

                  Comment


                  • #10
                    chương trình đã chạy dc rùi, cảm ơn các pác, nhân tiện ai chỉ mình cách vẽ 8led 7 đoạn anot chung bằng ocard nha. mới vẽ xong nhưng dây nhộ chằng chịt lại sữ dụng dây nối riêng ở ngoài nữa nhìn xấu quắc. thấy người ta vẽ nhìn đẹp mà sao tui vẽ xấu thế ko biết, ai có cách gì chỉ dùm nha
                    nhân tiện ai có tài liệu vẽ ocard bằng tiếng mẹ đẻ cho tui xin lun, tiếng anh hơi pro để dành nói chuyện với người nước ngoài , chứ để đọc tài liệu thì mất hết chữ
                    cảm ơn tất cả các pác

                    Comment

                    Về tác giả

                    Collapse

                    TrucQuanTu Sinh ra trong gia đình gia thế - dế tha Tìm hiểu thêm về TrucQuanTu

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

                    Collapse

                    Đang tải...
                    X