串行编程器源程序(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
串行下载线的原理图 SI Prog - Serial Interface for PonyProg
上传时间: 2013-11-09
上传用户:zhishenglu
带I2C串行CMOS EEPROM、精密复位控制器和看门狗定时器的监控电路 特性 看门狗监控SDA信号 (CAT1161) 兼容400KHz 的I2C总线 操作电压范围为2.7V~6.0V 低功耗CMOS 技术 16 字节的页写缓冲区 内置误写保护电路-Vcc锁定-写保护管脚WP 复位高电平或低电平有效-精确的电源电压监控-支持5V,3.3V 和3V 的系统-5个复位门槛电压可供选择 1,000,000个编程/擦除周期 手动复位 数据可保存100 年 8 脚DIP 封装或8 脚SOIC 封装 商业和工业级温度范围描述CAT1161/2 为基于微控器的系统提供了一个完整的存储器和电源监控解决方案。它们利用低功耗CMOS技术将16k带硬件存储器写保护功能的串行EEPROM 存储器、用于掉电保护的电源监控电路和一个看门狗定时器集成到一块芯片上。存储器采用I2C 总线接口。当系统由于软件或硬件干扰而被终止或“挂起”时,1.6 秒的看门狗电路将复位系统,使系统恢复正常。CAT1161的看门狗电路监控着SDA,这就可以省去额外的PC板跟踪电路。低价位的CAT1162不含看门狗定时器。电源监控和复位电路可在系统上电/下电时保护存储器和系统控制器,防止掉电条件的产生。CAT1161/2的5个门槛电压可支持5V、3.3V和3V的系统。一旦电源电压超出范围,复位信号有效,禁止微控制器、ASIC或外围器件继续工作。复位信号在电源电压超过复位门槛电压后的200ms内仍保持有效。由于带有高电平和低电平复位信号,因此CAT1161/2可以很方便地连接到微控制器和其它IC。另外,复位管脚还可用作手动按键复位的去抖输入。 CAT1161/2 的存储器构造成16字节的页。除此之外,写保护管脚WP和VCC 检测电路提供的硬件数据保护功能可防止在Vcc降到低于复位门槛电压或上电时Vcc上升到复位门槛电压之前对存储器的写操作。器件包含8脚DIP和表贴8脚SOIC两种封装形式。
上传时间: 2014-03-19
上传用户:虫虫虫虫虫虫
2003年第5期《简易串行存储器拷贝器》源程序
上传时间: 2014-04-16
上传用户:问题问题
uart接口串行传输详细分析
上传时间: 2014-01-26
上传用户:wlcaption
为实现某专用接口装置的接口功能检测,文中详细地介绍了一种34位串行码的编码方式,并基于FPGA芯片设计了该类型编码的接收、发送电路。重点分析了电路各模块的设计思路。电路采用SOPC模块作为中心控制器,设计简洁、可靠。试验表明:该设计系统运行正常、稳定。
上传时间: 2013-11-12
上传用户:xiaowei314
针对目前工控领域,现场数据采集分散管理的不足,该文采用了Modbus RTU通信协议和串口通信技术,设计了主从式通信的采集系统,实现对各个现场的远程集中监控,即集散控制系统。详细阐述了在C#环境下基于Modbus RTU通信协议的上位机和DAM-3504系列三相多功能电量采集模块经过GPRS网络的主从式串行通信的实现。经过现场测试验证,表明该方案运行稳定,操作简便,能够对采集的数据进行实时显示,解决了对现场的统一监控和分布式管理的问题,为工业控制现场提供了一套可行性方案。
上传时间: 2013-10-29
上传用户:88mao
一名设计工程师怎样才能真正充分利用串行I/O的各种技术呢?在开始设计之前,我们需要知道什么对于实现串行I/O是有益的。我们需要研究一些基于串行设计的单元器件,从而了解一下是否有现成的工具可以帮助实现串行I/O。
上传时间: 2013-11-18
上传用户:杜莹12345
基于Cortex-M3的ADuCxxx的一个关键特性是可以在线下载代码到片内FLASH/EE程序存储器。在线代码下载是通过器件UART串行端口进行的,因此一般被称为串行下载。
上传时间: 2013-11-01
上传用户:1039312764
I2C串行总线的组成及工作原理
上传时间: 2013-10-29
上传用户:1477849018@qq.com