toilet

Thảo luận - DIY mạch nạp ISP...

Thảo luận trong 'Họ 8051'

Đang xem chủ đề này ( Thành viên: 1, Khách: 0)

  1. bahauhn12
  1. Đăng 10/10/12 #1

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    Mạch nạp nối tiếp (ISP)
    Mạch nạp chương trình cho 89Sxx thì đã có rất nhiều và cũng dễ làm, kid cũng không có ý định cạnh tranh hay buôn bán gì cả :D:D:D. Chỉ là do kid muốn tìm hiểu để học hỏi thêm.
    Sau thời gian tìm hiểu và cũng có thút thành quả :D:D:D
    Kid sẽ lần lượt Post tại luồng này tất cả những gì mà kid tìm hiểu được
    Hi vọng trong thời gian tới sẽ cho ra mắt mạch nạp cho 89S DIY từ giao diện chương trình PC đến chương trình cho chip Master :):):)
    Chủ đề cùng chuyên mục
    Chia sẻ Share





    #1
  2. Đăng 10/10/12 #2

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    Nạp chương trình cho 89Sxx có 2 giao thức là nạp nối tiếp và nạp song song
    kid thấy nạp theo kiểu nối tiếp (ISP) tiện nhất ở chỗ có thể nạp chương trình mà không cần tháo chip ra khỏi mạch
    bạn có thể nạp trực tiếp chip ở trên mạch ứng dụng...., sau khi nạp xong thì chip được Reset và chạy luôn
    Chương trình sẽ được nạp sử dụng các chân MOSI, MISO, SCK, RST

    fig1.JPG
    cụ thể hơn về ISP bạn xem trong Datasheet của 89s52 hay 89s51 nhé

    Các file đính kèm:

    htulipden, Ngô Đức Tú, espring2 others thích bài này.
    #2
  3. Đăng 10/10/12 #3

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    kid dùng cổng COM nên kid giới thiệu 1 chút về lập trình với cổng COM (truyền thông nối tiếp UART)
    nếu các bạn xài các MFC hay VB... thì sẽ dễ hơn nhưng nói thật là kid không biết xài MFC, kid xài API và các thư viện tự tạo :D:D:D
    Các bạn cần biết 1 chút về lập trình C/C++ nhé
    để mở cổng COM bạn xài CreateFile hoặc OpenFile
    đọc từ cổng COM bạn xài ReadFile và để ghi giá trị ra cổng COM bạn xài WriteFile
    ví dụ kid mở cổng COM1 kid xài như sau:
    Mã:
    HANDLE hComm;
        hComm=CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,\
            0,0,OPEN_EXISTING,0,0);
    nếu mở cổng COM2 bạn thay chỗ COM1 thành COM2....
    nếu mở thành công thì HComm chứa Handle của cổng COM và ta sẽ xài nó để giao tiếp với cổng COM
    ngược lại nếu thất bại hComm=NULL
    để ghi ra cổng COM ta xài WriteFile như trên đã nói:
    Mã:
    WriteFile(hComm,szBuff,1,&dwNum,NULL);
    với hComm là handle của cổng COM, là kết quả trả về của hàm CreateFile ở trên
    để đọc từ cổng COM ta dùng:
    Mã:
    ReadFile(hComm,szBuff,1,&dwNum,NULL);
    kid viết 1 chương trình console sẽ đọc ký tự bạn gõ vào bàn phím
    nếu bạn gõ 'a' thì nó sẽ truyền 'a' ra cổng COM1
    nếu bạn gõ chữ 'b' thì nó sẽ truyền 'b' ra cổng COM1
    nếu bạn gõ 's' thì sẽ kết thúc chương trình
    Mã:
    #include <STDIO.H>
    #include <CONIO.H>
    #include <WINDOWS.H>
    unsigned char szBuff[2];
    //unsigned char szrBuff[2];
    //char szRead[20];
    DWORD dwNum;
    int main() {
        //printf("Hello World");
        //thu mo cong com 1 xem sao
        HANDLE hComm;
        hComm=CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,\
            0,0,OPEN_EXISTING,0,0);
        if(!hComm) {
            printf("Khong mo duoc\n");
            return 0;
        } else {
            printf("mo thanh cong\n");
        }
        DCB dcb;
        memset(&dcb,0,sizeof(dcb));
        if(!GetCommState(hComm,&dcb)) {
            printf("Khong lay duoc thong so cong COM\n");
            CloseHandle(hComm);
            return 0;
        } else {
            printf("Lay thanh cong thong so cong COM\n");
        }
        dcb.BaudRate=CBR_9600;
        //dcb.fParity=0;
        if(!SetCommState(hComm,&dcb)) {
            printf("Khong dat duoc thong so cong\n");
            CloseHandle(hComm);
            return 0;
        } else {
            printf("Dat thong so 9600\n");
        }
        char c;
        while(1) {
            c=getchar();
            if(c=='a') {
                szBuff[0]='a';
                WriteFile(hComm,szBuff,1,&dwNum,NULL);
                continue;
            }
            if(c=='b') {
                szBuff[0]='b';
                WriteFile(hComm,szBuff,1,&dwNum,NULL);
                continue;
            }
            if(c=='s') {
                break;
            }
       
        }
        CloseHandle(hComm);
        printf("\nBam phim bat ky de ket thuc\n");
        getch();
        return 0;
    }
    và code cho 8051 nếu nhận được ký tự 'a' thì bật led
    nếu nhận được ký tự 'b' thì tắt led
    Mã:
    ; Test UART 8051
    ; coder: Ngo Hung Cuong
    ; Compiler: Kidteam ASM for 8051
    ; 10/10/2012
    .define
        led        p1_0
    .enddefine
    .code
    org        0x0000
        ljmp    main
    org        0x0030
    main:
        lcall    init
    loop:
        lcall    rec
        cjne    a,        #97,    tt1    ; 'a'
        clr        led                      ; turn on led
    tt1:
        cjne    a,        #98,    tt2    ; 'b'
        setb    led                    ; turn off led
    tt2:
        ljmp    loop
        ljmp    $
    init:
        mov        tmod,    #0x20
        mov        th1,    #0xfd
        mov        tl1,    #0xfd
        mov        scon,    #0x50
        setb    tr1
        ret
    rec:
        clr        ri
        jnb        ri,        $
        mov        a,        sbuf
        clr        ri
        ret
    .endcode
    .end
    #3
  4. Đăng 10/10/12 #4

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    phần phân tích file Hex thì các bạn tham khảo thêm bên luồng viết Compiler cho 8051 nhé
    giờ kid bắt tay vào viết giao diện chương trình trên máy tính
    updating...
    fig1.JPG
    Ngô Đức Tú thích bài này.
    #4
  5. Đăng 11/10/12 #5

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    tài liệu lập trình với cổng COM trên windows
    sử dụng với C/C++ và API

    Các file đính kèm:

    htulipden, Ngô Đức TúBuiBachTuanAnh thích bài này.
    #5
  6. Đăng 11/10/12 #6

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    đã cơ bản xong phần giao tiếp PC giờ kid bắt đầu viết Firmware cho chip master
    kid sử dụng 89S51 luôn vì kid có sẵn con này :D:D:D
    fig1.JPG
    khi nào xong (nếu thành công) kid sẽ show cùng ace :D:D:D
    Admin thích bài này.
    #6
  7. Đăng 11/10/12 #7

    chúng Kỹ sư

    Số bài viết: 335
    Đã được thích: 332
    xí chú, nhớ dùng chân mà 89C2051 có nha để còn có thể lấy 2051 làm master @@
    ờ mà detect VDK theo chu kì hay sao mà ko thấy ô chọn VDK
    #7
  8. Đăng 11/10/12 #8

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    Thông báo với các bạn là kid đã thành công với 1 test nhỏ
    giờ kid đang Fix lỗi và sẽ sớm show hàng với ace
    :D:D:D:D:D
    nhquangdt3k5BuiBachTuanAnh thích bài này.
    #8
  9. Đăng 12/10/12 #9

    NgoHungCuong STM32

    Số bài viết: 2,131
    Đã được thích: 4,777
    Yahoo Messenger
    Skype
    Facebook Profile
    đây là tất cả những gì kid đã làm full source code
    bạn nào có thời gian thì tham gia cùng kid nhé
    Chương trình giao tiếp:
    Free Cloud Storage - MediaFire
    Firmware
    Free Cloud Storage - MediaFire
    (các bạn cũng có thể download file đính kèm)
    khi nào có thời gian kid sẽ fix lỗi tiếp
    nhquangdt3k5 thích bài này.
    #9
  10. Đăng 14/10/12 #10

    nvt Học sinh phổ thông

    Số bài viết: 5
    Đã được thích: 8
    Kidteam quá Pro!!!Thật là ngưỡng mộ anh quá.Muốn làm một cái như anh thì em phải bắt đầu từ đâu ạ?
    #10

Chia sẻ trang này