串行编程器源程序(Keil C语言)//FID=01:AT89C2051系列编程器//实现编程的读,写,擦等细节//AT89C2051的特殊处:给XTAL一个脉冲,地址计数加1;P1的引脚排列与AT89C51相反,需要用函数转换#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引脚排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//编程前的准备工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//编程结束后的工作,设置合适的引脚电平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//从P0口获得数据{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//转换并设置P0口的数据{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//读特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//写器件{//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //写一个单元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效验:循环读,直到读出与写入的数相同 { nTimeOut++; if(nTimeOut>1000)//超时了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//读器件{ BYTE Data;//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //读一个单元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return Data;} void Lock01()//写锁定位{ InitPro01();//先设置成编程状态//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 if(ComBuf[2]>=1)//ComBuf[2]为锁定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//设置pw中的函数指针,让主程序可以调用上面的函数{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上传时间: 2013-11-12
上传用户:gut1234567
针对实时型相机对系统小型化、通用化及数据高速率可靠传输的需求,文中在研究高速串行器/解串器(SerDes)器件TLK2711工作原理的基础上,提出了高速串行全双工通信协议总体设计方案。文章以TLK2711为物理层、FPGA为链路层设计了高速串行全双工通信协议,对协议的实现进行了详细的描述。协议的在定制中力求做到了最简化,为上层用户提供简单的数据接口。试验中通过两块电路板的联调,完成了数据率为2.5Gbps的点对点高速传输,采用发送伪随机码测试,系统工作2小时,所测误码率小于10-12。
上传时间: 2014-12-28
上传用户:wff
针对目前工控领域,现场数据采集分散管理的不足,该文采用了Modbus RTU通信协议和串口通信技术,设计了主从式通信的采集系统,实现对各个现场的远程集中监控,即集散控制系统。详细阐述了在C#环境下基于Modbus RTU通信协议的上位机和DAM-3504系列三相多功能电量采集模块经过GPRS网络的主从式串行通信的实现。经过现场测试验证,表明该方案运行稳定,操作简便,能够对采集的数据进行实时显示,解决了对现场的统一监控和分布式管理的问题,为工业控制现场提供了一套可行性方案。
上传时间: 2013-10-29
上传用户:88mao
计算机中传输数据的方式有两种:并行方式和串行方式。在IBM PC机的汇编语言中,对串口的编程方式有DOS和BIOS 系统功能中断调用。本次实验设计采用BIOS系统功能中断调用,即通过INT 14H,调用ROM BIOS串口通信例行程序。
上传时间: 2013-12-18
上传用户:ynzfm
通过CPLD将8位并行数据转换为串行数据并可以采用I2C方式与其他器件连接,可以用于MCU需要与提供I2C接口器件通信的场合。
上传时间: 2015-04-10
上传用户:363186
在VC++中利用ActiveX控件开发串行通信程序 用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程 一个单片机串行数据采集/传输模块的设计
上传时间: 2015-04-21
上传用户:Miyuki
本串行通信程序利用汇编语言通过BIOS中断调用和DOS功能调用实现PC机双机串行通信。其中,上位机和下位机串行口均为辅串口COM2(口地址为2FXH),对外用9针连接器与令一台PC机连接;BIOS通过“INT 14H”4个中断服务子程序,分别完成串口初始化编程、发送一帧数据、接受一帧数据以及测试通信线状态。本程序分为PC机串口自动测试程序(目的是测试串口好坏)和PC机全双工双机通信程序两个部分。
上传时间: 2015-05-01
上传用户:nairui21
[美]Joe Campbell 著 徐国定 廖卫东 张庆 译 吴洪来 赵军 审校 清华大学出版社 第一部分 串行通信基础 第l章 ASCII字符集 第2章 异步通信技术基础 第3章 错误及错误检测 第4章 信息传输 第5章 调制解调器及其控制 第6章 UART:一个概念上的模型 第7章 实际的UART 第8章 baseline灵巧型调制解调器 第9章 智能调制解调器命令 第10章 协议调制解调器 第ll章 传真机 第二部分 用C语言编写异步通信程序 第12章 设计一个基本的串行I/O库 第13章 程序的可移植性 第14章 波特率和数据格式函数 第15章 RS—232输入控制 第16章 流控制和SIO管理 第17章 格式输出 第18章 格式输入 第19章 中断I/O导论 第20章 中断子处理程序 第2l章 灵巧型调制解调器程序设计 第22章 XMODEM文件传送 第23章 循环冗余校验CRC计算 第24章 Group3传真图象的编码和解码
上传时间: 2015-07-05
上传用户:asdfasdfd
基于VB的GPS与计算机串行通信,含有部分VB程序,以及GPS数据格式,卫星定位与导航
上传时间: 2014-12-07
上传用户:zm7516678
通用串行总线USB(Universal Serial Bus)是一种新型的微机总线接口规范。随着客户对系统数据采集速度要求的不断提高,USB以其使用方便、易于扩展、速度快等优点而越来越多的应用于数据采集系统中。本文介绍了一种基于USB总线的数据采集系统的设计方法,采用PHILIPS公司的USB接口芯片PDIUSBD12与单片机AT89C51进行通信,并和PC机通信而编制出友善的设备应用程序。该系统用传统的USB总线取代了RS232串行总线,通过对USB协议和设备构架的充分理解,对以单片机89C51和USB接口芯片PDIUSBD12为主的数据采集系统进行了硬件设计和软件编程,并在此设计的基础上给出相应的原理图。硬件设计主要解决的是PDIUSBD12和ADC0809与单片机之
上传时间: 2014-11-30
上传用户:我们的船长