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: 0, Khách: 0)

  1. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    chuyển sang dùng pic18f14k50
    sửa lại phần mềm PC, cải thiện thêm tốc độ nạp
    firmware demo
    Mã:
    /*
    * Firmware framework for USB I/O on PIC 18F2455 (and siblings)
    * Copyright (C) 2005 Alexander Enzmann
    * adapted to MCC18 by Alberto Maccioni on 1/8/09
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA
    * or see <http://www.gnu.org/licenses/>
    */
    //Ngo Hung Cuong - kidteam@gmail.com
    #include <p18f14K50.h>
    #include <delays.h>
    #include "usb.h"
     
    // Note: there are timing related problems associated with GET_FEATURE
    // when run at less than 48 MHz
    #define CLK_48MHZ 1
    #define led LATCbits.LATC7
    #pragma config USBDIV = ON, FOSC = HS, CPUDIV = CLKDIV3, PLLEN = ON, PCLKEN = OFF
    #pragma config FCMEN = OFF, IESO = OFF, PWRTEN = ON, BOREN = OFF, BORV = 19
    #pragma config WDTEN = OFF, WDTPS = 32768, HFOFST = ON, MCLRE = OFF, STVREN = OFF
    #pragma config LVP = OFF, BBSIZ = OFF, XINST = OFF, CP0 = OFF, CP1 = OFF,CPB = OFF
    #pragma config CPD = OFF, WRT0 = OFF, WRT1 = OFF, WRTC = OFF, WRTB = OFF, WRTD = OFF
    #pragma config EBTR0 = OFF, EBTRB = OFF
    // HID feature buffer
     
    volatile unsigned char HIDFeatureBuffer[HID_FEATURE_REPORT_BYTES];
    char txBuffer[HID_INPUT_REPORT_BYTES];
    #pragma udata my_section_1
    char rxBuffer[HID_OUTPUT_REPORT_BYTES];
    unsigned int timestamp=0;
    extern byte transferType;
     
    //===============================================================
    void GetVer(void);
    void KT_i2c_read(void);
    void KT_i2c_write(void);
    //===============================================================
     
    void i2c_start(void);
    void i2c_stop(void);
    void i2c_init(void);
    unsigned char i2c_read(unsigned char ack);
    unsigned char i2c_write(unsigned char d);
    void KT_TestI2C(void);
    /*===============================================================
    chi can khoi tao 2 ham nay
    ===============================================================*/
     
    static void Kidteam_Task(void);
    void Kidteam_Init(void);
     
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
    //===============================================================
     
    //===============================================================
    #pragma code low_vector=0x8
    void low_interrupt (void)
    {
    }
     
     
    #pragma code
     
    // Allocate buffers in RAM for storage of bytes that have either just
    // come in from the SIE or are waiting to go out to the SIE.
     
    // Regardless of what the USB is up to, we check the USART to see
    // if there's something we should be doing.
     
    // Entry point for user initialization
    void Kidteam_Init(void)
    {
        /*
        LATA=0;
        TRISA=0b11111001;
        LATB=0;
        TRISB=0xff;//bat dau roi day
        INTCON2bits.RBPU=1;//loai bo tro treo noi, dung tro treo ngoai
        */
        T0CON=0x80;            // Timer0 period = T*2^16:2 = 5.46ms:2 = 10.93ms (PS=2)
        LATC=0;
        TRISC=0;
    }
     
    #define LOBYTE(x) (*((char *)&x))
    #define HIBYTE(x) (*(((char *)&x)+1))
    // If we got some bytes from the host, then echo them back.
    static void Kidteam_Task(void)
    {
        byte rxCnt;
        byte cmd;
        // Find out if an Output report has been received from the host.
        rxCnt = HIDRxReport(rxBuffer, HID_OUTPUT_REPORT_BYTES);
     
        // If no bytes in, then nothing to do
        if (rxCnt == 0)
            return;
        cmd=rxBuffer[0];
        switch(cmd) {
            case 0:
                i2c_init();
                break;
            case 1:
                i2c_start();
                break;
            case 2:
                i2c_stop();
                break;
            case 3:
                KT_i2c_write();
                break;
            case 4:
                KT_i2c_read();
                break;
            case 5:
                GetVer();
                break;
            case 6:
                KT_TestI2C();
                break;
        } 
    }
     
    // Central processing loop.  Whenever the firmware isn't busy servicing
    // the USB, we will get control here to do other processing.
    void ProcessIO(void)
    {
     
        // User Application USB tasks
        if ((deviceState < CONFIGURED) || (UCONbits.SUSPND==1))
            return;
     
        // Process USB: Echo back any bytes that have come in.
        Kidteam_Task();
    }
     
    // Initialization for a SET_FEATURE request.  This routine will be
    // invoked during the setup stage and is used to set up the buffer
    // for receiving data from the host
    void SetupFeatureReport(byte reportID)
    {
        if (reportID == 0)
        {
            // When the report arrives in the data stage, the data will be
            // stored in HIDFeatureBuffer.
            inPtr = (byte*)&HIDFeatureBuffer;
        }
    }
     
    // Post processing for a SET_FEATURE request.  After all the data has
    // been delivered from host to device, this will be invoked to perform
    // application specific processing.
    void SetFeatureReport(byte reportID)
    {
     
        // Currently only handling report 0, ignore any others.
        if (reportID == 0)
        {
            // Set the state of PORTB based on the first byte
            // of the feature report.
            //LATB = HIDFeatureBuffer[0];
            // x10 to signal feature transfer
            //LATBbits.LATB1=1;
            //LATBbits.LATB0=0;
        }
    }
     
    // Handle a feature report request on the control pipe
    void GetFeatureReport(byte reportID)
    {
     
        if (reportID == 0)
        {
            // Handle report #0
            outPtr = (byte *)&HIDFeatureBuffer;
            //HIDFeatureBuffer[0]=PORTA;//==========================@@@
            HIDFeatureBuffer[1]=0xF1;    //this is to differentiate between different transfer types
            HIDFeatureBuffer[2]=HIBYTE(timestamp);
            HIDFeatureBuffer[3]=LOBYTE(timestamp);
            wCount = HID_FEATURE_REPORT_BYTES;
            transferType=0;
        }
     
    }
     
    // Handle control out.  This might be an alternate way of processing
    // an output report, so all that's needed is to point the output
    // pointer to the output buffer
    // Initialization for a SET_REPORT request.  This routine will be
    // invoked during the setup stage and is used to set up the buffer
    // for receiving data from the host
    void SetupOutputReport(byte reportID)
    {
        if (reportID == 0)
        {
            // When the report arrives in the data stage, the data will be
            // stored in HIDFeatureBuffer
            inPtr = (byte*)&HIDRxBuffer;
        }
    }
     
    // Post processing for a SET_REPORT request.  After all the data has
    // been delivered from host to device, this will be invoked to perform
    // application specific processing.
    void SetOutputReport(byte reportID)
    {
     
        // Currently only handling report 0, ignore any others.
        if (reportID != 0)
            return;
     
        LATB=HIDRxBuffer[0];
        // x11 to signal SET_REPORT transfer
        //LATBbits.LATB1=1;
        //LATBbits.LATB0=1;
    }
     
    // Handle a control input report
    void GetInputReport(byte reportID)
    {
     
        if (reportID == 0)
        {
            byte i;
            // Send back the contents of the HID report
            // TBD: provide useful information...
            outPtr = (byte *)&HIDTxBuffer;
            //HIDTxBuffer[0]=PORTA;//================================@@@@
            HIDTxBuffer[1]=0xF2;    //this is to differentiate between different transfer types
            HIDTxBuffer[2]=HIBYTE(timestamp);
            HIDTxBuffer[3]=LOBYTE(timestamp);
            for(i=4;i<HID_INPUT_REPORT_BYTES;i++) HIDTxBuffer[i]=HIDRxBuffer[i];
            // The number of bytes in the report (from usb.h).
            wCount = HID_INPUT_REPORT_BYTES;
            transferType=0;
        }
    }
     
    // Entry point of the firmware
    void main(void)
    {
        byte led_cnt=0;
        // Set all I/O pins to digital
        ANSEL=ANSELH=0;
     
        // Initialize USB
        UCFG = 0x14; // Enable pullup resistors; full speed mode
     
        deviceState = DETACHED;
        remoteWakeup = 0x00;
        currentConfiguration = 0x00;
     
        // Call user initialization function
        Kidteam_Init();
     
        while(1)
        {
            // Ensure USB module is available
            EnableUSBModule();
         
            // As long as we aren't in test mode (UTEYE), process
            // USB transactions.
            if(UCFGbits.UTEYE != 1)
                ProcessUSBTransactions();
     
            // Application specific tasks
            ProcessIO();
         
            //Blink LED2 @ 1Hz when configured
            if(INTCONbits.TMR0IF){ 
                INTCONbits.TMR0IF=0;
                timestamp++;
                led_cnt++;
                if (deviceState<CONFIGURED&&led_cnt>=40){
                    led = !led;
                    led_cnt=0;
                }
                else if (deviceState == CONFIGURED&&led_cnt>=5){
                    led = !led;
                    led_cnt=0;
                }
            } 
        }
    }
     
    void i2c_start(void){
        SSPCON2bits.SEN = 1;
        while(SSPCON2bits.SEN);
    }
     
    void i2c_stop(void){
        SSPCON2bits.PEN = 1;
        while(SSPCON2bits.PEN);
    }
     
    unsigned char i2c_read(unsigned char ack){
        SSPCON2bits.RCEN = 1;
        while(SSPCON2bits.RCEN);
        SSPCON2bits.ACKDT = ack;
        SSPCON2bits.ACKEN = 1;
        while(SSPCON2bits.ACKEN);
        return SSPBUF;
    }
     
    unsigned char i2c_write(unsigned char d){
        SSPCON1bits.WCOL = 0;
        PIR1bits.SSPIF = 0;
        SSPBUF = d;
        _asm
        nop
        nop
        nop
        _endasm
        if(SSPCON1bits.WCOL) return 2;            // write collision
        else {
            while(!PIR1bits.SSPIF);
            if(SSPCON2bits.ACKSTAT) return 1;    // not acknowledge
            return 0;                // everything is ok
        }
    }
     
    void i2c_init(void){
     
        PORTBbits.RB4 = 1;
        PORTBbits.RB6 = 1;
        TRISBbits.RB4 = 1;
        TRISBbits.RB6 = 1; //    control by mssp
     
        SSPADD = 39;        // Baudrate = Fosc/4/(SSPADDR+1)@@@@@@@@ chu y cho nay do 16Mhz
        SSPSTATbits.SMP = 1;        // slew rate control disabled for 100KHz baudrate
        SSPCON2 = 0; 
        SSPCON1 = 0x28; //I2C Master Hardware mode
    }
     
     
    void KT_TestI2C(void) {
        //khoi tao I2C cua PIC
        i2c_init();
     
        i2c_start();
        i2c_write(0xa0);
        i2c_write(0);
        i2c_write(0);
        i2c_write('n');
        i2c_write('g');
        i2c_write('o');
        i2c_write(' ');
        i2c_write('h');
        i2c_write('u');
        i2c_write('n');
        i2c_write('g');
        i2c_write(' ');
        i2c_write('c');
        i2c_write('u');
        i2c_write('o');
        i2c_write('n');
        i2c_write('g');
        i2c_write(' ');
        i2c_write('K');
        i2c_write('i');
        i2c_write('d');
        i2c_write('t');
        i2c_write('e');
        i2c_write('a');
        i2c_write('m');
        i2c_write('@');
        i2c_write('g');
        i2c_write('m');
        i2c_write('a');
        i2c_write('i');
        i2c_write('l');
        i2c_write('.');
        i2c_write('c');
        i2c_write('o');
        i2c_write('m');
        i2c_stop();
        Delay10KTCYx(10);
        i2c_start();
        //i2c_restart();
        i2c_write(0xa0);
        i2c_write(0);
        i2c_write(0);
        i2c_stop();
        i2c_start();
        i2c_write(0xa1);
        txBuffer[0]=i2c_read(0);
        txBuffer[1]=i2c_read(0);
        txBuffer[2]=i2c_read(0);
        txBuffer[3]=i2c_read(0);
        txBuffer[4]=i2c_read(0);
        txBuffer[5]=i2c_read(0);
        txBuffer[6]=i2c_read(0);
        txBuffer[7]=i2c_read(0);
        txBuffer[8]=i2c_read(0);
        txBuffer[9]=i2c_read(0);
        txBuffer[10]=i2c_read(0);
        txBuffer[11]=i2c_read(0);
        txBuffer[12]=i2c_read(0);
        txBuffer[13]=i2c_read(0);
        txBuffer[14]=i2c_read(0);
        txBuffer[15]=i2c_read(0);
        txBuffer[16]=i2c_read(0);
        txBuffer[17]=i2c_read(0);
        txBuffer[18]=i2c_read(0);
        txBuffer[19]=i2c_read(0);
        txBuffer[20]=i2c_read(0);
        txBuffer[21]=i2c_read(0);
        txBuffer[22]=i2c_read(0);
        txBuffer[23]=i2c_read(0);
        txBuffer[24]=i2c_read(0);
        txBuffer[25]=i2c_read(0);
        txBuffer[26]=i2c_read(0);
        txBuffer[27]=i2c_read(0);
        txBuffer[28]=i2c_read(0);
        txBuffer[29]=i2c_read(0);
        txBuffer[30]=i2c_read(0);
        txBuffer[31]=i2c_read(1);
        //gui nguoc lai qua usb
        while (ep1Bi.Stat & UOWN)
            ProcessUSBTransactions();
        HIDTxReport(txBuffer, HID_INPUT_REPORT_BYTES);
    }
     
    void GetVer(void) {
        txBuffer[0]='K';
        txBuffer[1]='i';
        txBuffer[2]='d';
        txBuffer[3]='t';
        txBuffer[4]='e';
        txBuffer[5]='a';
        txBuffer[6]='m';
        txBuffer[7]=' ';
        txBuffer[8]='I';
        txBuffer[9]='S';
        txBuffer[10]='P';
        txBuffer[11]=' ';
        txBuffer[12]='P';
        txBuffer[13]='r';
        txBuffer[14]='o';
        txBuffer[15]='g';
        txBuffer[16]=' ';
        txBuffer[17]='v';
        txBuffer[18]='1';
        txBuffer[19]='.';
        txBuffer[20]='0';
        txBuffer[21]='.';
        txBuffer[22]='0';
        txBuffer[23]='.';
        txBuffer[24]='0';
        txBuffer[25]=0;
        txBuffer[26]='K';
        txBuffer[27]='K';
        while (ep1Bi.Stat & UOWN)
            ProcessUSBTransactions();
        HIDTxReport(txBuffer, HID_INPUT_REPORT_BYTES);
    }
     
    void KT_i2c_read(void) {
        byte i,n;
        n=rxBuffer[1];//so luong byte se doc
        txBuffer[0]=n;
        for(i=0;i<n-1;++i) {
            txBuffer[1+i]=i2c_read(0);
        }
        if(rxBuffer[2]) {
            txBuffer[n]=i2c_read(1);
        } else {
            txBuffer[n]=i2c_read(0);
        }
        while (ep1Bi.Stat & UOWN)
            ProcessUSBTransactions();
        HIDTxReport(txBuffer, HID_INPUT_REPORT_BYTES);
    }
     
    void KT_i2c_write(void) {
        byte n,i;
        n=rxBuffer[1];//so luong byte se ghi
        for(i=0;i<n;++i) {
            i2c_write(rxBuffer[i+2]);
        }
    }
    kết quả thử nghiệm. (EEPROM 24C32)
     
  2. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Test EEPROM 24C04 (1 byte Address)
     
  3. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Test EEPROM 24C02
     
  4. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Test EEPROM 24C16
     
  5. MuoiTDH

    MuoiTDH Sinh viên đại học

    em gà quá, anh cho em hỏi kết nối từ cổng Com ra mạch thì làm như thế nào ạ (Com <=> J2), xấu hổ quá, anh đừng cươif nhé. thanhk all!
     
  6. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    hi, bạn dùng PIC18F14K50 đi
    mình đang cập nhật thêm đây
    giao tiếp USB, tốc độ nhanh hơn COM nhiều và giá thành pic18F14K50 cũng rẻ
    so với 8051+ cáp chuyển USB sang COM (với laptop không có cổng COM) thì pic rẻ hơn ấy chứ :)
    Tốc độ nạp của mạch dùng PIC nhanh hơn nhiều lần so với dùng 8051 + COM. thân
     
    MuoiTDH thích bài này.
  7. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Test AT89S51
     
    MuoiTDH thích bài này.
  8. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Hex file pic18f14k50
    Mã:
    :020000040000FA
    :06000000BDEF0CF0120040
    :020006001200E6
    :020008001200E4
    :06000A0001009619000040
    :08001000E00000000200000006
    :08001800800ED56E8B6A946A1C
    :100020009368F18E1200D9CFE6FFE1CFD9FF020E1F
    :10003000E126400EE66E210EE66E020EE66E9AECAA
    :1000400006F0E552E552E552DF6EDF5001E138D0AF
    :10005000010E21C2DBFFDB500B0A2FE0010A2AE070
    :10006000030A26E0010A22E00F0A1DE0010A19E056
    :10007000030A15E0010A11E0070A0DE0010A09E090
    :10008000030A05E0010A01E01BD02ED919D0F1D8EE
    :1000900017D0F3D815D02DDB13D0D0DA11D085DAF4
    :1000A0000FD02DD90DD0BBEC05F00AD068DB08D0FD
    :1000B0007FDB06D04BEC05F003D099EC04F000D0C8
    :1000C000020EE15C02E2E16AE552E16EE552E7CF41
    :1000D000D9FF1200050E0201615D03E36450020BBB
    :1000E00001E001D0A0DF1200D9CFE6FFE1CFD9FFB8
    :1000F000FE0EDB5005E10201600E6D6F000E6E6FAB
    :10010000E552E7CFD9FF1200D9CFE6FFE1CFD9FF03
    :10011000FE0EDB5000E1E552E7CFD9FF1200D9CF48
    :10012000E6FFE1CFD9FFFE0EDB5012E10201600EC7
    :10013000696F000E6A6F0001F10E616FE1C062F03D
    :10014000E0C063F0400E02016F6F706B0201716BD3
    :10015000E552E7CFD9FF1200D9CFE6FFE1CFD9FFB3
    :10016000FE0EDB5005E10201800E6D6F020E6E6F18
    :10017000E552E7CFD9FF1200D9CFE6FFE1CFD9FF93
    :10018000FE0EDB5001E002D080C28AFFE552E7CFCD
    :10019000D9FF1200D9CFE6FFE1CFD9FFE652FE0E1C
    :1001A000DB502AE10201C00E696F020E6A6F020184
    :1001B000F20EC16FE1C0C2F2E0C0C3F2040EDF6E06
    :1001C000400EDF5C13E2DF50EA6A800FE96E020E38
    :1001D000EA22EF50E66EDF50EA6AC00FE96E020EC7
    :1001E000EA22E552E750EF6EDF2AEAD7400E02011D
    :1001F0006F6F706B0201716BE552E552E7CFD9FF6B
    :100200001200D9CFE6FFE1CFD9FFE652DF6A7F6A5D
    :100210007E6A140E616E0201616B0201626B020163
    :10022000656BFADE4EEC0BF061BE02D094EC0BF085
    :1002300051DFF2A418D0F2940001E02B000EE1236C
    :10024000DF2A050E0201615D06E2280EDF5C03E392
    :100250008B7EDF6A08D0050E615D05E1050EDF5C6F
    :1002600002E38B7EDF6ADED7E552E552E7CFD9FFA6
    :100270001200C580C5B0FED71200C584C5B4FED734
    :100280001200D9CFE6FFE1CFD9FFC586C5B6FED7AC
    :10029000FE0EDB50E8B0C58AE8A0C59AC588C5B88F
    :1002A000FED7C95000D0E552E7CFD9FF1200D9CF11
    :1002B000E6FFE1CFD9FFC69E9E96FE0EDB50C96ECB
    :1002C000000000000000C6AE03D0020E09D008D026
    :1002D0009EA6FED7C5AC02D0010E02D0000E00D003
    :1002E000E552E7CFD9FF12008188818C9388938CE7
    :1002F000270EC86EC78EC56A280EC66E1200F4DFC0
    :10030000B8DFA00EE66ED3DFE552E66AD0DFE55235
    :10031000E66ACDDFE5526E0EE66EC9DFE552670E86
    :10032000E66EC5DFE5526F0EE66EC1DFE552200EC8
    :10033000E66EBDDFE552680EE66EB9DFE552750E7A
    :10034000E66EB5DFE5526E0EE66EB1DFE552670E82
    :10035000E66EADDFE552200EE66EA9DFE552630ED4
    :10036000E66EA5DFE552750EE66EA1DFE5526F0E73
    :10037000E66E9DDFE5526E0EE66E99DFE552670E82
    :10038000E66E95DFE552200EE66E91DFE5524B0EEC
    :10039000E66E8DDFE552690EE66E89DFE552640E8A
    :1003A000E66E85DFE552740EE66E81DFE552650E7E
    :1003B000E66E7DDFE552610EE66E79DFE5526D0E89
    :1003C000E66E75DFE552400EE66E71DFE552670EB0
    :1003D000E66E6DDFE5526D0EE66E69DFE552610E89
    :1003E000E66E65DFE552690EE66E61DFE5526C0E82
    :1003F000E66E5DDFE5522E0EE66E59DFE552630EC6
    :10040000E66E55DFE5526F0EE66E51DFE5526D0E7A
    :10041000E66E4DDFE55231DF0A0EE66E86EC0CF03B
    :10042000E55227DFA00EE66E42DFE552E66A3FDFC7
    :10043000E552E66A3CDFE55220DF1BDFA10EE66EE7
    :1004400036DFE552E66A1DDFE5520001A06FE66A7D
    :1004500018DFE5520001A16FE66A13DFE5520001E3
    :10046000A26FE66A0EDFE5520001A36FE66A09DFBC
    :10047000E5520001A46FE66A04DFE5520001A56FB2
    :10048000E66AFFDEE5520001A66FE66AFADEE55293
    :100490000001A76FE66AF5DEE5520001A86FE66A83
    :1004A000F0DEE5520001A96FE66AEBDEE5520001DD
    :1004B000AA6FE66AE6DEE5520001AB6FE66AE1DEAE
    :1004C000E5520001AC6FE66ADCDEE5520001AD6F7B
    :1004D000E66AD7DEE5520001AE6FE66AD2DEE5528B
    :1004E0000001AF6FE66ACDDEE5520001B06FE66A4B
    :1004F000C8DEE5520001B16FE66AC3DEE5520001D5
    :10050000B26FE66ABEDEE5520001B36FE66AB9DE9D
    :10051000E5520001B46FE66AB4DEE5520001B56F42
    :10052000E66AAFDEE5520001B66FE66AAADEE55282
    :100530000001B76FE66AA5DEE5520001B86FE66A12
    :10054000A0DEE5520001B96FE66A9BDEE5520001CC
    :10055000BA6FE66A96DEE5520001BB6FE66A91DE8D
    :10056000E5520001BC6FE66A8CDEE5520001BD6F0A
    :10057000E66A87DEE5520001BE6F010EE66E81DE9F
    :10058000E5520001BF6F02010CAF03D094EC0BF0F9
    :10059000FAD7400EE66EA00EE66E000EE66E56EC42
    :1005A00006F0E552E552E552120000014B0EA06F35
    :1005B000690EA16F640EA26F740EA36F650EA46F17
    :1005C000610EA56F6D0EA66F200EA76F490EA86F66
    :1005D000530EA96F500EAA6F200EAB6F500EAC6F6A
    :1005E000720EAD6F6F0EAE6F670EAF6F200EB06FF5
    :1005F000760EB16F310EB26F2E0EB36F300EB46F38
    :100600002E0EB56F300EB66F2E0EB76F300EB86F60
    :10061000B96B4B0EBA6FBB6F02010CAF03D094ECF9
    :100620000BF0FAD7400EE66EA00EE66E000EE66EF8
    :1006300056EC06F0E552E552E5521200D9CFE6FF3E
    :10064000E1CFD9FF020EE126010E22C2DBFFDBCF94
    :10065000A0F0DF6A010EDB04DF5C0FE2E66A11DE68
    :10066000E552E66EDF28EA6AA00FE96E000EEA2284
    :10067000E552E750EF6EDF2AEDD70201235110E07B
    :10068000010EE66EFEDDE552E66E010EDB50EA6A13
    :10069000A00FE96E000EEA22E552E750EF6E0ED091
    :1006A000E66AEFDDE552E66E010EDB50EA6AA00F66
    :1006B000E96E000EEA22E552E750EF6E02010CAF40
    :1006C00003D094EC0BF0FAD7400EE66EA00EE66E67
    :1006D000000EE66E56EC06F0E552E552E552020ECB
    :1006E000E15C02E2E16AE552E16EE552E7CFD9FF53
    :1006F0001200D9CFE6FFE1CFD9FF020EE12622C2D8
    :10070000DFFF010EDB6ADF50F36E010EDBCFF4FF7B
    :10071000F350F45C0FE2010EDB50020FEA6A210F86
    :10072000E96E020EEA22EF50E66EC1DDE552010EDF
    :10073000DB2AE9D7020EE15C02E2E16AE552E16EF2
    :10074000E552E7CFD9FF12008A988A9A8A9C8A9E3E
    :100750009388939A939C939E0A0EE66E86EC0CF017
    :10076000E5528A8E0A0EE66E86EC0CF0E5528A8817
    :100770008A8AC78EC698C78C210EC66E1200F18E6B
    :1007800093688A6A9388938A939C939E0A0EE66E76
    :1007900086EC0CF0E552938E0A0EE66E86EC0CF0B9
    :1007A000E5521200C69A9388938A938C8A9E12000F
    :1007B000939E1200D9CFE6FFE1CFD9FFC69E9E9649
    :1007C000FE0EDB50C96E9EA6FED7C95000D0E55282
    :1007D000E7CFD9FF1200D9CFE6FFE1CFD9FF020E54
    :1007E000E126010EDB6ADF6A080EDF5C29E2010EFA
    :1007F000DBCFF3FFF39EF346010EF3CFDBFF815017
    :10080000100B01E0010E006E010EDBCFE7FF005080
    :10081000E712010EE7CFDBFF939AFE0EDBBE938A51
    :10082000FE0EDBCFF3FFF39EF346FE0EF3CFDBFFAE
    :10083000938C00000000939C00000000DF2AD4D7B6
    :10084000010EDB5000D0006E020EE15C02E2E16AB4
    :10085000E552E16E0050E552E7CFD9FF1200D9CF43
    :10086000E6FFE1CFD9FF040EE12622C200F0016AC3
    :1008700000BE016800C0DEFF01C0DDFF020EDB6AC2
    :10088000030EDB6A020EDBCF00F0030EDBCF01F0BC
    :10089000DECF02F0DDCF03F001500318E8AE02D046
    :1008A000033404D00250005C0350015827E2020ECA
    :1008B000E76EDBCFE9FF030EDBCFEAFFE750E92667
    :1008C000000EEA22210EE926020EEA22EF50E66E21
    :1008D00071DFE552E66E020EDBCFE9FF030EDBCFE0
    :1008E000EAFFA00EE926000EEA22E552E750EF6E7D
    :1008F000020EDB2A030E01E3DB2AC4D702010CAF90
    :1009000003D094EC0BF0FAD7400EE66EA00EE66E24
    :10091000000EE66E56EC06F0E552E552E552040E86
    :10092000E15C02E2E16AE552E16EE552E7CFD9FF10
    :100930001200D9CFE6FFE1CFD9FF040EE12622C293
    :1009400000F0016A00BE0168020E00C0DBFF030E6A
    :1009500001C0DBFF020EDBCFA0F0DE6ADD6ADECF76
    :1009600000F0DDCF01F0020EDBCF02F0030EDBCF93
    :1009700003F001500318E8AE02D0033404D0025053
    :10098000005C0350015825E2DECFE9FFDDCFEAFF2E
    :10099000020EE926000EEA22210EE926020EEA22C4
    :1009A000EF50E66E18DFE552E66EDECFE9FFDDCFF1
    :1009B000EAFF010EE926000EEA22A00EE926000E4B
    :1009C000EA22E552E750EF6EDF2A010E01E3DB2A4F
    :1009D000C6D702010CAF03D094EC0BF0FAD7400E4F
    :1009E000E66EA00EE66E000EE66E56EC06F0E552E0
    :1009F000E552E552040EE15C02E2E16AE552E16E85
    :100A0000E552E7CFD9FF1200D9CFE6FFE1CFD9FFFA
    :100A1000040EE12622C200F0016A00BE0168020E47
    :100A200000C0DBFF030E01C0DBFFDE6ADD6ADECF44
    :100A300000F0DDCF01F0020EDBCF02F0030EDBCFC2
    :100A400003F001500318E8AE02D0033404D0025082
    :100A5000005C0350015815E2DECFE9FFDDCFEAFF6D
    :100A6000020EE926000EEA22210EE926020EEA22F3
    :100A7000EF50E66E9FDEE552DF2A010E01E3DB2A2E
    :100A8000D6D7040EE15C02E2E16AE552E16EE5527E
    :100A9000E7CFD9FF1200D9CFE6FFE1CFD9FF040E8F
    :100AA000E12622C200F0016A00BE0168020E00C009
    :100AB000DBFF030E01C0DBFFDE6ADD6ADECF00F084
    :100AC000DDCF01F0020EDBCF02F0030EDBCF03F02F
    :100AD00001500318E8AE02D0033404D00250005C89
    :100AE000035001581AE2DECFE9FFDDCFEAFF020E24
    :100AF000E926000EEA22210EE926020EEA22EF5034
    :100B0000E66E69DEE552030EE66E9DEC0CF0E552F2
    :100B1000DF2A010E01E3DB2AD1D7040EE15C02E2F9
    :100B2000E16AE552E16EE552E7CFD9FF12000CDE33
    :100B3000AC0EE66E3FDEE552530EE66E3BDEE5524E
    :100B4000E66838DEE552E66835DEE5520001A06F62
    :100B500029DE02010CAF03D094EC0BF0FAD7400E63
    :100B6000E66EA00EE66E000EE66E56EC06F0E5525E
    :100B7000E552E5521200D9CFE6FFE1CFD9FF020ED0
    :100B8000E126FDDDAC0EE66E26DEE552530EE66E86
    :100B900022DEE552E6681FDEE552530EE66E1BDEEE
    :100BA000E5520001A06F02010CAF03D094EC0BF0F2
    :100BB000FAD7400EE66EA00EE66E000EE66E56EC1C
    :100BC00006F0E552E552E552AC0EE66E04DEE55263
    :100BD000800EE66E00DEE552E668FDDDE552E66871
    :100BE000FADDE552C80EE66E86EC0CF0E552640EB6
    :100BF000E66E86EC0CF0E5520001140EA06F120EAA
    :100C0000A16F02010CAF03D094EC0BF0FAD7400EA9
    :100C1000E66EA00EE66E000EE66E56EC06F0E552AD
    :100C2000E552E552500EE66ED6DDE552E66AD3DDBA
    :100C3000E552DE6ADD6ADECF00F0DDCF01F0D8904C
    :100C4000015004E6000E005C010E01580EE2DFCFF9
    :100C5000E6FFC1DDE552030EE66E9DEC0CF0E552B9
    :100C6000DF2A010E01E3DB2AE6D70001140EA06F94
    :100C7000120EA16F02010CAF03D094EC0BF0FAD767
    :100C8000400EE66EA00EE66E000EE66E56EC06F026
    :100C9000E552E552E5528CDD020EE15C02E2E16ACA
    :0C0CA000E552E16EE552E7CFD9FF1200EB
    :040CAC00D9CFE6FFB7
    :100CB000E1CFD9FFE65202010CAF02D0000E35D0D1
    :100CC000FC0EDB50400805E2400EF36EFC0EF3CF45
    :100CD000DBFFDF6AFC0EDB50DF5C19E2DF50E76E02
    :100CE000FD0EDBCFE9FFFE0EDBCFEAFFE750E92682
    :100CF000000EEA22EF50E66EDF50EA6AC00FE96E9E
    :100D0000020EEA22E552E750EF6EDF2AE3D7FC0E2F
    :100D1000DBCF0DF202010CAD03D0880E0C6F02D0B8
    :100D2000C80E0C6FFC0EDB5000D0E552E552E7CF49
    :100D3000D9FF1200D9CFE6FFE1CFD9FF0201746BD2
    :100D4000020108BF33D0FC0EDBCF00F00951D88080
    :100D5000005403E2FC0E09C2DBFF0201746BFC0EBF
    :100D6000DB50745D19E27451EA6A800FE96E020E7D
    :100D7000EA22EF50E66E7451E76EFD0EDBCFE9FF1D
    :100D8000FE0EDBCFEAFFE750E926000EEA22E5522D
    :100D9000E750EF6E742BE3D70201400E096F08ADE8
    :100DA00003D0880E086F02D0C80E086F020174517C
    :100DB00000D0E552E7CFD9FF12000201746B0F019A
    :100DC0001E0E546F0201400E096F800E006E020E5F
    :100DD000016E026A036A026A036A00C00AF201C075
    :100DE0000BF2880E086FC00E006E020E016E026AD2
    :100DF000036A026A036A00C00EF201C00FF2400EDD
    :100E00000C6F1200D9CFE6FFE1CFD9FFE65212C234
    :100E1000DFFF0201130509E1DFCFE6FFCAEC00F0B6
    :100E2000E5520201010E686F0BD0030E135D08E15D
    :100E3000DFCFE6FF8FEC00F0E5520201010E686F94
    :100E4000E552E552E7CFD9FF1200D9CFE6FFE1CF57
    :100E5000D9FFE65212C2DFFF020E0201135D09E163
    :100E6000DFCFE6FFACEC00F0E5520201010E686F47
    :100E70000BD0030E135D08E1DFCFE6FF74EC00F04A
    :100E8000E5520201010E686FE552E552E7CFD9FF46
    :100E90001200D9CFE6FFE1CFD9FF020EE1261F0EE7
    :100EA00002011015010802E1145101E070D011C2D5
    :100EB000DFFF060EDF5C29E1010E13C2DBFFDB5012
    :100EC00021080DE10201010E686FBF0E6B6F170E56
    :100ED0006C6F090E6F6F706B010E716F16D0010E83
    :100EE000DB5022080DE10201010E686FDF0E6B6F0F
    :100EF000170E6C6F2F0E6F6F706B010E716F05D038
    :100F0000010EDB50230801E100D0600E0201101534
    :100F1000200801E03CD0DF0402E174DF38D0090E84
    :100F2000DF5C05E10201010E676F8FDF30D0020E3A
    :100F3000DF5C0CE10201010E686F720E696F020E38
    :100F40006A6F010E6F6F706B716B21D00A0EDF5CE0
    :100F500006E10201010E686F13C272F218D0030E8F
    :100F6000DF5C0CE10201010E686F730E696F020E07
    :100F70006A6F010E6F6F706B716B09D00B0EDF5CC7
    :100F800006E10201010E686F12C273F200D0020E78
    :100F9000E15C02E2E16AE552E16EE552E7CFD9FF9A
    :100FA0001200D9CFE6FFE1CFD9FF020EE126800E75
    :100FB0000201105D48E113C2DFFF010E12C2DBFF28
    :100FC000DF040DE10201010E686FA40E6B6F170EB6
    :100FD0006C6F120E6F6F706B010E716F34D0020E5A
    :100FE000DF5C0DE10201010E686FB60E6B6F170E2C
    :100FF0006C6F290E6F6F706B010E716F24D0030E32
    :10100000DF5C21E10201010E686FDB5005E10E0E8D
    :101010006B6F180E6C6F0CD0010EDB0405E1120E25
    :101020006B6F180E6C6F04D03A0E6B6F180E6C6FEE
    :101030006BC2F6FF6CC2F7FF0800F5506F6F706B64
    :10104000010E716F00D0020EE15C02E2E16AE5522E
    :10105000E16EE552E7CFD9FF1200D9CFE6FFE1CF2D
    :10106000D9FF030EE1261F0E02011015DF6E196B6A
    :101070001A6BDF500DE10201010E686F645102E04E
    :10108000020119810201625102E00201198332D08A
    :10109000DF0404E10201010E686F2CD0020EDF5C58
    :1010A00029E10F0E1415E76E010EE7CFDBFF800E6E
    :1010B0001415E76E020EE7CFDBFF0201010E686F29
    :1010C000DB50080DF3506D6F6E6B000E6D27020E36
    :1010D0006E23020EDB5004E0040E6D27000E6E231B
    :1010E0006DC2E9FF6EC2EAFFEF50040B03E002019C
    :1010F000010E196F0201685108E0190E696F020EA6
    :101100006A6F020E6F6F706B716B030EE15C02E22F
    :10111000E16AE552E16EE552E7CFD9FF1200D9CF7F
    :10112000E6FFE1CFD9FF040EE1261F0E02011015E4
    :10113000DF6E010E12C2DBFFDF5011E1010EDB0496
    :101140000DE10201010E686F030E0201115D04E161
    :101150000201010E626F02D00201626B43D0020EE7
    :10116000DF5C40E10F0E1415E76E020EE7CFDBFFE8
    :10117000800E1415E76E030EE7CFDBFF010EDB5088
    :1011800031E1020EDB502EE00201010E686F020E0B
    :10119000DB50080DF3506D6F6E6B000E6D27020E65
    :1011A0006E23030EDB5004E0040E6D27000E6E2349
    :1011B000030E0201115D07E1840E6DC2E9FF6EC2EC
    :1011C000EAFFEF6E0FD0030EDB0406E16DC2E9FF0C
    :1011D0006EC2EAFFEF6A06D0880E6DC2E9FF6EC2EA
    :1011E000EAFFEF6E040EE15C02E2E16AE552E16EB5
    :1011F000E552E7CFD9FF1200D9CFE6FFE1CFD9FF03
    :10120000E65211C2DFFF600E0201101501E05CD052
    :10121000050EDF5C08E10201010E686F040E616FCC
    :1012200012C263F251D0060EDF5C02E1BADE4CD08E
    :10123000090EDF5C0EE10201010E686F12C265F259
    :10124000655103E1040E616F03D0050E616FB5DDDA
    :101250003BD0080EDF5C0CE10201010E686F650EE9
    :10126000696F020E6A6F010E6F6F706B716B2CD01D
    :10127000DF5002E1F2DE28D0DF0403E0030EDF5C82
    :1012800002E14DDF21D00A0EDF5C0FE10201010E09
    :10129000686F0201196B0201190E696F020E6A6F05
    :1012A000010E6F6F706B716B0FD00B0EDF5C04E182
    :1012B0000201010E686F08D0070EDF5C01E104D067
    :1012C0000C0EDF5C01E100D0E552E552E7CFD9FF1B
    :1012D0001200D9CFE6FFE1CFD9FF030EE1260201CC
    :1012E000080E6F5D000E705907E2010E6FC2DBFF42
    :1012F000020E70C2DBFF07D0080EF36E010EF3CFB3
    :10130000DBFF020EDB6AFC0E02010417010EDBCFCD
    :1013100000F0020EDBCF01F0000E0016030E0116E6
    :1013200001C000F0016A00500413FF0EE76E010EC9
    :10133000DBCF00F0020EDBCF01F0E7500016016AB0
    :1013400000C005F2190E006E020E016E026A036AF9
    :10135000026A036A00C006F201C007F2010EDB5008
    :1013600002016F5F020EDB50705B190E6D6F020E93
    :101370006E6F710525E1DF6ADFCF00F0010EDBCF74
    :1013800001F0020EDBCF02F00150005C000E0254AF
    :1013900016E26BC2F6FF6CC2F7FF6B2B000E6C23DC
    :1013A0000800F550E66E6DC2E9FF6EC2EAFF6D2BD4
    :1013B000000E6E23E552E750EF6EDF2ADDD723D013
    :1013C000DF6ADFCF00F0010EDBCF01F0020EDBCFD2
    :1013D00002F00150005C000E025415E269C2E9FF00
    :1013E0006AC2EAFF692B000E6A23EF50E66E6DC2F7
    :1013F000E9FF6EC2EAFF6D2B000E6E23E552E75047
    :10140000EF6EDF2ADED7030EE15C02E2E16AE5520D
    :10141000E16EE552E7CFD9FF1200D9CFE6FFE1CF69
    :10142000D9FF040EE126030E02010015000EF35051
    :101430000111E66ED950020FE96EDACFEAFFE552EC
    :10144000E750EE6EED6A020EDB5002016F27030ECD
    :10145000DB507023190E696F020E6A6FDE6ADD6A57
    :10146000DECF00F0DDCF01F0020EDBCF02F0030E85
    :10147000DBCF03F00250005C0350015818E269C250
    :10148000E9FF6AC2EAFF692B000E6A23EF50E66E9D
    :101490006DC2E9FF6EC2EAFF6D2B000E6E23E552AE
    :1014A000E750EF6EDF2A010E01E3DB2AD9D7040EE5
    :1014B000E15C02E2E16AE552E16EE552E7CFD9FF75
    :1014C00012000201049F009F0201666B686B676B4C
    :1014D0006F6B706B91DEDDDC0201685113E102017C
    :1014E000080E016F100E006E020E016E026A036A92
    :1014F000026A036A00C002F201C003F2840E006FA8
    :10150000046F4BD0020110AF31D002016F510201C4
    :10151000165D020170510201175904E216C26FF202
    :1015200017C270F2D6DE0201020E666F0201080ECB
    :10153000016F100E006E020E016E026A036A026AEB
    :10154000036A00C002F201C003F2800E006F190EA0
    :10155000006E020E016E026A036A026A036A00C02C
    :1015600006F201C007F2C80E046F17D00201010E87
    :10157000666F0201056BC80E046F080E016F190E2D
    :10158000006E020E016E026A036A026A036A00C0FC
    :1015900002F201C003F2C80E006F6498120002014B
    :1015A000666B0201080E016F100E006E020E016ED6
    :1015B000026A036A026A036A00C002F201C003F20F
    :1015C000880E006F046B1200D9CFE6FFE1CFD9FF80
    :1015D000020EE126635036E13C0E02010015E840A0
    :1015E000E8403F0BDF6E0D0EDF5C02E16ADF29D0C1
    :1015F0000201660525E111DF0201675118E0010EC5
    :1016000012C2DBFF020E0201135D07E1010EDBCF08
    :10161000E6FFBCEC00F0E5520AD0030E135D07E1D3
    :10162000010EDBCFE6FF84EC00F0E55200D00201B2
    :1016300000AD03D0880E006F02D0C80E006F01D03D
    :10164000AEDF22D0040E635C1FE10F015C510CE1A0
    :10165000040E0201615D08E112C25CFF0F015C51E2
    :1016600003E10201030E616F020E0201665D0AE1F1
    :1016700030DE020104AD03D0880E046F02D0C80E24
    :10168000046F01D08CDF00D0020EE15C02E2E16A5F
    :10169000E552E16EE552E7CFD9FF120064B606D0FD
    :1016A000646A606A64860201010E616F020161056D
    :1016B00009E16450200B06E1626A606A608060881C
    :1016C000020E616F12006492609462941200629C38
    :1016D00012000F0153A103D062DF0F015391629AF0
    :1016E0001200608462986482A194A084AB98AC9A42
    :1016F0000300AB88AC8AA09412000F015F6B626A92
    :101700009F0E5B6F7B0E606E5C6B160E536F62A656
    :1017100002D06296FCD7649842DF0201626B646B70
    :10172000656B030E616F12000201615101E139D056
    :101730006250040B04E06050040B01E0C4DF64B2AB
    :1017400030D06250010B04E06050010B01E0D5DFA6
    :101750006250100B04E06050100B01E0C2DF6250D9
    :10176000400B04E06050400B01E0B1DF6250200B01
    :1017700004E06050200B01E0ACDF6250020B04E09B
    :101780006050020B01E06292030E0201615D01E212
    :1017900008D06250080B05E06050080B02E014DF2F
    :0417A000629612003B
    :0C17A4001201000200000008D80412141A
    :1017B00001000102000109022900010100A0320913
    :1017C0000400000203000000092101010001222F92
    :1017D00000070581034000010705010340000106E1
    :1017E000A0FF0901A1010901150026FF0075089558
    :1017F0004081020901150026FF00750895409102FD
    :101800000902150026FF0075089540B102C00403C7
    :10181000090428034B00690064007400650061003E
    :101820006D00200045006C006500630074007200CC
    :101830006F006E0069006300730034034B006900A1
    :1018400064007400650061006D00200049005300D1
    :1018500050002000500072006F00670020007600EA
    :0E18600031002E0030002E0030002E0030002F
    :02186E000A0E60
    :10187000F66E000EF76E000EF86E02010900F550CC
    :101880007A6F0900F5507B6F03E17A6701D03DD094
    :101890000900F550756F0900F550766F0900F55095
    :1018A000776F09000900F550E96E0900F550EA6EFE
    :1018B000090009000900F550786F0900F550796FAB
    :1018C00009000900F6CF7CF2F7CF7DF2F8CF7EF267
    :1018D00075C2F6FF76C2F7FF77C2F8FF02017853B0
    :1018E00002E1795307E00900F550EE6E7807F8E25F
    :1018F0007907F9D77CC2F6FF7DC2F7FF7EC2F8FFF9
    :0C19000002017A07000E7B5BBFD71200CB
    :04190C00FF0EE35097
    :10191000076EEF0E01D0F30EE76EE72E8DEF0CF0A1
    :101920000C0E066EE76AE72E93EF0CF0062E92EF90
    :0A1930000CF0072E8BEF0CF01200F4
    :06193A00FF0EE350076EF2
    :10194000480E01D04C0EE76EE72EFED7E76AE72E71
    :0A195000FED7072EF7D700001200A3
    :06195A00000EF36E00EE2A
    :1019600000F0030E01D81200EA6002D0EE6AFCD744
    :0A197000F350E9601200EE6AFCD7A4
    :06197A0011EE00F021EE69
    :1019800000F0F86A059C37EC0CF003EC00F001EC79
    :0619900001F0FBD712007C
    :0219960000004F
    :020000040030CA
    :0100000030CF
    :0100010012EC
    :0100020038C5
    :010003001EDE
    :0100050008F2
    :010006008079
    :0100080003F4
    :01000900C036
    :01000A0003F2
    :01000B00E014
    :01000C0003F0
    :01000D0040B2
    :00000001FF
    
     

    Các file đính kèm:

  9. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Sơ đồ mạch:
    New Bitmap Image.JPG
     
    MuoiTDH thích bài này.
  10. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Phần mềm giao tiếp: đã hỗ trợ 24Cxx và 89S51, 89S52
    đã có phần detect 89s
    (chưa hỗ trợ đọc code và khóa chip, tại mình lười code quá)
    2.JPG
     

    Các file đính kèm:

Chia sẻ trang này