C8051F单片机在Keil与新华龙电子的烧录配置教程

5星 · 超过95%的资源 需积分: 48 39 下载量 103 浏览量 更新于2024-09-10 4 收藏 481KB DOC 举报
"C8051F在KEIL(UV4)和新华龙电子下的烧录配置" 本文将详细介绍如何在KEIL(UV4)集成开发环境中配置C8051F系列单片机的开发环境,并在新华龙电子的官方烧写软件下进行烧录操作。C8051F是一款高性能的微控制器,常用于嵌入式系统设计。在KEIL中配置C8051F的开发环境,可以方便地进行程序编写、编译和调试。 首先,要使用KEIL C51开发C8051F的程序,需要安装C8051F系列的调试驱动程序,该驱动可以从Silabs(Silicon Laboratories)官方网站下载。安装完成后,打开一个C51工程,例如开发板工程的Source Code\LED_Flow\project。接下来,进行以下配置: 1. 在Project菜单下选择Option for Target,进入项目选项设置。 2. 在Debug选项卡中,选择相应的调试器。如果未找到选项,需要将SiC8051F.dll文件放置在"C51\BIN"目录下,并在TOOLS文件中添加对应条目。 3. 在Utilities选项中选择FLASH烧写工具,若无此选项,需将新华龙电子提供的"USBHID.dll"添加到"UV4"目录。 完成上述步骤后,可以通过Rebuild all target files重新编译工程,并通过Start/Stop Debug Session启动调试。当一切正常时,会弹出烧写FLASH的窗口,可以进行烧录操作。 除了KEIL环境,还可以使用新华龙电子的官方烧写软件进行程序烧录,主要步骤包括: 1. 安装u-ec6中文下载程序。 2. 配置烧录端口:在菜单栏选择相应选项,确保调试接口类型为C2,并选择USB系列。 3. 连接单片机,加载HEX格式的烧录文件,按照软件提示进行烧录操作。 这两个方法都是C8051F单片机开发和烧录的有效途径,根据个人喜好和实际需求选择适合的工具。通过熟练掌握这些步骤,开发者可以更高效地进行C8051F单片机的应用开发和程序部署。
2010-03-18 上传
2008-01-11 | C8051F120里我常用的数据包通信程序(自己编写的) /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @ 串行传送收/发子程序 @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ /*=========================================================================== 函数名:Senonedata_rs485(uchar x) 功能:向485口发送一字节数据 输入:发送变量X 输出:无 其他说明:无 ============================================================================*/ void Senonedata_rs485(uchar x) { SFRPAGE=0; TI0=0; SBUF0=x; while(TI0==0); TI0=0; // delay_us(100); //延时100us } /*------------------------------------------------------------------ 函数名:Sendatabag_rs485(pcs,addr_rev,command) 功能: 向RS485口发送个数据包 数据包格式: 0xaa,0xaa,lengh,addr_rev,command,data0,data1....datan,crc 其中:pcs:要发送有效数据个数 addr_rev:(接收)对方地址 commadn:指令 0xaa,0xaa:校验引头 lengh:数据包总数据长度(数据包全部字节数) addr_sen:发送方地址 addr_rev:接收方地址 command:指令 uart0sen_Buffer[256]:串行口发送256个数据缓存 crc:是在CRC前的所有已发送数据的累加和 其他说明:无 ------------------------------------------------------------------*/ void sendatabag_rs485(uchar pcs,addr_rev,command) { uchar i,x,y; uchar lengh; uchar crc; //使MAX485处于发送状态 SFRPAGE=0x0f; RENTEN_RS485=1; // crc=0; lengh=pcs+6; //发送0xaa crc+=0xaa; Senonedata_rs485(0xaa); //发送0xaa crc+=0xaa; Senonedata_rs485(0xaa); //发送lengh数据包总长度(包含由0xaa~crc) crc+=lengh; Senonedata_rs485(lengh); //发送addr_rev crc+=addr_rev; Senonedata_rs485(addr_rev); //发送command指令 crc+=command; Senonedata_rs485(command); //发送有效数据 if(pcs!=0) { i=lengh-6; i--; for(x=0;x5) { m=Count_Rev-6; if(Count_Rev<Lengh) { Receive_Buffer[m]=data_rev; return; } if(Count_Rev==Lengh) { Crc=data_rev; // crc=0xaa+0xaa+Lengh+Addrev+Command; j=Lengh-6; //6个非有效数据 字"0xaa+0xaa+Lengh+Addrev+Command+crc" for(i=0;i<j;i++) { crc+=Receive_Buffer[i]; } //累加校验字比较 if(Crc==crc) { NewReceive_flag=1; //数据包有效 } else NewReceive_flag=0; //数据包无效 //0xaa标志位清0 Two0xaaOK_flag=0; Two0xaa_Count=0; } } } }