1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Ic 24c 04

Chủ đề trong 'Điện - Điện tử - Viễn thông' bởi dvdung1982, 08/03/2005.

  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
  1. dvdung1982

    dvdung1982 Thành viên mới

    Tham gia ngày:
    16/12/2004
    Bài viết:
    13
    Đã được thích:
    0
    em hiện đang học ở cao đảng công nghiệp hà nội em rat mê mấy dòng ic 24c xx khi sửa tv rất hay gặp em muốn hỏi anh chị nào biết sơ đồ và chouwng trình nap cho nó xin các anh chị chỉ giúp
  2. Tubes

    Tubes Thành viên mới

    Tham gia ngày:
    23/07/2004
    Bài viết:
    187
    Đã được thích:
    0
    ;.8086
    .286
    locals
    ; Ghi du lieu vao eeprom AT24C08A
    PORT_1 EQU 378h ; write only
    PORT_2 EQU 379h ; read only
    PORT_3 EQU 37Ah
    ; PORT_1
    SCL_OUT EQU 10b ; D1 pin 3 (+)
    SDA_OUT EQU 01b ; D0 pin 2 (+)
    ; PORT_2
    SDA_IN EQU 10000b ; Select PRN pin 13 (+)
    code segment BYTE
    assume cs:code
    org 100h
    start:
    ; Bat nguon 5V & Init
    mov dx,PORT_3
    xor al,al ; Bat nguon
    out dx,al
    call DELAY
    mov dx,PORT_1
    mov al,SDA_OUT
    out dx,al
    call DELAY
    mov al,SDA_OUT or SCL_OUT
    out dx,al
    call DELAY
    mov dx,offset msg_in ; In Xau message
    mov ah,09h
    int 21h
    mov dx,offset str_in ; Doc xau tu ban phim
    mov ah,0ah
    int 21h
    mov si,dx
    inc si
    xor ch,ch
    mov cl,ds:[si] ; Lay length
    inc si
    push cx

    ; GHI DU LIEU
    xor bh,bh ; Ghi vao dia chi 0
    @loop_write:
    mov bl,ds:[si]
    inc si
    mov ah,0
    push cx
    push bx
    call byte_write
    call DELAY2
    pop bx
    add bh,1
    pop cx
    loop @loop_write
    mov byte ptr ds:[si],''$''
    pop cx ; Lay lai length
    ; DOC DU LIEU
    xor bh,bh ; Doc tu dia chi 0
    mov si,offset str_out
    @loop_read:
    mov ah,0
    push bx
    push cx
    call random_read
    call DELAY2
    mov ds:[si],al
    inc si
    pop cx
    pop bx
    add bh,1
    loop @loop_read
    mov byte ptr ds:[si],''$''
    mov bh,2
    mov ah,0
    call random_read
    mov si,offset str_out
    mov ds:[si],al
    ; IN KET QUA:
    mov dx,offset new_line
    mov ah,09h
    int 21h
    mov dx,offset msg_1
    int 21h
    mov dx,offset str_in + 2
    int 21h
    mov dx,offset new_line
    int 21h
    mov dx,offset msg_2
    int 21h
    mov dx,offset str_out
    int 21h
    mov dx,offset new_line
    int 21h
    ;-------------------- TEST TEST
    ; mov bl,10101010b ; data
    ; push bx
    ; mov bh,2
    ; mov ah,0
    ; call byte_write
    ; mov bh,2
    ; mov ah,0
    ; call random_read
    ; pop bx
    ;-------------------- END
    int 20h
    msg_in db "Nhap vao mot xau ky tu: $",0
    msg_1 db "Day ghi vao EEPROM : $",0
    msg_2 db "Day doc ra tu EEPROM : $",0
    str_in db 80, 80 dup (?) ; Du lieu vao tu ban fim
    str_out db 80 dup (?) ; Du lieu doc ra tu EEPROM
    new_line db 13,10,''$''
    ;------------------------------------------------
    ; BYTE_WRITE
    ; Send a byte
    ; Input
    ; BL - Byte
    ; BH - Address
    ; AH - chua p0
    ; Out
    ; AH 0 - OK
    ;------------------------------------------------
    Byte_Write proc
    mov di,bx ; Luu data vao di de dung bx
    mov dx, PORT_1
    ; START
    mov al, SDA_OUT
    out dx,al
    call DELAY
    mov al, SCL_OUT or SDA_OUT
    out dx, al
    call DELAY
    mov al, SCL_OUT
    out dx, al
    call DELAY
    xor al, al
    out dx, al
    call DELAY
    ; Tinh DEVICE ADDRESS
    mov al, ah
    and al, 01b ; Lay P0 va P1
    shl al, 1 ; Dich trai mot bit
    or al, 10100000b ; A2 = 0 A1 = 0 W/R = 0 (write)
    mov bl, al
    ; Gui DEVADDR ra
    mov cx, 8
    @@loop1:
    mov al, bl
    shr al, 7 ; Lay bit 7
    and al, SDA_OUT ; Cho data len
    out dx, al
    call DELAY
    or al, SCL_OUT
    out dx, al ; Nang SCL len
    call DELAY
    and al, SDA_OUT ; Ha SCL xuong
    out dx, al

    shl bl, 1 ; Dich DAT len tren
    loop @@loop1

    ; Kiem tra ACK
    mov al, SDA_OUT ; Nang SDA len cao de xac dinh ACK do IC dua ra
    out dx, al
    call DELAY
    push dx
    mov dx, PORT_2
    in al,dx
    pop dx
    test al, SDA_IN
    jz short @@cont1
    mov ah,1 ; Bao khong ACK duoc
    ret ; Kho
    @@cont1:
    mov al, SCL_OUT ; Nang SCL
    out dx, al
    call DELAY
    mov al, 0 ; Ha SCL
    out dx, al
    call DELAY
    ; Gui WORD ADDRESS ra
    mov bx, di
    mov bl, bh
    mov cx, 8
    @@loop2:
    mov al, bl
    shr al, 7 ; Lay bit 7
    and al, SDA_OUT ; Cho data len
    out dx, al
    call DELAY
    or al, SCL_OUT
    out dx, al ; Nang SCL len
    call DELAY
    and al, SDA_OUT ; Ha SCL xuong
    out dx, al
    call DELAY
    shl bl, 1 ; Dich len tren
    loop @@loop2
    ; Kiem tra ACK
    mov al, SDA_OUT ; Nang SDA len cao de xac dinh ACK do IC dua ra
    out dx, al
    call DELAY
    push dx
    mov dx, PORT_2
    in al,dx
    pop dx
    test al, SDA_IN
    jz short @@cont2
    mov ah,1 ; Bao khong ACK duoc
    ret ; Kho
    @@cont2:
    mov al, SCL_OUT ; Nang SCL
    out dx, al
    call DELAY
    mov al, 0 ; Ha SCL
    out dx, al
    call DELAY
    ; Gui DATA
    mov bx, di
    mov cx, 8
    @@loop3:
    mov al, bl
    shr al, 7 ; Lay bit 7
    and al, SDA_OUT ; Cho data len
    out dx, al
    call DELAY
    or al, SCL_OUT
    out dx, al ; Nang SCL len
    call DELAY
    and al, SDA_OUT ; Ha SCL xuong
    out dx, al
    call DELAY
    shl bl, 1 ; Dich len tren
    loop @@loop3

    ; Kiem tra ACK
    mov al, SDA_OUT ; Nang SDA len cao de xac dinh ACK do IC dua ra
    out dx, al
    call DELAY
    push dx
    mov dx, PORT_2
    in al,dx
    pop dx
    test al, SDA_IN
    jz short @@cont3
    mov ah,3 ; Bao khong ACK duoc
    ret ; Kho
    @@cont3:
    mov al, SCL_OUT
    out dx, al
    call DELAY
    mov al, 0 ; Ha SCL
    out dx, al
    call DELAY
    ; STOP
    xor al, al
    out dx, al
    call DELAY
    mov al, SCL_OUT
    out dx, al
    call DELAY
    mov al, SDA_OUT or SCL_OUT
    out dx, al
    call DELAY
    xor ax,ax
    ret
    Byte_Write endp
    ;------------------------------------------------
    ; RANDOM_READ
    ; Get a byte
    ; Input
    ; BH - Address
    ; AH - chua p0 va p1
    ; Out
    ; AH 0 - OK
    ; AL - data
    ;------------------------------------------------
    Random_Read proc
    mov di,bx
    mov dx,PORT_1
    ; START - dummy
    mov al, SDA_OUT
    out dx, al
    call DELAY
    mov al, SCL_OUT or SDA_OUT
    out dx, al
    call DELAY
    mov al, SCL_OUT
    out dx, al
    call DELAY
    xor al, al
    out dx, al
    call DELAY
    ; Tinh DEVICE ADDRESS - dummy
    mov al, ah
    and al, 01b ; Lay P0 va P1
    shl al, 1 ; Dich trai mot bit
    or al, 10100000b ; A2 = 0 A1 = 0 W/R = 0 (write)
    mov bl, al
    ; Gui DEVADDR ra - dummy
    mov cx, 8
    @@loop1:
    mov al, bl
    shr al, 7 ; Lay bit 7
    and al, SDA_OUT ; Cho data len
    out dx, al
    call DELAY
    or al, SCL_OUT
    out dx, al ; Nang SCL len
    call DELAY
    and al, SDA_OUT ; Ha SCL xuong
    out dx, al

    shl bl, 1 ; Dich DAT len tren
    loop @@loop1

    ; Kiem tra ACK - dummy
    mov al, SDA_OUT ; Nang SDA len cao de xac dinh ACK do IC dua ra
    out dx, al
    call DELAY
    push dx
    mov dx, PORT_2
    in al,dx
    pop dx
    test al, SDA_IN
    jz short @@cont1
    mov ah,1 ; Bao khong ACK duoc
    ret ; Kho
    @@cont1:
    mov al, SCL_OUT ; Nang SCL
    out dx, al
    call DELAY
    mov al, 0 ; Ha SCL
    out dx, al
    call DELAY
    ; Gui WORD ADDRESS ra - dummy
    mov bx, di
    mov bl, bh
    mov cx, 8
    @@loop2:
    mov al, bl
    shr al, 7 ; Lay bit 7
    and al, SDA_OUT ; Cho data len
    out dx, al
    call DELAY
    or al, SCL_OUT
    out dx, al ; Nang SCL len
    call DELAY
    and al, SDA_OUT ; Ha SCL xuong
    out dx, al
    call DELAY
    shl bl, 1 ; Dich len tren
    loop @@loop2
    ; Kiem tra ACK - dummy
    mov al, SDA_OUT ; Nang SDA len cao de xac dinh ACK do IC dua ra
    out dx, al
    call DELAY
    push dx
    mov dx, PORT_2
    in al,dx
    pop dx
    test al, SDA_IN
    jz short @@cont2
    mov ah,1 ; Bao khong ACK duoc
    ret ; Kho
    @@cont2:
    mov al, SCL_OUT ; Nang SCL
    out dx, al
    call DELAY
    mov al, 0 ; Ha SCL
    out dx, al
    call DELAY
    ;------------------------------------------
    ; START - READ
    in al, dx
    nop
    or al, SDA_OUT
    out dx, al
    call DELAY
    mov al, SCL_OUT or SDA_OUT
    out dx, al
    call DELAY
    mov al, SCL_OUT
    out dx, al
    call DELAY
    xor al, al
    out dx, al
    call DELAY
    ; Tinh DEVICE ADDRESS - READ
    mov al, ah
    and al, 01b ; Lay P0 va P1
    shl al, 1 ; Dich trai mot bit
    or al, 10100001b ; A2 = 0 A1 = 0 W/R = 1 (READ)
    mov bl, al
    ; Gui DEVADDR ra - READ
    mov cx, 8
    @@loop3:
    mov al, bl
    shr al, 7 ; Lay bit 7
    and al, SDA_OUT ; Cho data len
    out dx, al
    call DELAY
    or al, SCL_OUT
    out dx, al ; Nang SCL len
    call DELAY
    and al, SDA_OUT ; Ha SCL xuong
    out dx, al

    shl bl, 1 ; Dich DAT len tren
    loop @@loop3

    ; Kiem tra ACK - dummy
    mov al, SDA_OUT ; Nang SDA len cao de xac dinh ACK do IC dua ra
    out dx, al
    call DELAY
    push dx
    mov dx, PORT_2
    in al,dx
    pop dx
    test al, SDA_IN
    jz short @@cont3
    mov ah,1 ; Bao khong ACK duoc
    ret ; Kho
    @@cont3:
    mov al, SCL_OUT ; Nang SCL
    out dx, al
    call DELAY
    mov al, 0 ; Ha SCL
    out dx, al
    call DELAY
    ; READ READ
    xor ah,ah
    mov cx,8
    mov al,SDA_OUT
    mov dx,PORT_1
    out dx,al
    @@loop_read:
    mov dx,PORT_2
    in al,dx
    shl ah,1
    test al,SDA_IN
    jz @@skip
    or ah,1 ; Neu not zero thi bat ''1''
    @@skip:
    ; Gui CLK
    mov al, SCL_OUT or SDA_OUT
    mov dx,PORT_1
    out dx,al
    call DELAY
    mov al,SDA_OUT
    out dx,al
    call DELAY
    loop @@loop_read
    mov al,ah
    xor ah,ah
    push ax
    ; STOP
    xor al, al
    out dx, al
    call DELAY
    mov al, SCL_OUT
    out dx, al
    call DELAY
    mov al, SDA_OUT or SCL_OUT
    out dx, al
    call DELAY
    pop ax
    ret
    Random_Read endp
    ;------------------------------------------------
    ; DELAY
    ;------------------------------------------------
    delay proc
    push cx
    xor cx,cx
    @@1:
    push cx
    xor cx,cx
    pop cx
    loop @@1
    pop cx
    ret
    delay endp
    delay2 proc
    push cx
    xor cx,cx
    @@1:
    push cx
    xor cx,cx
    pop cx
    loop @@1
    pop cx
    ret
    delay2 endp
    code ends
    end start
  3. Tubes

    Tubes Thành viên mới

    Tham gia ngày:
    23/07/2004
    Bài viết:
    187
    Đã được thích:
    0
    Đây là sơ đồ
    Các chân địa chỉ ->nối xuống đất, chỉ sài 2 chân SDA và SCL thôi.
    Các chân trên hàn vào jắc máy in:
    SCL_OUT EQU 10b ; D1 pin 3 (+)
    SDA_OUT EQU 01b ; D0 pin 2 (+)
    SDA_IN EQU 10000b ; Select PRN pin 13 (+)
    Nếu viết bằng C chắc đơn giản hơn
    Được Tubes sửa chữa / chuyển vào 10:56 ngày 09/03/2005

Chia sẻ trang này