文档视界 最新最全的文档下载
当前位置:文档视界 › AT89C51串口烧写程序说明

AT89C51串口烧写程序说明

AT89C51串口烧写程序说明
AT89C51串口烧写程序说明

一A T89C51ED2程序烧写软件使用说明:

1、安装JRE_Flip_Installer_3_3_4.exe文件(下载链接:

https://www.docsj.com/doc/4e9616023.html,/dyn/products/tools_card.asp?tool_id=3886);

下载下图中所示文件(点击前面光盘符号即可下载):

2、将下载线的串口插入电脑串口,USB口连接至电脑的USB口,另一插头插

入键盘CN1,另外两个接线RST和PSEN对应接入单元片机的4号脚和26号脚;

3、打开Flip 3.3.4.exe文件,配置参数,点Device—Select,选AT89C51ED2;

4、点Settings—Preferences,按下图设置:

5、点面板上第二排USB形图标,再选择RS232,选择正确的COM口,若只有

一个则为COM1,波特率(Raudrate)不用修改,均可,点Connect,正常情况下此时此对话框消失,主界面点亮,若显示time out,则连接失败,请检查连线,或者更换电脑再试。

6、将主界面右侧Hardware Byte一行X2前方框选中;中间FLASH Buffer

Information保证选择的是flash区,而不是EEPROM。

7、点击主界面第二排倒数第三个图标,载入hex文件,或者点File—Load Hex

Files,也可载入hex文件。

8、左侧Operations Flow 下面四项前方框均选中,点Run,擦除和烧写、较验需

要一定的时间,完成后四项内容前指示灯为绿色,且在下方显示Verify Pass。

9、完成后点面板上第二排USB形图标,再选择RS232,再弹出的对话框中点

disconnect,断开连接。

二单片机通信若是RS232串口,则按以上说明即可。若通信为RS485,则要通过一个RS232转RS485转换头,同时硬件做相应更改,具体过程如下:

1 把RS232线的4,7两根线剪断,靠近转换头端口的4,7线应接一个5V电源单独供电

2 从电脑引过来的4,7线分别接单片机的RST和PSEN引脚。

3把转换头拆开,MAX232芯片的发送引脚接在单片机的接收引脚,接收引脚接在单片机的发送引脚。

4 硬件改造完了之后,对软件的操作按“AT89C51ED2程序烧写软件使用说明”执行。

51单片机与PC机通信资料

《专业综合实习报告》 专业:电子信息工程 年级:2013级 指导教师: 学生:

目录 一:实验项目名称 二:前言 三:项目内容及要求 四:串口通信原理 五:设计思路 5.1虚拟串口的设置 5.2下位机电路和程序设计 5.3串口通信仿真 六:电路原理框图 七:相关硬件及配套软件 7.1 AT89C51器件简介 7.2 COMPIN简介 7.3 MAX232器件简介 7.4友善串口调试助手 7.5 虚拟串口软件Virtual Serial Port Driver 6.9八:程序设计 九:proteus仿真调试 十:总结 十一:参考文献 一:实验项目名称:

基于51单片机的单片机与PC机通信 二:前言 在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。 目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。 为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。 用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。 串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式

51串口通信程序(带详细注释)

51串口通信程序(带详细注释) #include#include //后面有一个比较函数#define uchar unsigned char#define uint unsigned intbit UART_Flag=0; //定义串口接收标志位 uchar str[50]; //定义一数组uchar length=0; //数组长度从0 开始void init() //初 始化uart{ TMOD=0X20; //定时器1 定时器方式工作模式2,可自动重载的8 位计数器常把定时/计数器1 以模式2 作为串行口波特率发生器 SCON=0X50; //选择工作模式1 使能接收,允许发送,允许接收 EA=1; //开总中断 ES=1; //打开串口中断ET1=0; //打开定时器中断 PCON=0X80; //8 位自动重载,波特率加倍 TH1=0XFF; //用22.1184 mhz 波特率 TL1=0XFF;TR1=1; //打开中时器 }void UART_Putch(uchar dat) //输出一个字符{SBUF=dat; //把数据送给sbuf 缓 存器中 while(TI!=1);//发送标志位TI 如果发送了为1,没发送为0,没发送等待,到 了退出循环 TI=0; //到了,TI 清为0 }void init1() interrupt 4 //uart 中断,4 为串口中断{ if(RI==1) //收到数据{ uchar m=SBUF; //m 为计算机发送给串口的数据,例,open //总体思想是,计算 机通知串口,我要发数据了RI=0; //收到清0 if(m==) //判断m 这位数据有无{ UART_Putch(); //回车UART_Putch(); // 换行str[length]=; //数据最后位加0 标 志位表示发完了数据UART_Flag=1; // 传完标志位} else if(m==) { } else if(m==)//b表退格//下面几句表删锄{ UART_Putch();

2812串口烧写Flash方法

第一步:安装CCS3.1或更高版本下面以3.3为例 第二步:安装串口编程算法项目文件插件:sdf28xx_v3_3_serial(不同CCS对应不同版本插件,此插件与CCS3.3对应),安装在CCS根目录下 第三步:安装SdFlashV1.60或更高版本,安装在CCS根目录下 第四步:编辑sdopts.cfg文件,此文件存放在你所安装的windows的System32目录下 (1)用记事本的方式打开sdopts.cfg (2)在"# End of sdopts.cfg”前加入如下文本: [EmulatorId=C1] EmuPortAddr=0xC1 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH [EmulatorId=C2] EmuPortAddr=0xC2 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH [EmulatorId=C3] EmuPortAddr=0xC3 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH [EmulatorId=C4] EmuPortAddr=0xC4 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH 第五步:打开SDFlash,路径为…\CCStudio_v3.3\specdig\sdflash\bin下(在打开CCS的前提下,还需打开要加载的工程,SDFlash.exe才能打开) 第六步:打开F2812SerialFlash.sdp工程 路径为…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812 打开Project-setting菜单,分别对target、erase、Programming、Verify进行设置Target:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F281xRS232Flash.dll 若使用PC的COM1则选择仿真器为C1,COM2则选择C2 Erase:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out Programming: (1)…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out (2)flash data 载入要烧写的文件工程最好放在…\CCStudio_v3.3\MyProjects下,避免不必要的麻烦 Verify:…\CCStudio_v3.3\sdflash\myprojects\sdf28xx_v3_3_serial\f2812\F2812SerialFlash.out 其余不用改动,按默认值就可以。

c语言串口通信范例

一个c语言的串口通信程序范例 分类:技术笔记 标签: c语言 串口通信 通信程序 it 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include #include #include #include #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20 static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)();

static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); f=1152/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High); Data=(Data-5)|((Stop-1)*4); if(Parity==2) Data=Data|0x18; else if(Parity==1) Data=Data|0x8; outp(ComPortAddr+3,Data); outp(ComPortAddr+4,0x0a);

