资料介绍
串行编程器源程序(Keil C语言)
//FID=01:AT89C2051系列编程器
//实现编程的读,写,擦等细节
//AT89C2051的特殊处:给XTAL一个脉冲,地址计数加1;P1的引脚排列与AT89C51相反,需要用函数转换
#include
#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;
}
- 基于ATmega8单片机Eeprom的c语言编程Proteus仿真源程序 0次下载
- 基于ATmega8单片机看门狗的c语言编程Proteus仿真源程序 0次下载
- 基于ATmega8单片机同步串行接口SPI的C语言编程源程序 1次下载
- 微型高压串行编程器开源分享
- 串行PiC编程器开源项目
- 小马软件PonyProg AVR-PG1B串行设备编程器安装 1次下载
- MCS-51单片机C语言编程100实例的源程序和仿真图资料免费下载 177次下载
- 异步串行接口UART的C语言编程 8次下载
- 同步串行接口SPI的C语言编程 9次下载
- 全部C语言源程序100例 2次下载
- EasyPRO系列通用编程器驱动程序
- SmartPRO通用编程器软件2008
- 电子密码锁源程序 (C语言代码)
- wince 源程序 (C语言)
- IC卡的读写程序 (C语言源程序代码)
- PLC编程语言和C语言的区别 1462次阅读
- plc编程语言与c语言的联系 c语言和PLC有什么区别 3032次阅读
- 如何把C++程序改写成C语言 3149次阅读
- 串行口驱动LED显示的C语言源代码 3775次阅读
- 单片机ISP编程器的使用教程说明 9066次阅读
- I2C总线驱动的C语言源程序详细说明 5050次阅读
- 单片机编程器是什么_单片机编程器应用 1.6w次阅读
- C语言的入门简介和三个简单的C语言程序详细说明 3819次阅读
- 关于PLC存储很重要的编程器和通信接口 1584次阅读
- 连接器是怎么读懂C源程序的 1462次阅读
- 学习开发环境和编程语言:汇编语言和C语言的比较 8893次阅读
- 欧姆龙手持编程器使用说明 1.7w次阅读
- 编程器怎么用_编程器的使用方法 6.9w次阅读
- 单片机编程器作用及功能解析 1.4w次阅读
- arduino用什么语言编程 6.9w次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 651单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 751单片机大棚环境控制器仿真程序
- 1.10 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多