请问怎样在window应用程序中包含(使用)c51编译器?我们做了个应用程序,取数据后生成了两个.h文件和一个.c文件。之后把这些文件放到c51编译器中生成.bin文件,再把.bin文件烧录到芯片中,再把芯片放到控制板中进行控制。现在想在window应用程序就生成.bin文件,再烧录到芯片或用程式转换后直接通过RS232直接把数据输入到控制板中。
    请各位大大多多帮忙,先谢了!!

解决方案 »

  1.   

    1)你用VC的编译器肯定无法编译c51程序。里面的变量都是不同类型的,VC下一般的用int, long型,而c51就用xdata int, data long等等,所以这一步你根本别想了。2)如果你希望你的芯片能够自动升级,需要满足以下几个条件
       a)带有可自动升级功能
       b)写升级程序
      

  2.   

    3)开始烧芯片的时候把升级程序烧进去,一定要烧到升级区域,注意,那里的地址也是从0开始的,而不是从他的位置开始的。
    现在的芯片一般都带有4k的额外的供升级用的flash,可以简单的这样写
    用一个组合码来判断需要升级,比如说0x8b这个字符,键盘是敲不进去的,如果后面再跟着一个'u'字符,可以判断单片机升级。1)//假设读取串口字符的函数为getc()。
    unsigned char data c, c1;c = getc();
    if( 0x8b == c )
    {
         c1 = getc();
         if( 'u' == c1 )
         {
             soft_upgrade()
         }
    }2)写升级程序,目的就是远程跳转到升级代码,参考芯片手册,举例如下void
    soft_upgrade()
    {
    EA = 0; CHPENR = 0x87; //enable write attribute of CHPCON register
    CHPENR = 0x59;
    CHPCON = 0x03; //enter In-sys programming mode TCON = 0; //setup timer 0
    IP = 0;
    IE = 0x82;
    TH0 = 0x80;
    TL0 = 0x00;
    TMOD = 0x01;
    TCON = 0x10; PCON = 0x01; //enter system idle mode /*
     * Now, waitting for the next interrupt of timer 0
     * which will cause the chip enter In-sys Programming mode
     */
    }3)升级区域代码
    重新设置串口
    擦除芯片
    接收数据
    校验
    加密
      

  3.   

    最后一步是写一个自动升级程序,过程就是打开一个bin文件,向串口写数据,并且根据串口的返回数据进行操作。用mscomm控件或者api都行。