汇编语言实现串口通信(PC和单片机间)教学文案

8.用C语言或汇编语言实现串口通信(PC和单片机间) 上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS-232或者RS-485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示 1 硬件电路的设计 MCS-51单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MODEM方式,简单三连线结构。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51 机之间能可靠地进行串行通信,需要用电平转换芯片,可以采用MAXIM公司生产的专用芯片MAX232进行转换。电路如图1所示。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

总体设计按照整体设计思路方案绘制原理图如下所示: 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信, 1上位PC机与下位单片机异步串行通信的通信协议

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; } Love is not a maybe thing. You know when you love someone.

程序烧录工艺

程序烧录工艺 一、目的:规范模块烧录操作程序,使烧录过程标准化。 二、烧录设备: 硬件 计算机一台 烧录驱动板一块 计算机与烧录驱动板连线一根 烧录线一根 软件 USB转串口驱动软件(已安装)一套 烧录程序(已安装)一套 模块程序 三、烧录过程 1.连接方法如图1所示 图1 2.打开计算机,使计算机处于正常工作状态,用鼠标双击桌面DIR K150 烧录程序图标,运行烧录程序; 3.进入图2界面

图2 在红圈内显示具体COM口序号时,连接正常,如果红圈内显示COMX并弹出图3窗口时,应检查连线是否正常牢固连接,USB转串口驱动软件有没有运行,检查完毕,点击“文件”→“选择串口”→“输入串口编号”→“x”→点击“ok”,如图4,当界面返回到图2状态,红圈内出现串口数值时,进入下一道工序。 图3

