Thông báo

Collapse
No announcement yet.

Cứu em với !!!!!!

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

  • Cứu em với !!!!!!

    các pro giúp em với em đang phai làm đề tài ic thời gian thực dùng 98c51 với DS1307 hiển thị trên LCD code viết bằng ASM sắp phải báo cáo rồi các bác GIÚP EM VỚI

  • #2
    B chịu khó tìm đi , trên diễn đàn này không thiếu đâu .

    Comment


    • #3
      MÌNH CÓ CODE C, nếu bạn cần thì pm mình nhé
      Nguyễn Huy Biên - 01649 802 694
      gmail :

      Comment


      • #4
        àh đây rồi
        ;****************************
        ;****************************
        ;****************************
        ;****************************
        ;***cutitcom@gmail.com******
        ;****************************
        ;**********KTDT1*************



        SELC bit p3.2 ;button (set time)
        UP bit p3.3 ;select

        RS bit P3.7
        RW bit P3.6
        E bit P3.5
        BF bit P2.7
        DBx equ P2 ;DB7-DB0

        SDA BIT P1.1 ; BIT DATA
        SCL BIT P1.0 ; XUNG CLOCK

        byte_r DATA 30H ;
        SALVE_ADD DATA 31H ; DIA CHI BYTE
        BYTE_W DATA 32H ; du lieu ghi

        SEC DATA 33H ;GIAY
        MINU DATA 34H ;PHUT
        HOUR DATA 35H ;GIO
        DAY DATA 36H ;THU
        DATE DATA 37H ;NGAY
        MONTH DATA 38H ;THANG
        YEAR DATA 39H ;NAM

        MENU DATA 3AH ;TRANG THAI CHON SETUP
        COUNT9 DATA 3BH ;DEM MOD9
        MOD6 DATA 3CH
        MOD3 DATA 3DH
        MOD9 DATA 3EH
        mod2 data 3fh
        MOD1 DATA 40H
        ADDREG DATA 41H ;DIA CHI THANH GHI TIME


        setup_flag bit 09h ;co bao ban setup
        FLAG BIT 08H ;ENABLE TIMEDATA

        org 00h
        LJMP MAIN ;LENH DAI 3BYTE

        LJMP EXISR0 ;VECTOR NGAT 0
        ORG 13H
        LJMP EXISR1 ;VECTOR NGAT 1

        ORG 020H

        DB ' TIME ','DATE '

        ORG 100H

        MAIN:
        SETB EA ;CHO PHEP NGAT TAON CUC
        SETB EX0 ;CHO PHEP NGAT NGOAI
        SETB EX1
        SETB IT0 ;NGAT NGOAI SUON AM
        SETB IT1
        SETB PX1 ;UU TIEN MUC CAO NGAT INT1
        SETB PX0
        MOV R3,#10
        MOV R4,#10
        MOV R5,#10
        LCALL DELAY ;DELAY=100MS
        LCALL INIT_LCD
        LCALL INIT_RTC

        lap:
        MOV R3,#250
        MOV R4,#250
        MOV R5,#1
        LCALL DELAY

        LCALL INIT_LCD
        LCALL DOC_TIME
        LCALL LOAD_TIME

        SETTING:JB setup_flag,SETTING

        sJMP lap

        ;-----khoi tao TIME cho ds1037---------
        INIT_RTC:
        MOV R3,#1
        MOV R4,#1
        MOV R5,#1
        LCALL DELAY

        LCALL START_BIT

        MOV BYTE_W,#11010000B ;GHI SLAVE
        LCALL SEND_BYTE


        LCALL RECV_ACK

        MOV BYTE_W,#06H ;ADD_REG=06H
        LCALL SEND_BYTE
        LCALL RECV_ACK

        MOV BYTE_W,#10H ;SET nam
        LCALL SEND_BYTE
        LCALL RECV_ACK

        LCALL STOP_BIT

        RET

        EXISR0: ;( VECTOR NGAT 0)
        MOV R3,#100
        MOV R4,#10
        MOV R5,#10
        LCALL DELAY
        SETB SETUP_FLAG ;BAT CO BAO DANG SETUP
        MOV A,MENU
        CJNE A,#9,NOT9
        MOV A,#0
        JMP EQUA0
        NOT9: INC A ;TANG MENU LEN 1
        EQUA0:MOV MENU,A
        MOV R6,A ;CAT MENU VAO R6

        CJNE A,#0,SET_HOUR10
        CLR SETUP_FLAG ;NEU MENU BANG 0 THI THOAT SETUP
        JMP END_SET
        SET_HOUR10:
        CJNE A,#1,SET_HOUR
        MOV A,#08H ;SET HOUR10
        JMP NHAYPOINT
        SET_HOUR:
        CJNE A,#2,SET_MINU10
        MOV A,#09H ;SET HOUR DON VI
        JMP NHAYPOINT
        SET_MINU10:
        CJNE A,#3,SET_MINU ;NHAY DEN SET MINU DON VI
        MOV A,#0BH ;SET MINU10
        JMP NHAYPOINT
        SET_MINU:
        CJNE A,#4,SET_DATE10 ;NHAY DEN SET DATE10
        MOV A,#0CH ;SET MINU DON VI
        JMP NHAYPOINT
        SET_DATE10:
        CJNE A,#5,SET_DATE
        MOV A,#48H ;SET DATE10
        JMP NHAYPOINT
        SET_DATE:
        CJNE A,#6,SET_MONTH10
        MOV A,#49H ;SET DATE DON VI
        JMP NHAYPOINT
        SET_MONTH10:
        CJNE A,#7,SET_MONTH
        MOV A,#4BH ;SET MONTH10
        JMP NHAYPOINT
        SET_MONTH:
        CJNE A,#8,SET_YEAR
        MOV A,#4CH ;SET MONTH DON VI
        JMP NHAYPOINT
        SET_YEAR:
        CJNE A,#9,MENURESET
        MOV A,#4FH ;SET YEAR DON VI
        JMP NHAYPOINT
        MENURESET:
        MOV MENU,#0
        NHAYPOINT: ;NHAY CON TRO TAI VI TRI SETUP
        LCALL TOADO
        LCALL NHAPNHAY
        JMP END_SETUP
        END_SET:
        LCALL NOT_NHAPNHAY
        END_SETUP:
        RETI

        EXISR1:
        MOV R3,#100
        MOV R4,#10
        MOV R5,#10
        LCALL DELAY
        JB SETUP_FLAG,YES_SETTING
        JMP END_ISR1
        YES_SETTING:
        MOV A,MOD9
        CJNE A,#9,INC_MOD9 ;TAO BO DEM TU 0-9
        MOV MOD9,#0
        JMP END_MOD9
        INC_MOD9:
        INC MOD9
        END_MOD9:

        MOV A,MOD6
        CJNE A,#6,INC_MOD6 ;TAO BO DEM TU 0-6
        MOV MOD6,#0
        JMP END_MOD6
        INC_MOD6:
        INC MOD6
        END_MOD6:

        MOV A,MOD3
        CJNE A,#3,INC_MOD3 ;TAO BO DEM TU 0-3
        MOV MOD3,#0
        JMP END_MOD3
        INC_MOD3:
        INC MOD3
        END_MOD3:

        MOV A,MOD2
        CJNE A,#2,INC_MOD2 ;TAO BO DEM TU 0-2
        MOV MOD2,#0
        JMP END_MOD2
        INC_MOD2:
        INC MOD2
        END_MOD2:

        MOV A,MOD1
        CJNE A,#1,INC_MOD1 ;TAO BO DEM TU 0-2
        MOV MOD1,#0
        JMP END_MOD1
        INC_MOD1:
        INC MOD1
        END_MOD1:

        MOV A,R6
        CJNE A,#0,UP_HOUR10
        ;NEU BANG 0
        JMP END_ISR1
        UP_HOUR10:
        CJNE A,#1,UP_HOUR
        MOV A,MOD2
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#2 ;DIA CHI THANH GHI HOUR
        MOV A,MOD2
        LCALL ROTARE
        ANL HOUR,#11001111B ;GIU NGUYEN PHAN DON VI
        ORL A,HOUR
        MOV R1,A
        LCALL SET_TIME ;UP HOUR10
        MOV A,#08H
        LCALL TOADO
        JMP END_ISR1
        UP_HOUR:
        CJNE A,#2,UP_MINU10
        MOV A,MOD9
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#2 ;DIA CHI THANH GHI HOUR
        MOV A,MOD9
        ANL HOUR,#11110000B ;GIU NGUYEN HANG CHUC
        ORL A,HOUR
        MOV R1,A
        LCALL SET_TIME ;UP HOUR DON VI
        MOV A,#09H
        LCALL TOADO
        JMP END_ISR1

        UP_MINU10:
        CJNE A,#3,UP_MINU ;NHAY DEN SET MINU DON VI
        MOV A,MOD6
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#1 ;DIA CHI THANH GHI MINU
        MOV A,MOD6
        LCALL ROTARE
        ANL MINU,#10001111B ;GIU NGUYEN PHAN DON VI
        ORL A,MINU
        MOV R1,A
        LCALL SET_TIME ;UP MINU10
        MOV A,#0BH
        LCALL TOADO
        JMP END_ISR1
        UP_MINU:
        CJNE A,#4,UP_DATE10 ;NHAY DEN UP DATE10
        MOV A,MOD9
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#1 ;DIA CHI THANH GHI MINU
        MOV A,MOD9
        ANL MINU,#11110000B ;GIU NGUYEN PHAN DON VI
        ORL A,MINU
        MOV R1,A
        LCALL SET_TIME ;UP MINU DON VI
        MOV A,#0CH
        LCALL TOADO
        JMP END_ISR1
        UP_DATE10:
        CJNE A,#5,UP_DATE
        MOV A,MOD3
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#4 ;DIA CHI THANH GHI MINU
        MOV A,MOD3
        LCALL ROTARE
        ANL DATE,#11001111B ;GIU NGUYEN PHAN DON VI
        ORL A,DATE
        MOV R1,A
        LCALL SET_TIME ;UP DATE10
        MOV A,#48H
        LCALL TOADO
        JMP END_ISR1
        UP_DATE:
        CJNE A,#6,UP_MONTH10
        MOV A,MOD9
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#4 ;DIA CHI THANH GHI HOUR
        MOV A,MOD9
        ANL DATE,#11110000B ;GIU NGUYEN HANG CHUC
        ORL A,DATE
        MOV R1,A
        LCALL SET_TIME ;UP DATE DON VI
        MOV A,#49H
        LCALL TOADO
        JMP END_ISR1
        UP_MONTH10:
        CJNE A,#7,UP_MONTH
        MOV A,MOD1
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#5 ;DIA CHI THANH GHI MINU
        MOV A,MOD1
        LCALL ROTARE
        ANL MONTH,#11101111B ;GIU NGUYEN PHAN DON VI
        ORL A,MONTH
        MOV R1,A
        LCALL SET_TIME ;UP MONTH10
        MOV A,#4BH
        LCALL TOADO
        JMP END_ISR1
        UP_MONTH:
        CJNE A,#8,UP_YEAR
        MOV A,MOD9
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#5 ;DIA CHI THANH GHI HOUR
        MOV A,MOD9
        ANL MONTH,#11110000B ;GIU NGUYEN HANG CHUC
        ORL A,MONTH
        MOV R1,A
        LCALL SET_TIME ;UP MONTH DON VI
        MOV A,#4CH
        LCALL TOADO
        JMP END_ISR1
        UP_YEAR:
        CJNE A,#9,END_ISR1
        MOV A,MOD9
        ADD A,#30H
        LCALL W_CHAR ;;GHI KI TU MOI RA LCD
        MOV ADDREG,#6 ;DIA CHI THANH GHI HOUR
        MOV A,MOD9
        ANL YEAR,#11110000B ;GIU NGUYEN HANG CHUC
        ORL A,YEAR
        MOV R1,A
        LCALL SET_TIME ;UP DATE DON VI
        MOV A,#4FH
        LCALL TOADO
        JMP END_ISR1


        END_ISR1:
        RETI


        ;----DOC TIME TU SLAVE ----------------------------

        DOC_TIME:

        MOV R3,#1
        MOV R4,#1
        MOV R5,#1
        ; LCALL DELAY

        ;----doan Nay ghi vao add_reg(dia chi reg can doc)
        LCALL START_BIT
        MOV BYTE_W,#11010000B ;GHI SLAVE
        LCALL SEND_BYTE
        LCALL RECV_ACK
        MOV BYTE_W,#00H ;ADD_REG=0H
        LCALL SEND_BYTE
        LCALL RECV_ACK
        LCALL STOP_BIT

        ;----bat dau gui lenh doc

        LCALL START_BIT
        MOV BYTE_W,#11010001B ;DOC SLAVE,R/W=1
        LCALL SEND_BYTE
        LCALL RECV_ACK

        MOV R2,#7
        MOV R1,#SEC
        DOC_TIEP:
        lcall loop
        LCALL DOC_BYTE
        LCALL SEND_ACK
        MOV @R1,BYTE_R
        INC R1
        DJNZ R2,DOC_TIEP ;doc 7 byte dau

        LCALL DOC_BYTE ;doc byte thu 8
        LCALL NOT_ACK
        LCALL STOP_BIT

        RET
        ;-----------------lenh ds1037----------------

        SET_TIME: ;--set 1 thanh ghi time--
        ;(NOI DUNG THANH GHI CHUA TRONG R1,DIA CHI TIME RESGISTOR TRONG ADDREG)
        LCALL START_BIT
        MOV BYTE_W,#11010000B ;GHI SLAVE
        LCALL SEND_BYTE
        LCALL RECV_ACK
        MOV BYTE_W,ADDREG ;ADD_REG (DIA CHI THANH GHI CAN SET)
        LCALL SEND_BYTE
        LCALL RECV_ACK
        MOV BYTE_W,R1
        LCALL SEND_BYTE
        LCALL RECV_ACK
        LCALL STOP_BIT
        RET


        SEND_BYTE:
        MOV R0,#8 ;SO LAN LAP
        CLR SCL
        MOV A,BYTE_W
        XUAT_BIT:
        RLC A ;XUAT BIT
        MOV SDA,C
        SETB SCL
        NOP
        CLR SCL
        DJNZ R0,XUAT_BIT
        RET
        DOC_BYTE:
        MOV R0,#8 ;DOC 8BIT
        DOC_bit:
        nop
        SETB SDA
        NOP
        nop
        SETB SCL
        NOP
        nop
        MOV C,SDA
        RLC A
        CLR SCL
        DJNZ R0,DOC_BIT
        MOV BYTE_R,A ;CAT BYTE DOC DC VAO BYTE_R
        RET

        START_BIT:

        SETB SCL
        nop
        setb SDA
        nop
        CLR SDA
        NOP
        CLR SCL
        RET

        ;STOP_BIT:
        ; setb SCL
        ; CLR SDA
        ; NOP
        ; SETB SDA
        ; NOP
        ; RET
        STOP_BIT:

        clr scl
        nop
        CLR SDA
        NOP
        nop
        SETB SCL
        nop
        nop
        SETB SDA
        NOP
        nop
        RET
        RECV_ACK:
        CLR SCL
        SETB SDA
        NOP
        nop
        SETB SCL
        MOV C,SDA
        NOP
        nop
        CLR SCL
        RET
        SEND_ACK:

        CLR SDA
        NOP
        nop
        SETB SCL
        NOP
        nop
        CLR SCL
        RET
        NOT_ACK:

        SETB SDA
        NOP
        nop
        SETB SCL
        nop
        CLR SCL
        ret
        ;-----------------end lenh ds1037---------


        ;-----------------funtion LCD-------------

        INIT_LCD:
        MOV DBx,#00111000B ; N=1, F=1
        CLR RS ;RS = 0
        CLR RW ;RW = 0 CHE DO GHI VAO IR
        SETB E
        nop
        CLR E

        CALL test_BF
        MOV DBx,#00000001B ;xoa man hinh
        CLR RS
        CLR RW
        SETB E
        nop
        CLR E

        CALL test_BF
        MOV DBx,#00001100B ;DISPLAY ON/OFF
        ;HIEN THI MAN HINH
        CLR RS
        CLR RW
        SETB E
        nop
        CLR E

        CALL TEST_BF
        SETB RS ;THANH GHI DATA
        CLR RW ;CHE DO GHI DR

        MOV A,#00H ;bat dau ghi tu dong 1
        LCALL TOADO
        MOV R0,#7 ;Hien thi R0 ki tu
        MOV DPTR,#01FH ;o o nho thu DPTR+1 (time)
        LCALL WRITE_STR

        MOV A,#40H ;bat dau ghi tu dong 2
        LCALL TOADO
        MOV R0,#7 ;Hien thi R0 ki tu
        MOV DPTR,#027H ;o o nho thu DPTR+1 (date)
        LCALL WRITE_STR

        ret

        ;---------------------------LOADTIME-------------
        LOAD_TIME:


        MOV A,#08H ;
        LCALL TOADO

        MOV A,HOUR ;HIEN 10HOUR
        ANL A,#00110000B
        RR A
        RR A
        RR A
        RR A ;QUAY PHAI 4BIT
        ADD A,#30H
        LCALL W_CHAR


        MOV A,HOUR ;HIEN DON VI HOUR
        ANL A,#00001111B
        ADD A,#30H
        LCALL W_CHAR

        MOV A,#':'
        LCALL W_CHAR

        MOV A,MINU ;hien thi chuc minute
        ANL A,#01110000B
        RR A
        RR A
        RR A
        RR A ;QUAY PHAI 4BIT
        ADD A,#30H
        LCALL W_CHAR

        MOV A,MINU ;hien don vi minute
        ANL A,#00001111B
        ADD A,#30H
        LCALL W_CHAR

        MOV A,#':'
        LCALL W_CHAR

        MOV A,SEC ;hien thi chuc minute
        ANL A,#01110000B
        RR A
        RR A
        RR A
        RR A ;QUAY PHAI 4BIT
        ADD A,#30H
        LCALL W_CHAR

        MOV A,SEC ;hien don vi minute
        ANL A,#00001111B
        ADD A,#30H
        LCALL W_CHAR

        MOV A,#48H ;
        LCALL TOADO
        ;--------------HIEN THI DATE
        MOV A,DATE ;HIEN 10DATE
        ANL A,#00110000B
        RR A
        RR A
        RR A
        RR A ;QUAY PHAI 4BIT
        ADD A,#30H
        LCALL W_CHAR


        MOV A,DATE ;HIEN DON VI DATE
        ANL A,#00001111B
        ADD A,#30H
        LCALL W_CHAR

        MOV A,#'/'
        LCALL W_CHAR

        MOV A,MONTH ;HIEN 10MONTH
        ANL A,#00010000B
        RR A
        RR A
        RR A
        RR A ;QUAY PHAI 4BIT
        ADD A,#30H
        LCALL W_CHAR


        MOV A,MONTH ;HIEN DON VI MONTH
        ANL A,#00001111B
        ADD A,#30H
        LCALL W_CHAR

        MOV A,#'/'
        LCALL W_CHAR

        MOV A,YEAR ;HIEN 10YEAR
        ANL A,#11110000B
        RR A
        RR A
        RR A
        RR A ;QUAY PHAI 4BIT
        ADD A,#30H
        LCALL W_CHAR


        MOV A,YEAR ;HIEN DON VI YEAR
        ANL A,#00001111B
        ADD A,#30H
        LCALL W_CHAR


        RET
        ;------------ LOAD TIME END--------------

        ;----------------FUNTION LCD----------------

        W_CHAR: ;(KI TU CHUA TRONG A)
        lcall test_bf
        SETB RS ;THANH GHI DATA
        CLR RW ;CHE DO GHI DR
        MOV DBX,A
        SETB E
        CLR E

        RET

        WRITE_STR:
        SETB RS
        CLR RW
        INC DPTR
        CLR A
        MOVC A,@A+DPTR
        MOV DBX,A
        SETB E
        CLR E
        CALL TEST_BF
        DJNZ R0,WRITE_STR
        RET
        TOADO: ;( toa do can ghi, A)
        CALL test_BF
        CLR RS
        CLR RW
        ORL A,#10000000B
        MOV DBX,A ;GHI TU O THU a
        SETB E
        nop
        CLR E
        RET
        NHAPNHAY: ;(NHAP NHAY KI TU O VI TRI POINTER)
        CALL test_BF
        CLR RS
        CLR RW
        MOV DBX,#00001111B ;NHAY CON TRO
        SETB E
        nop
        CLR E
        RET
        NOT_NHAPNHAY:
        CALL test_BF
        CLR RS
        CLR RW
        MOV DBX,#00001100B ;NHAY CON TRO
        SETB E
        nop
        CLR E
        RET
        TEST_BF:
        setb bf
        CLR RS ;RS=0
        SETB RW ;RW=1
        MOV DBX,#0FFH
        CHECK:CLR E
        SETB E
        JB BF,CHECK
        SETB RS
        CLR RW
        ret
        ROTARE:
        ; QUAY PHAI THANH GHI A 4 BIT
        RR A
        RR A
        RR A
        RR A
        RET

        DELAY: ; DELAY= (R3XR4XR5) US
        LAPR3: DJNZ R3,LAPR3
        LAPR4: DJNZ R4,LAPR3
        LAPR5: DJNZ R5,LAPR4
        RET
        loop:
        nop
        nop
        nop
        nop
        ret
        END






















        Nguyễn Huy Biên - 01649 802 694
        gmail :

        Comment


        • #5
          trang này nè:http://www.dientuvietnam.net/forums/...-rs232-113933/
          Bùi Thành Hậu

          Gmail:
          Fb:

          Comment


          • #6
            cám on mọi người nhiều nha
            tại minh mói học cái này nên tự tìm hiểu khó quá

            Comment


            • #7
              Nguyên văn bởi bienhou Xem bài viết
              àh đây rồi
              Bác không cho file mô phỏng hay thông tin về phần cứng mà chỉ post mỗi cái code cho anh em thế này có khác gì đánh đố anh em đâu chứ!

              Comment


              • #8
                code bác bienhon gửi lên mình dựa vào đó vẽ mô phỏng mạch chạy thật nhưng báo lỗi có thể mình vẽ chưa đúng bạn nào thấy cần mình up lên cho.

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X