Thông báo

Collapse
No announcement yet.

đồng hồ số hiển thị led 7 thanh

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

  • #91
    Nguyên văn bởi dientai Xem bài viết
    Em thanh bác pctcom,nhưng theo kinh nghiệm của bác,bác thấy bản proteus nào là ổn định nhất,em đã thử qua rất nhiều bản nhưng em thấy bản 7.4 là ổn nhất,bác có nghĩ các lỗi có thể là do các phiên bản của proteus không,xin bác chia sẽ kinh nghiệm.thanks bác
    Tôi đang sử dụng bản Protues 7.6 nó chạy khá ổn định.

    Tại VN phần lớn đều sử dụng bản Protues không hợp pháp, đây cũng là 1 trong những lý do tại sao khi sử dụng hay bị lỗi.
    PCT COMPUTER
    (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

    Comment


    • #92
      Nguyên văn bởi dientai Xem bài viết
      Bác pctcom ơi,em đã làm giống y lời bác nói là chuyển mức phần hiển thị,nhưng vẫn không được bác ơi,nó không hiện số 8 nữa nhưng phần set h,p,reset thì không được,đồng hồ thì chạy không đúng,quái lạ,sao bác làm được mà em không làm được nhỉ,bác xem lại giúp em lần cuối.hic
      Bạn đang chạy trong mạch giả lập hay mạnh thật vậy. Trong mạch giả lập đôi khi phần Reset không có tác dụng, tuy nhiên lỗi này cũng không quan trọng nên tôi cũng không quan tâm lắm.

      Riêng phần set Giờ & Phút thì chắc chắn là chạy tốt.
      PCT COMPUTER
      (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

      Comment


      • #93
        Bác pctcom ơi cái set time em cho vào chương trình nhưng lại lỗi và nó không chớp, em nhất SET nhưng nó không cho chỉnh giờ,phút. Bác kiểm tra lai giúp em.
        ;CHUONG TRINH CHINH
        ;===========================================
        $MOD51
        ;======8051=============================

        LED_GIAY BIT P2.0
        LED_C_GIAY BIT P2.1
        LED_PHUT BIT P2.2
        LED_C_PHUT BIT P2.3
        LED_GIO BIT P2.4
        LED_C_GIO BIT P2.5
        LED_DATA EQU P0

        ;======I2C===============================
        SCL BIT P3.0
        SDA BIT P3.1
        MOD_W EQU 11010000B
        MOD_R EQU 11010001B
        ADD_LOW EQU 62H


        ;=========CHUONG TRINH=================

        ORG 000H

        MAIN:
        MOV 30H,#0 ;**
        MOV P2,#0

        ;=================READ===================
        READ:

        READ_SEC:

        LCALL START_DS
        MOV ADD_LOW,#00H
        LCALL READ_DATA
        LCALL STOP_DS
        LCALL HIENTHI_S

        READ_MIN:
        LCALL START_DS
        MOV ADD_LOW,#01H
        LCALL READ_DATA
        LCALL STOP_DS
        LCALL HIENTHI_MIN

        READ_HOU:
        LCALL START_DS
        MOV ADD_LOW,#02H
        LCALL READ_DATA
        LCALL STOP_DS
        LCALL HIENTHI_HOU

        SJMP READ


        ;======================HIEN THI=====================
        HIENTHI_S:
        MOV A,30H ;
        SWAP A ; HIEN THI
        ANL A,#00001111B ; CHUC GIAY
        MOV DPTR,#MALED ;
        MOVC A,@A+DPTR
        MOV LED_DATA,A
        SETB LED_C_GIAY
        LCALL DELAY
        CLR LED_C_GIAY


        MOV A,30H ;
        ANL A,#00001111B ;
        MOV DPTR,#MALED ;
        MOVC A,@A+DPTR ;
        MOV LED_DATA,A ; HIEN THI
        SETB LED_GIAY ; DV GIAY
        LCALL DELAY ;
        CLR LED_GIAY ;
        RET


        HIENTHI_MIN:

        MOV A,30H ;
        SWAP A ; HIEN THI
        ANL A,#00001111B ; CHUC PHUT
        MOV DPTR,#MALED ;
        MOVC A,@A+DPTR
        MOV LED_DATA,A
        SETB LED_C_PHUT
        LCALL DELAY
        CLR LED_C_PHUT


        MOV A,30H ;
        ANL A,#00001111B ;
        MOV DPTR,#MALED ;
        MOVC A,@A+DPTR ;
        MOV LED_DATA,A ; HIEN THI
        SETB LED_PHUT ; DV PHUT
        LCALL DELAY
        CLR LED_PHUT
        RET


        HIENTHI_HOU:

        MOV A,30H ;
        SWAP A ; HIEN THI
        ANL A,#00001111B ; CHUC GIO
        MOV DPTR,#MALED ;
        MOVC A,@A+DPTR
        MOV LED_DATA,A
        SETB LED_C_GIO
        LCALL DELAY
        CLR LED_C_GIO


        MOV A,30H ;
        ANL A,#00001111B ;
        MOV DPTR,#MALED ;
        MOVC A,@A+DPTR ;
        MOV LED_DATA,A ; HIEN THI
        SETB LED_GIO ; DV GIO
        LCALL DELAY
        CLR LED_GIO
        RET

        ;==========================================

        START_DS:
        CLR SCL
        SETB SCL
        SETB SDA
        SETB SCL
        NOP
        CLR SDA
        CLR SCL
        RET

        ;==========================================
        STOP_DS:
        SETB SCL
        CLR SCL
        CLR SDA
        SETB SCL
        NOP
        SETB SDA
        RET

        ;============================================


        READ_DATA:

        MOV A,#MOD_W
        LCALL LOOP_SEND
        SETB SCL
        CLR SCL

        MOV A,ADD_LOW
        LCALL LOOP_SEND
        SETB SCL
        CLR SCL

        LCALL STOP_DS
        LCALL START_DS
        MOV A,#MOD_R
        LCALL LOOP_SEND
        SETB SCL
        CLR SCL

        LCALL LOOP_RECEIVE
        LCALL STOP_DS
        RET

        ;===========================================
        LOOP_SEND:
        MOV R1,#8
        LOOP_S:
        RLC A
        MOV SDA,C
        SETB SCL
        CLR SCL
        DJNZ R1,LOOP_S
        RET

        ;===========================================
        LOOP_RECEIVE:
        MOV R1,#8 ;nhan du lieu 8 bit
        LOOP_R:

        MOV C,SDA
        SETB SCL
        CLR SCL
        RLC A
        DJNZ R1,LOOP_R
        MOV 30H,A
        RET
        ;===========================================
        ;==================================
        SCAN_KEY: ;KIEM TRA PHIM NHAN
        ;==================================
        SW1: ;SET TIME
        JB SW_1,SW2
        INC FLAG_SET
        MOV A,FLAG_SET
        CJNE A,#3,L_SW1

        ;==========
        MOV ADD_LOW,#01H
        MOV DATA_DS,PHUT
        LCALL WRITE_BYTE
        ;==========

        ;==========
        MOV ADD_LOW,#02H
        MOV DATA_DS,GIO
        LCALL WRITE_BYTE
        ;==========
        MOV FLAG_SET,#0

        MALED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

        DELAY:
        MOV R3,#256
        DJNZ R3,$
        RET

        END
        http://www.mediafire.com/?5b4675q0v7v4m9m
        Và cho em hỏi Bác có thể làm thêm nút hẹn giờ phát ra loa được không?
        Em cám ơn nhiều!!!
        Last edited by luantinh; 08-11-2010, 06:49.

        Comment


        • #94
          Nguyên văn bởi luantinh Xem bài viết
          Bác pctcom ơi cái set time em cho vào chương trình nhưng lại lỗi và nó không chớp, em nhất SET nhưng nó không cho chỉnh giờ,phút. Bác kiểm tra lai giúp em.

          http://www.mediafire.com/?5b4675q0v7v4m9m
          Và cho em hỏi Bác có thể làm thêm nút hẹn giờ phát ra loa được không?
          Em cám ơn nhiều!!!
          Bạn vui lòng đọc từ trang đầu, code mẫu hoàn chỉnh có cả phần settime và hiệu ứng nhấp nháy tôi up lên ở trên.

          Các phần mở rộng như hẹn giờ , báo thức thực sự không khó chỉ cần bạn có kiến thức cơ bản về 8951 là sẽ làm được thôi.
          PCT COMPUTER
          (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

          Comment


          • #95
            anh pctcom ơi em lấy đã lấy thử code mẫu có cả phần settime và hiệu ứng nhấp nháy của anh up lên ở trên và cho chạy thử thì có 1 vấn đề là khi set thời gian chỉnh giờ hoặc phút tới số 09,19,29,39,49,59 thì em nhấn tiếp nút UP thì nó lại đứng hoặc cứ hiện lại số 08,18,28...rồi nhấn 1 lúc sau nó lại lên 60,61,62...có lúc đang từ 28 về 00 còn nhấn nút DOWN thì từ 00 nhảy về 38 nhấn tiếp thì nó dừng không biết sai chổ nào bác xem lai đoạn code giùm em cái
            link:http://www.mediafire.com/?rvh4d86c37ypqdo
            Em cảm ơn!!!
            Last edited by luantinh; 09-11-2010, 21:40.

            Comment


            • #96
              anh pctcom ơi em lấy đã lấy thử code mẫu có cả phần settime và hiệu ứng nhấp nháy của anh up lên ở trên và cho chạy thử thì có 1 vấn đề là khi set thời gian chỉnh giờ hoặc phút tới số 09,19,29,39,49,59 thì em nhấn tiếp nút UP thì nó lại đứng hoặc cứ hiện lại số 08,18,28...rồi nhấn 1 lúc sau nó lại lên 60,61,62...có lúc đang từ 28 về 00 còn nhấn nút DOWN thì từ 00 nhảy về 38 nhấn tiếp thì nó dừng không biết sai chổ nào bác xem lai đoạn code giùm em cái
              link:http://www.mediafire.com/?rvh4d86c37ypqdo
              Em cảm ơn!!!

              Comment


              • #97
                Nguyên văn bởi luantinh Xem bài viết
                anh pctcom ơi em lấy đã lấy thử code mẫu có cả phần settime và hiệu ứng nhấp nháy của anh up lên ở trên và cho chạy thử thì có 1 vấn đề là khi set thời gian chỉnh giờ hoặc phút tới số 09,19,29,39,49,59 thì em nhấn tiếp nút UP thì nó lại đứng hoặc cứ hiện lại số 08,18,28...rồi nhấn 1 lúc sau nó lại lên 60,61,62...có lúc đang từ 28 về 00 còn nhấn nút DOWN thì từ 00 nhảy về 38 nhấn tiếp thì nó dừng không biết sai chổ nào bác xem lai đoạn code giùm em cái
                link:http://www.mediafire.com/?rvh4d86c37ypqdo
                Em cảm ơn!!!
                Hi. code này thiếu phần biến đổi BCD <=> HEX

                Bạn sửa và thêm vào code sau

                Phần đọc từ ds1307:

                ;==========================================
                INIT_PORT:
                ;================================================= =
                READ_SEC:
                MOV ADD_LOW,#00h
                LCALL READ_BYTE
                MOV A,DATA_DS
                CALL BCD_HEX
                MOV GIAY,A
                LCALL I2C_STOP
                ;================================================= =READS MINUTES
                MOV ADD_LOW,#01h
                LCALL READ_BYTE
                MOV A,DATA_DS
                CALL BCD_HEX
                MOV PHUT,A
                LCALL I2C_STOP
                ;================================================= =READS HOURS
                MOV ADD_LOW,#02h
                LCALL READ_BYTE
                MOV A,DATA_DS
                CALL BCD_HEX
                MOV GIO,A
                LCALL I2C_STOP
                RET
                ;================================================= =================================

                Phần ghi vào Ds1307:


                ;==========
                MOV A,PHUT
                CALL HEX_BCD
                MOV DATA_DS,A
                MOV ADD_LOW,#01H
                LCALL WRITE_BYTE
                ;==========
                MOV A,GIO
                CALL HEX_BCD
                MOV DATA_DS,A
                MOV ADD_LOW,#02H
                LCALL WRITE_BYTE
                ;==========


                Phần biến đổi:

                ;==========================================
                BCD_HEX:
                ;==========================================
                MOV B,#10H
                DIV AB
                MOV TEMP,B ;CAT HANG DON VI
                MOV B,#10
                MUL AB
                ADD A,TEMP
                ret
                ;==========================================
                HEX_BCD:
                ;==========================================
                MOV B,#10
                DIV AB
                MOV TEMP,B ;CAT HANG DON VI
                MOV B,#10H
                MUL AB
                ADD A,TEMP
                ret
                ;==========================================
                PCT COMPUTER
                (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

                Comment


                • #98
                  Anh pctcom chia sẽ cho ae cái code hoàn chỉnh luôn đi. Anh cứ cập nhật hoài thì em chịu, chẳng biết thêm bớt chỗ nào cả. Em chỉ mới học 8051 thôi nên còn gà lắm ạ.

                  Comment


                  • #99
                    nquoccdt nói đúng rồi đó, anh cho mọi người code hoàn chỉnh luôn đi anh à,em thấy chưa có ai trong toppic này nói đã làm thành công hic! em làm đi làm lại cũng không được kết quả gì . em cũng mới tập tạnh học 8051 thôi không hiểu gì nhiều. Chúc anh và mọi người trên 4rum luôn vui vẻ và hạnh phúc

                    Comment


                    • Nguyên văn bởi pctcom Xem bài viết
                      Hi. code này thiếu phần biến đổi BCD <=> HEX

                      Bạn sửa và thêm vào code sau

                      Phần đọc từ ds1307:

                      ;==========================================
                      INIT_PORT:
                      ;================================================= =
                      READ_SEC:
                      MOV ADD_LOW,#00h
                      LCALL READ_BYTE
                      MOV A,DATA_DS
                      CALL BCD_HEX
                      MOV GIAY,A
                      LCALL I2C_STOP
                      ;================================================= =READS MINUTES
                      MOV ADD_LOW,#01h
                      LCALL READ_BYTE
                      MOV A,DATA_DS
                      CALL BCD_HEX
                      MOV PHUT,A
                      LCALL I2C_STOP
                      ;================================================= =READS HOURS
                      MOV ADD_LOW,#02h
                      LCALL READ_BYTE
                      MOV A,DATA_DS
                      CALL BCD_HEX
                      MOV GIO,A
                      LCALL I2C_STOP
                      RET
                      ;================================================= =================================

                      Phần ghi vào Ds1307:


                      ;==========
                      MOV A,PHUT
                      CALL HEX_BCD
                      MOV DATA_DS,A
                      MOV ADD_LOW,#01H
                      LCALL WRITE_BYTE
                      ;==========
                      MOV A,GIO
                      CALL HEX_BCD
                      MOV DATA_DS,A
                      MOV ADD_LOW,#02H
                      LCALL WRITE_BYTE
                      ;==========


                      Phần biến đổi:

                      ;==========================================
                      BCD_HEX:
                      ;==========================================
                      MOV B,#10H
                      DIV AB
                      MOV TEMP,B ;CAT HANG DON VI
                      MOV B,#10
                      MUL AB
                      ADD A,TEMP
                      ret
                      ;==========================================
                      HEX_BCD:
                      ;==========================================
                      MOV B,#10
                      DIV AB
                      MOV TEMP,B ;CAT HANG DON VI
                      MOV B,#10H
                      MUL AB
                      ADD A,TEMP
                      ret
                      ;==========================================
                      Em có thêm vào rồi nhưng nó báo lỗi "TEMP" khi chạy mô phỏng thì lỗi nặng hơn lúc trước.Hiển thị không đúng giờ như lúc trước.Lúc nào cũng hiển thị 8h http://www.mediafire.com/?lbldsrslinz8n1n và chỉnh giờ được 18h là nó reset lại 00.
                      Anh up code hoàn chỉnh luôn được không?
                      Em cảm ơn.!!
                      Last edited by luantinh; 12-11-2010, 12:09.

                      Comment


                      • Nguyên văn bởi luantinh Xem bài viết
                        Em có thêm vào rồi nhưng nó báo lỗi "TEMP" khi chạy mô phỏng thì lỗi nặng hơn lúc trước.Hiển thị không đúng giờ như lúc trước.Lúc nào cũng hiển thị 8h http://www.mediafire.com/?lbldsrslinz8n1n và chỉnh giờ được 18h là nó reset lại 00.
                        Anh up code hoàn chỉnh luôn được không?
                        Em cảm ơn.!!
                        Hi, code hoàn chỉnh dành cho các bạn tiếp tục nghiên cứu nhé.

                        còn đây tặng các bạn thích mì ăn liền: Dong ho ds1307 co hen gio
                        PCT COMPUTER
                        (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

                        Comment


                        • anh có thể cho em code cua cái mạch này không
                          em cam on

                          Comment


                          • Nguyên văn bởi pctcom Xem bài viết
                            Hi, code hoàn chỉnh dành cho các bạn tiếp tục nghiên cứu nhé.

                            còn đây tặng các bạn thích mì ăn liền: Dong ho ds1307 co hen gio
                            anh có thể cho em code cua cái mạch anh goi len khong em cam on anh

                            Comment


                            • Nguyên văn bởi pctcom Xem bài viết
                              Hi, code hoàn chỉnh dành cho các bạn tiếp tục nghiên cứu nhé.

                              còn đây tặng các bạn thích mì ăn liền: Dong ho ds1307 co hen gio
                              Em có nghiên cứu mà Nếu không nghiên cứu sao em lại thắc về lỗi trong code ASM. Em đã thử bỏ mấy lệnh trên của anh vào đoạn mã là nó vẫn không chạy đúng Settime. Anh giúp em phần này đi.Em cám ơn.
                              http://www.mediafire.com/?lbldsrslinz8n1n

                              Comment


                              • Nguyên văn bởi luantinh Xem bài viết
                                Em có nghiên cứu mà Nếu không nghiên cứu sao em lại thắc về lỗi trong code ASM. Em đã thử bỏ mấy lệnh trên của anh vào đoạn mã là nó vẫn không chạy đúng Settime. Anh giúp em phần này đi.Em cám ơn.
                                http://www.mediafire.com/?lbldsrslinz8n1n
                                Code của bạn đây:
                                ;TIME CLOCK FOR AT89C51 AND 1307
                                ;PROGRAMER :PCT
                                ;PCTCOMPUTER - 0918227077
                                ;=====================================
                                $mod51
                                TEMP DATA 37H
                                XUNG_NHAY DATA 38H ; XUNG 100ms
                                BIEN_NHAY DATA 39H ;0 = SANG TAT CA DEN , 1 = NHAY led TUONG UNG KHI set
                                GIAY DATA 40H
                                PHUT DATA 41H
                                GIO DATA 42H
                                DONVI_GIAY DATA 47H
                                CHUC_GIAY DATA 48H
                                DONVI_PHUT DATA 49H
                                CHUC_PHUT DATA 4AH
                                DONVI_GIO DATA 4BH
                                CHUC_GIO DATA 4CH
                                PHAN_TRAM_GIAY DATA 4DH
                                FLAG_SET DATA 4EH ;0 = KHONG SET , 1 = SET PHUT , 2 = SET GIO
                                LED_GIAY BIT P2.0
                                LED_C_GIAY BIT P2.1
                                LED_PHUT BIT P2.2
                                LED_C_PHUT BIT P2.3
                                LED_GIO BIT P2.4
                                LED_C_GIO BIT P2.5
                                ;--------I2C-------
                                SCL BIT P3.0
                                SDA BIT P3.1
                                SW_1 BIT P3.2
                                SW_2 BIT P3.3
                                SW_3 BIT P3.4
                                LED_DATA EQU P0
                                BYTE_W EQU 11010000B
                                BYTE_R EQU 11010001B
                                ADD_LOW EQU 62H
                                DATA_DS EQU 63H
                                ;=====================================
                                ;=====================================
                                ORG 00H
                                LJMP MAIN
                                ;===========================
                                ;===========================
                                ORG 0BH
                                LJMP NGAT_TIME
                                ;===========================
                                ;===========================
                                ORG 030H
                                MAIN: ;reset tat ca cac bien
                                MOV GIAY,#0
                                MOV PHUT,#0
                                MOV GIO,#0
                                MOV BIEN_NHAY,#0
                                MOV XUNG_NHAY,#0
                                MOV FLAG_SET,#0
                                MOV R0,#0
                                MOV IE,#10001010B
                                MOV TMOD,#11H
                                MOV TL0,#LOW(-9216)
                                MOV TH0,#HIGH(-9216)
                                SETB TR0
                                MOV A,#0FFH
                                MOV LED_DATA,A
                                MOV DPTR,#BANGSO
                                CLR SCL
                                CLR SDA
                                NOP
                                SETB SCL
                                SETB SDA
                                NOP
                                MOV ADD_LOW,#00H
                                MOV DATA_DS,#00H
                                LCALL WRITE_BYTE
                                ;==========

                                ;==========================================
                                LOOP_HIEN_THI: ; chuong trinh chinh chay tai day
                                ;==========================================
                                MOV A,FLAG_SET
                                CJNE A,#0,L_HT
                                CALL INIT_PORT
                                L_HT:
                                LCALL HIEN_THI
                                LCALL SCAN_KEY
                                SJMP LOOP_HIEN_THI
                                ;==========================================


                                INIT_PORT:
                                ;================================================= =READS SECONDS
                                ;=================================================
                                READ_SEC:
                                MOV ADD_LOW,#00h
                                LCALL READ_BYTE
                                MOV A,DATA_DS
                                CALL BCD_HEX
                                MOV GIAY,A
                                LCALL I2C_STOP
                                ;================================================= =READS MINUTES
                                MOV ADD_LOW,#01h
                                LCALL READ_BYTE
                                MOV A,DATA_DS
                                CALL BCD_HEX
                                MOV PHUT,A
                                LCALL I2C_STOP
                                ;================================================= =READS HOURS
                                MOV ADD_LOW,#02h
                                LCALL READ_BYTE
                                MOV A,DATA_DS
                                CALL BCD_HEX
                                MOV GIO,A
                                LCALL I2C_STOP
                                RET
                                ;================================================= =================================
                                ;=====stop I2C communication
                                I2C_Stop:
                                CLR SDA
                                SETB SCL
                                NOP
                                SETB SDA
                                RET
                                ;================================================= =================================
                                ;************************************************* ****
                                ;* WRITE DATA_DS TO DS1307 1 BYTE *
                                ;* INPUT : ADD_LOW *
                                ;* : DATA_DS *
                                ;************************************************* ****
                                WRITE_BYTE:
                                CLR SDA ;start bit
                                CLR SCL
                                MOV A,#BYTE_W ;send control byte
                                LCALL LOOP_BYTE
                                SETB SDA
                                SETB SCL
                                JB SDA,WRITE_BYTE ;loop until busy
                                CLR SCL
                                MOV A,ADD_LOW ;send address low
                                LCALL LOOP_BYTE
                                SETB SDA
                                SETB SCL
                                JB SDA,WRITE_BYTE ;loop until busy
                                CLR SCL
                                MOV A,DATA_DS ;send DATA
                                LCALL LOOP_BYTE
                                SETB SDA
                                SETB SCL
                                JB SDA,WRITE_BYTE ;loop until busy
                                CLR SDA
                                CLR SCL
                                SETB SCL ;stop bit
                                SETB SDA
                                RET
                                ;==========================================
                                BCD_HEX:
                                ;==========================================
                                MOV B,#10H
                                DIV AB
                                MOV TEMP,B ;CAT HANG DON VI
                                MOV B,#10
                                MUL AB
                                ADD A,TEMP
                                ret
                                ;==========================================
                                HEX_BCD:
                                ;==========================================
                                MOV B,#10
                                DIV AB
                                MOV TEMP,B ;CAT HANG DON VI
                                MOV B,#10H
                                MUL AB
                                ADD A,TEMP
                                ret
                                ;==========================================
                                ;************************************************* *****
                                ;* READ DATA FROM DS1307 1 BYTE *
                                ;* INPUT : ADD_HIGH *
                                ;* : ADD_LOW *
                                ;* OUTPUT : DATA_DS *
                                ;************************************************* *****
                                READ_BYTE:
                                CLR SDA ;start bit
                                CLR SCL
                                MOV A,#BYTE_W ;send control byte
                                LCALL LOOP_BYTE
                                SETB SDA
                                SETB SCL
                                JB SDA,READ_BYTE ;loop until busy
                                CLR SCL
                                MOV A,ADD_LOW ;send address low
                                LCALL LOOP_BYTE
                                SETB SDA
                                SETB SCL
                                JB SDA,READ_BYTE ;loop until busy
                                CLR SCL
                                SETB SCL
                                SETB SDA
                                CLR SDA ;start bit
                                CLR SCL
                                MOV A,#BYTE_R ;send control byte
                                LCALL LOOP_BYTE
                                SETB SDA
                                SETB SCL
                                JB SDA,READ_BYTE ;loop until busy
                                CLR SCL
                                LCALL LOOP_READ
                                SETB SDA
                                SETB SCL
                                CLR SCL
                                SETB SCL ;stop bit
                                SETB SDA
                                RET

                                ;************************************************* ***
                                ;* WRITE *
                                ;* INPUT: ACC *
                                ;************************************************* ***
                                LOOP_BYTE:
                                PUSH 02H
                                MOV R2,#08H
                                LOOP_SEND:
                                RLC A
                                MOV SDA,C
                                SETB SCL
                                CLR SCL
                                DJNZ R2,LOOP_SEND
                                POP 02H
                                RET
                                ;************************************************* ****
                                ;* READ *
                                ;* OUTPUT: ACC *
                                ;************************************************* ****
                                LOOP_READ:
                                PUSH 02H
                                MOV R2,#08H
                                LOOP_READ1:
                                SETB SCL
                                MOV C,SDA
                                CLR SCL
                                RLC A
                                DJNZ R2,LOOP_READ1
                                MOV DATA_DS,A
                                POP 02H
                                RET
                                ;==========================================
                                TACHSO: ; tach rieng hang chuc va hang don vi bang cach chia cho 10
                                ;==========================================
                                MOV A,GIAY ;Lan luot chia cac Bien: Giay, Phut, Gio cho 10
                                MOV B,#10 ;de tach phan Don Vi va Hang Chuc ra, de cat rieng vao cac Bien tuong ung.
                                DIV AB ;PHAN NGUYEN trong A, PHAN DU trong B
                                MOV CHUC_GIAY,A ;Luu lai HANG CHUC Giay
                                MOV DONVI_GIAY,B ;luu lai DON VI Giay
                                ;==========
                                MOV A,PHUT
                                MOV B,#10
                                DIV AB
                                MOV CHUC_PHUT,A
                                MOV DONVI_PHUT,B
                                ;==========
                                MOV A,GIO
                                MOV B,#10
                                DIV AB
                                MOV CHUC_GIO,A
                                MOV DONVI_GIO,B
                                RET
                                ;========================================
                                HIEN_THI: ; HIEN THI LED 7 DOAN
                                ;========================================
                                MOV A,FLAG_SET
                                CJNE A,#0,CHOP_NHAY
                                LCALL HIENTHI
                                AJMP THOAT_HIENTHI
                                ;========================================
                                CHOP_NHAY: ; KIEM TRA BIEN NHAY VA FLAG_SET DE TAO HIEU UNG NHAY LED DANG SETING
                                ;=================================
                                MOV A,BIEN_NHAY
                                CJNE A,#0,CHOP_NHAY1
                                LCALL HIENTHI
                                AJMP THOAT_HIENTHI
                                CHOP_NHAY1:
                                LCALL NHAY
                                JMP CHOP_NHAY
                                THOAT_HIENTHI:
                                RET
                                ;=================================
                                HIENTHI:
                                ;=================================
                                LCALL HIENTHI_S
                                LCALL HIENTHI_P
                                LCALL HIENTHI_G
                                RET
                                ;=================================
                                NHAY:
                                ;=================================
                                MOV A,FLAG_SET
                                CJNE A,#1,KT1
                                LCALL HIENTHI_S
                                LCALL HIENTHI_G
                                KT1:
                                MOV A,FLAG_SET
                                CJNE A,#2,THOAT_N
                                LCALL HIENTHI_S
                                LCALL HIENTHI_P
                                THOAT_N:
                                RET
                                ;=================================
                                HIENTHI_S:
                                ;=================================
                                ;hien thi hang don vi cua Giay
                                MOV A,DONVI_GIAY
                                MOVC A,@A+DPTR
                                MOV LED_DATA,A
                                CLR LED_GIAY
                                LCALL DL
                                SETB LED_GIAY
                                ;==========
                                MOV A,CHUC_GIAY ;hien thi hang chuc cua Giay
                                MOVC A,@A+DPTR
                                MOV LED_DATA,A
                                CLR LED_C_GIAY
                                LCALL DL
                                SETB LED_C_GIAY
                                RET
                                ;=================================
                                HIENTHI_P:
                                ;=================================
                                MOV A,DONVI_PHUT ;hien thi hang don vi cua Phut
                                MOVC A,@A+DPTR
                                MOV LED_DATA,A
                                CLR LED_PHUT
                                LCALL DL
                                SETB LED_PHUT
                                ;============
                                MOV A,CHUC_PHUT ;hien thi hang chuc cua Phut
                                MOVC A,@A+DPTR
                                MOV LED_DATA,A
                                CLR LED_C_PHUT
                                LCALL DL
                                SETB LED_C_PHUT
                                RET
                                ;=================================
                                HIENTHI_G:
                                ;=================================
                                MOV A,DONVI_GIO ;hien thi hang don vi cua gio
                                MOVC A,@A+DPTR
                                MOV LED_DATA,A
                                CLR LED_GIO
                                LCALL DL
                                SETB LED_GIO
                                ;============
                                MOV A,CHUC_GIO ;hien thi hang chuc cua Gio
                                MOVC A,@A+DPTR
                                MOV LED_DATA,A
                                CLR LED_C_GIO
                                LCALL DL
                                SETB LED_C_GIO
                                RET
                                ;=================================
                                NGAT_TIME:
                                ;=================================
                                INC XUNG_NHAY
                                INC PHAN_TRAM_GIAY ;DAT TIMER CHAY 1/100 GIAY
                                MOV TL0,#LOW(-9216)
                                MOV TH0,#HIGH(-9216)
                                SETB TR0
                                ;===============
                                PUSH ACC
                                PUSH PSW ;Thanh ghi trang thái chuong trình
                                ;==========
                                MOV A,XUNG_NHAY ;TAO XUNG NHAP NHAY = 1/4 GIAY
                                CJNE A,#25,TIME1
                                MOV XUNG_NHAY,#0
                                INC BIEN_NHAY
                                MOV A,BIEN_NHAY
                                CJNE A,#3,TIME1
                                MOV BIEN_NHAY,#0
                                ;==========
                                TIME1:
                                MOV A,PHAN_TRAM_GIAY ;Kiem tra bien PHAN_TRAM_GIAY - Thoat khoi ngat Time0 neu khong =
                                CJNE A,#100,THOAT_NGAT_TIME
                                MOV PHAN_TRAM_GIAY,#0 ;Neu = 100 thì set bien nay = 0
                                ;===============
                                THOAT_NGAT_TIME:
                                LCALL TACHSO
                                POP PSW
                                POP ACC
                                RETI
                                ;==================================
                                SCAN_KEY: ;KIEM TRA PHIM NHAN
                                ;==================================
                                SW1: ;SET TIME
                                JB SW_1,SW2
                                INC FLAG_SET
                                MOV A,FLAG_SET
                                CJNE A,#3,L_SW1
                                ;==========
                                MOV A,PHUT
                                CALL HEX_BCD
                                MOV DATA_DS,A
                                MOV ADD_LOW,#01H
                                LCALL WRITE_BYTE
                                ;==========
                                MOV A,GIO
                                CALL HEX_BCD
                                MOV DATA_DS,A
                                MOV ADD_LOW,#02H
                                LCALL WRITE_BYTE

                                MOV FLAG_SET,#0
                                L_SW1:
                                LCALL DL1
                                LCALL DL1
                                LCALL DL1
                                LCALL DL1
                                LJMP NOKEY
                                ;===============
                                SW2: ;SET_MIN
                                JB SW_2,SW3
                                MOV A,FLAG_SET
                                CJNE A,#0,SW20
                                LJMP NOKEY
                                SW20:
                                MOV A,FLAG_SET
                                CJNE A,#1,TANG_GIO ;
                                JB SW_2,SW3
                                ;===============
                                TANG_PHUT:
                                INC PHUT ;Roi tang Bien phut them 1
                                MOV A,PHUT
                                CJNE A,#60,L_SW2 ;
                                MOV PHUT,#0 ;Neu = 60 thì set bien nay = 0
                                L_SW2:
                                LCALL DL1
                                LCALL DL1
                                LJMP SW2
                                ;===============
                                TANG_GIO: ;SET HOUR
                                JB SW_2,SW3
                                MOV A,FLAG_SET
                                CJNE A,#2,SW3
                                JB SW_2,SW3
                                INC GIO ;Roi tang Bien Gio them 1
                                MOV A,GIO
                                CJNE A,#24,L_TANG_GIO ;Bien gio = 60? - Thoat khoi ngat Time0 neu khong =
                                MOV GIO,#0
                                L_TANG_GIO:
                                LCALL DL1
                                LCALL DL1
                                LJMP TANG_GIO
                                ;==============================
                                SW3: ;DANG NHAN SW3?
                                JB SW_3,NOKEY ;KHONG NHAN SW2? KIEM TRA SW3
                                MOV A,FLAG_SET
                                CJNE A,#0,SW30
                                LJMP NOKEY
                                SW30:
                                MOV A,FLAG_SET ;DANG NHAN SW2. KIEM TRA CHE DO CHINH GIO HAY CHINH PHUT.
                                CJNE A,#1,GIAM_GIO ;
                                JB SW_3,NOKEY
                                ;===============
                                GIAM_PHUT:
                                DEC PHUT ;Roi tang Bien phut them 1
                                MOV A,PHUT
                                CJNE A,#-1,L_SW3 ;Bien Phut = -1? - Thoat khoi ngat Time0 neu khong =
                                MOV PHUT,#59 ;Neu = -1 thì set bien nay = 60
                                L_SW3:
                                LCALL DL1
                                LCALL DL1
                                LJMP SW3
                                ;===============
                                GIAM_GIO:
                                ;===============
                                JB SW_3,NOKEY
                                MOV A,FLAG_SET
                                CJNE A,#2,NOKEY

                                LCALL HIENTHI
                                JB SW_3,NOKEY
                                DEC GIO ;Roi Giam Bien Gio them 1
                                MOV A,GIO
                                CJNE A,#-1,L_GIAM_GIO ;Bien gio = -1? - Thoat khoi ngat Time0 neu khong =
                                MOV GIO,#23
                                L_GIAM_GIO:
                                LCALL DL1
                                LCALL DL1
                                LJMP GIAM_GIO
                                ;===============
                                NOKEY:
                                RET
                                ;=================================
                                DL:
                                ;=================================
                                MOV R7,#200
                                DJNZ R7,$
                                RET
                                ;==================
                                DL1:
                                ;==================
                                PUSH 00H
                                PUSH 01H
                                MOV R1,#20O
                                DEL:
                                LCALL HIEN_THI
                                LCALL HIEN_THI
                                LCALL HIEN_THI
                                MOV R0,#250
                                DJNZ R0,$
                                DJNZ R1,DEL
                                POP 01H
                                POP 00H
                                RET
                                ;===================
                                DELAY_1MS:
                                ;===================
                                MOV R7,#200
                                DL_1MS_1:
                                MOV R6,#200
                                DJNZ R6,$
                                DJNZ R7,DL_1MS_1
                                RET
                                ;====================
                                DELAY:
                                ;====================
                                NOP
                                NOP
                                NOP
                                NOP
                                NOP
                                NOP
                                NOP
                                NOP
                                RET
                                ;=================================
                                BANGSO:
                                ;=================================
                                DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
                                RET
                                END
                                PCT COMPUTER
                                (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X