图4 4.载入模块程序,操作方法如图5所示。点击“载入”→“查找范围”→“模块程序”→“打开”,进入图6界面。 图5

图6 5.模式设置:点击“设置”→在下拉窗口中选择“ICSP模式(I)”,界 面如图7所示。 图7 6.配置位设置:点击图8红圈“配置位”→弹出图9窗口,将掉电监测选 择为“开”如图10→点击“ok”,返回图7界面。

图8 7.将烧录线与模块相连,正确方法如图1所示,点击“”→ 选择弹出窗口图11中的“擦除”→并点击“ok”→点击弹出窗口图 12中的“”→点击弹出窗口图13中的“ok”返回图7界面。 图9 图10

图11 图12 图13 8.点击“”→选择弹出窗口图13中的“”→点击 新弹出窗口图14中的“”→进入图15中的界面,等待10秒左右,当弹出图16界面时,点击“”返回图7界面。 9.该模块板程序烧录完成,去除模块板连线,放入合格品箱内,烧录不成 功的,做好不合格标记,放在不合格处,维修后,重新烧录。 敏旺科技品质保证部 2014-4-21

c语言串口通信范例

c语言串口通信范例 This manuscript was revised by the office on December 22, 2012

一个c语言的串口通信程序范例 标签:分类: 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include <> #include <> #include <> #include <> #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20

static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100);

51单片机usart通信程序(有CRC校验)

#include #include #include #define uchar unsigned char #define uint unsigned int //uchar const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar p[]={0x01,0x03,0x25,0x23,0x00,0x01}; /* CRC 高位字节值表*/ uchar const crchi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0/**/, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; /* CRC低位字节值表*/ uchar const crclo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06/**/, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.docsj.com/doc/4e9616023.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

F28335 C2Prog串口烧写

C2Prog串口烧写TMS320F28335 Flash实验 一、实验准备 1、必备硬件:F28335开发板(可切换到SCI-A Boot模式)、与PC机相连 的串口、PC机 2、必备软件:C2Prog V1.4或V1.5、chromeinstall-6u31.exe、hex2000、 CCS3.3或CCS4.X 3、建议实验前先对硬件进行测试:通过仿真器烧写SCIA的串口程序,通 过串口助手确认开发板串口通信正常。 二、实验步骤 1、使用CCS3.3或CCS4编译程序(注意CMD文件应为烧写flash),生成.out 文件。 2、把HEX2000.exe和要转化的.out 文件放在同一个文件夹内。 3、在WIN7系统中,以资源管理器的方式打开该文件夹,在该文件夹的空 白处按住shift键右击,然后选择“在此处打开命令窗口(W)”弹出命 令窗口: 4、hex2000 -romwidth 16 -memwidth 16 -i -o xx.hex xx.out 中修改xx.hex xx.out和.out、目标.hex文件名称相同,复制粘贴到命 令窗口已有语句的后面,按回车键,生成.hex目标文件。

5、若您使用的是CCS4的编译环境,可以更加快捷的生成.hex文件。 右击工程文件,打开build properties对话框,在Build Steps中Apply Predefined Step 中选择Create flash image:Intel-HEX(如下图所示),单击OK,在以后的编译该工程中,会自动生成更新.hex文件。 6、参考下图,将开发板跳线切换至SCI-A Boot 模式,连接PC机串口和开 发板串口,给开发板上电,如已经上电要按一下复位按钮,使DSP进入SCI-A boot模式:

【最新编排】基于51单片机的DHT11串口通讯

//****************************************************************// // DHT 使用范例 //单片机 AT89S5 或 STC89C5 RC // 功能 串口发送温湿度数据波特率 9600 //硬件连接 P .0口为通讯口连接DHT ,DHT 地电源和地连接单片机地 电源和地 单片机串口加MAX 3 连接电脑 // 公司 济南联诚创发科技有限公司 //****************************************************************// #include #include // typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */ typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */ typedef unsigned int U 6; /* defined for unsigned 6-bits integer variable 无符号 6位整型变量 */ typedef signed int S 6; /* defined for signed 6-bits integer variable 有符号 6位整型变量 */ typedef unsigned long U3 ; /* defined for unsigned 3 -bits integer variable 无符号3 位整型变量 */ typedef signed long S3 ; /* defined for signed 3 -bits integer variable 有符号3 位整型变量 */ typedef float F3 ; /* single precision floating point variable (3 bits) 单精度浮点数 3 位长度 */ typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数 64位长度 */ // #define uchar unsigned char #define uint unsigned int #define Data_0_time 4 //----------------------------------------------// //----------------IO口定义区--------------------// //----------------------------------------------// sbit P _0 = P ^0 ; sbit P _ = P ^ ; sbit P _ = P ^ ; sbit P _3 = P ^3 ;

51串口通信协议(新型篇)

51串口通信协议(新型篇) C51编程:这是网友牛毅编的一个C51串口通讯程序! //PC读MCU指令结构:(中断方式,ASCII码表示) //帧:帧头标志|帧类型|器件地址|启始地址|长度n|效验和|帧尾标志 //值: 'n' 'y'| 'r' | 0x01 | x | x | x |0x13 0x10 //字节数: 2 | 1 | 1 | 1 | 1 | 1 | 2 //求和: ///////////////////////////////////////////////////////////////////// //公司名称:*** //模块名:protocol.c //创建者:牛毅 //修改者: //功能描述:中断方式:本程序为mcu的串口通讯提供(贞结构)函数接口,包括具体协议部分 //其他说明:只提供对A T89c51具体硬件的可靠访问接口 //版本:1.0 //信息:QQ 75011221 ///////////////////////////////////////////////////////////////////// #include #include //预定义 //帧 #define F_ST1 0x6e //帧头标志n #define F_ST2 0x79 //帧头标志y #define F_R 0x72 //帧类型读r #define F_W 0x77 //帧类型写w #define F_D 0x64 //帧类型数据帧d #define F_B 0x62 //帧类型写回应帧b #define F_C 0x63 //帧类型重发命令帧c #define F_Q 0x71 //帧类型放弃帧q #define F_ADDR 0x31 //器件地址0-9 #define F_END 0x7a //帧尾标志z #define F_SPACE 0x30 //空标志0 #define F_ERR1 0x31 //错误标志1,flagerr 1 #define F_ERR2 0x32 //错误标志2 2 //常数 #define S_MAXBUF 16 //接收/发送数据的最大缓存量 #define FIELD_MAXBUF 48 //最小场缓存,可以大于48字节,因为协议是以20字节为

AT89C51串口烧写程序说明

一A T89C51ED2程序烧写软件使用说明: 1、安装JRE_Flip_Installer_3_3_4.exe文件(下载链接: https://www.docsj.com/doc/4e9616023.html,/dyn/products/tools_card.asp?tool_id=3886); 下载下图中所示文件(点击前面光盘符号即可下载): 2、将下载线的串口插入电脑串口,USB口连接至电脑的USB口,另一插头插 入键盘CN1,另外两个接线RST和PSEN对应接入单元片机的4号脚和26号脚; 3、打开Flip 3.3.4.exe文件,配置参数,点Device—Select,选AT89C51ED2; 4、点Settings—Preferences,按下图设置: 5、点面板上第二排USB形图标,再选择RS232,选择正确的COM口,若只有 一个则为COM1,波特率(Raudrate)不用修改,均可,点Connect,正常情况下此时此对话框消失,主界面点亮,若显示time out,则连接失败,请检查连线,或者更换电脑再试。 6、将主界面右侧Hardware Byte一行X2前方框选中;中间FLASH Buffer Information保证选择的是flash区,而不是EEPROM。 7、点击主界面第二排倒数第三个图标,载入hex文件,或者点File—Load Hex Files,也可载入hex文件。 8、左侧Operations Flow 下面四项前方框均选中,点Run,擦除和烧写、较验需 要一定的时间,完成后四项内容前指示灯为绿色,且在下方显示Verify Pass。 9、完成后点面板上第二排USB形图标,再选择RS232,再弹出的对话框中点 disconnect,断开连接。

DSP28015串口烧写步骤与所需文件

DSP28015 串口烧写步骤 一.串口烧写步骤 1.安装CCS3.3软件 2.安装串口编程算法项目文件:sdf28xx_v3_0_serial 详情请阅读文档:SDFlash_Serial_RefGuide_v3_1.pdf文件。 3.在算法项目文件中设置好相应的时钟频率,生成.out文件 1)在CCS中导入F28015SerialFlash工程文件 文件地址: C:\CCStudio_v3.3\specdig\sdflash3.1\mydrivers\DSP280x_v3_1\DSP280x_serial\build\F28x xSerialFlash 2)设置好你的目标板相应的时钟频率 在Flash280x_API_Config.h中选择相应的PLL时钟: #define CPU_RATE 10.000L // for a 100MHz CPU clock speed (SYSCLKOUT) 【一般选择默认值就可以了】 3)保存并编译项目文件,生成F28015SerialFlash.out文件,文件存放在: C:\CCStudio_v3.3\specdig\sdflash3.1\mydrivers\DSP280x_v3_1\DSP280x_serial\bin 4.安装SdFlashV1.60或更高版本 5.编辑sdopts.cfg文件,此文件在你所安装的windows的system32目录下 1)用记事本的方式打开sdopts.cfg。 2)在“#End of sdopts.cfg”前加入如下文本: [EmulatorId=C1] EmuPortAddr=0xC1 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH [EmulatorId=C2] EmuPortAddr=0xC2 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH [EmulatorId=C3] EmuPortAddr=0xC3 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH [EmulatorId=C4] EmuPortAddr=0xC4 EmuPortMode=RS232 EmuProductName=SERIAL_FLASH

用C编写的RS232串口通信程序

void main() { delayms(100); init(); //初始化系统 delayms(100); init_wdt(); //初始化看门狗 while(1) { while(!RI_0) //是否收到数据 { clr_wdt(); } RI_0=0; //清除接收中断标志 buffer=S0BUF; if(buffer==0x5a) //检测祯头0 start0=1; if(buffer==0x54) //检测祯头1 start1=1; if(buffer==0x5a) //检测祯尾0 end0=1; if(buffer==0xfe) //检测祯尾1 end1=1; if((start0==1)&(start1==1)) { buff[i]=buffer; //从祯头1开始存储数据 i++; } if((end0==1)&(end1==1)) //是否已经接收祯尾 { count=i; //数据长度为count个 i=1; if((buff[2]==0x03)&(count==107)) //是否422指令 { buff[0]=0x5a; //重填祯头0 buff[count-4]=0; //校验和清零 for(k=2;k<(count-4);k++) //计算校验和 { buff[count-4]+=buff[k]; } for(k=0;k

S0BUF=buff[k]; while(!TI_0); //等待发送完成 TI_0=0; //清除发送中断标志 } reset(); } else if((buff[2]==0x05)&(count==7)) //是否AD测试指令 { sendad(); reset(); } else if((buff[2]==0x18)&(count==7)) //是否发送时序信号指令 { sendpaulse(); reset(); } else //如果接收错误,则恢复各标志位为初始状态以便下次接收 { reset(); } } } } void reset() { start0=0; //祯头祯尾标志位清零 start1=0; end0=0; end1=0; for(k=0;k

串口通信测试方法

串口通信测试方法 1 关于串口通信的一些知识: RS-232C是目前最常用的串行接口标准,用来实现计算机和计算机之间、计算机和外设之间的数据通信。 在PC机系统中都装有异步通信适配器,利用它可以实现异步串行通信。而且MCS-51单片机本身具有一个全双工的串行接口,因此只要配以电平转换的驱动电路、隔离电路就可以组成一个简单可行的通信接口。 由于MCS-51单片机的输入和输出电平为TTL电平,而PC机配置的是RS-232C 标准串行接口,二者电气规范不一致,因此要完成PC机与单片机的数据通信,必须进行电平转换。 注明:3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ~-15V 逻辑0:+3~+15V 所以与单片机连接时常常需要加入电平转换芯片: 2 实现串口通信的三个步骤: (1)硬件连接 51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 使用MAX232串口通信电路图(9孔串口接头) (2)串行通信程序设计 ①通信协议的使用 通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种

约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC 机与单片机之间进行通信,在设计过程中,有如下约定:

bootloader和串口烧写

条件: STM8用串口烧码是利用了BootLoader的功能,所以要想用串口烧码就必须让STM8运行BootLoader 问题: 目前网上的贴有不完美的地方,一个新片,ROP(就是读保护)是使能的, 而BootLoader是关闭的。由于新片用户有一次机会用串口烧一次码,于是网上流传一段程序,让用户第一次烧这个码,将BootLoader使能,然后声称今后就可以一直用串口烧了。但仔细看手册就会知道,STM8今后(不是新片第一次)运行BootLoader的必要条件是一定要把ROP关掉,否则无论你使能BootLoader没有,STM8均不会去运行BootLoader。 修改ROP的方法: 要想关掉ROP,必须将ROP写成0xAA,而写ROP必须用SWIM口写,用串口是修改不了ROP的。用SWIN口就逃不开买ST-Link或其他遵守SWIM 协议的编程器。于是问题变成要想用串口烧码就必须用一次ST-Link,请问有了ST-Link何必再用串口烧码?用户希望用串口开发就是希望不买ST-Link吧? 学习: 我将BootLoadr运行机制翻译如下(见手册UM0560的Figure 1): STM8上电后先查8000H的内容如果8000H的内容是82H或ACH,表示已有程序也就是烧过码了,这时如果BootLoader没使能,程序就跳到8000H,开始运行你的程序,这种情况无法用串口烧码。 如果BootLoader使能了,STM8就去查看ROP,如果ROP是使能的,也跳到8000H,开始运行你的程序,这种情况还是无法用串口烧码。 如果ROP关闭,STM8才跳到BootLoader,你可在一秒钟内用串口进入烧写程序。 另外一种可能是上电查8000H的内容是空的,或者不是82H或ACH,这时UM0560的描述有点矛盾,Figure 1说还是要查ROP,然后决定运不运行BootLoader,而Table 1说是只要内容是空的,或者不是82H或ACH,STM8就会运行BootLoader(我一直怀疑ST的手册都是印度人写的,语法很怪,描述模棱两可的地方很多)。 但我觉得这两种方式,对我们用串口烧玛都没有意义,我们用串口烧码来开发,就是把前面的内容修改为新的内容,怎么可能每次都是空的呢?难道烧前先全片擦除?但全片擦除也要先进入BootLoader啊?所以空片进不进BootLoader对我们开发没有意义。 解决的方法: 实际上,网上流传的那段程序是有缺陷的,烧它无法做到真正的不买ST-Link就可用串口来开发STM8,你必须先用ST-Link将ROP关掉(写入0xAA)。实际上参考UM0560附录A的说明,在自己的软件最前面加一段跳转到BootLoader的程序就可以了。使不使能BootLoader关不关闭ROP都没所谓,只要抓住新片可用串口烧一次码的机会,将这样的码烧入就可以了。 建议: 可用一个管脚来控制,上电时STM8先查这个脚的电平,如果为低电平就跳到BootLoader,这不会浪费STM8的脚,因为这个脚只在上电时查看一次,上电后你还是可以拿他做输出(做输入不好),你的系统不可能一个输出脚都没有吧?这种方法上电快,不会造成上电延迟。实在不想拿出一个脚来做上电[判断,也可用另一个方法:记数,让程序在上电后跳到BootLoader一次或两次,因BootLoader每次会等一秒钟,所以这种方法会造成每次开机都要延迟一段时间,但不需要去将一个什么脚接地,连RESET开关都不需要,这种方法对连续烧码十分方便。 正式出产品时,可将这段码放在最前面,但会不会造成容易被破_解,就需要大家讨论了。UM0560的建议是希望加个密码什么的验证一下,防止有心人任意进入BootLoader,在你的码里加个木马,读出你的内容.

相关文档