单片机的ISP在线编程设计介绍

发布者:创意驿站最新更新时间:2012-08-08 来源: 九江学院 关键字:单片机  ISP  在线编程 手机看文章 扫描二维码
随时随地手机看文章

随着电子技术的日益发展,芯片的规模越来越大,封装日趋小型化,相应地对系统板级调试的困难也在加大。在传统的调试方式中,频繁的调试和更换程序需要频繁地插拔芯片,开发效率极低。AT89S系列单片机提供的ISP在线编程技术彻底地改变了传统的开发模式,开发单片机系统时不会损坏芯片的引脚,加速了产品的上市并降低了研发成本,缩短了从设计、制造到现场调试的时间,简化了生产流程,大大提高了工作效率,因此它是对市场定型产品进行现场升级和维护的经济、有效的方式,极大地促进了PLD产品的发展。

1  PC机并行口

1.1  并行口硬件接口简介

标准并行口有25个引脚,其中数据端口引脚为2~9,状态端口引脚为15、10~13,控制端口引脚1、14、16、17用于连接器件,其他引脚18~25是接地引脚GND。25针并行口如图1所示。

按此在新窗口浏览图片
图1  25针并行口

并行口工作在SPP模式下,PC机是通过对3个8位端口寄存器的读或写来实现对它们的控制。端口寄存器分别是:

◆ 数据端口(地址0x378)为D7~D0,对应引脚P9~P2;
  ◆ 状态端口(地址0x379)为S7~S3,对应引脚P11、P10、P12、P13、P15;
  ◆ 控制端口(地址0x37A)为C3~C0,对应引脚P17、P16、P14、P1。

注意: S7、C0、C1、C3信号的逻辑状态在连接器处是与相应寄存器位相反的。对这些位进行写操作时,写入的值应该与连接器处设置的值相反;同样,进行读操作时,读取的值也与连接器处设置的值相反。

1.2  并行口编程简介

Windows对系统底层操作采取了屏蔽的策略,但是在硬件或系统软件开发中只要涉及系统底层的操作,就不得不深入到Windows的内核去编写属于系统级的设备驱动程序。对并行口的读/写操作就是如此。为了绕过 Windows安全保护机制,需要允许32位 Windows程序直接对 I/O口进行操作。这里使用由 Yariv Kaplan编写的 WinIo库中的几个函数来实现对I/O口的读/写。

(1)  初始化与终止
  对端口读/写前后要分别初始化和终止。
  InitializeWinIo();
  ShutdownWinIo();

(2)  安装与卸载
  如果操作系统是Windows98或Windows95,则需要调用驱动函数。
  InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
  RemoveWinIoDriver();

(3)  读/写I/O口
  GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
  SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);

GetPortVal函数从指定端口读取一个BYTE/WORD/DWORD类型的值;SetPortVal函数向指定端口写入一个BYTE/WORD/DWORD类型的值;wPortAddr是指定一个端口地址值;pdwPortVal为指向一双字节型变量的指针,该变量存储从wPortAddr端口读取的值;dwPortVal为一双字节型变量写到wPortAddr端口中;bSize指定读取字节数,值可以为1、2或4。

2  AT89S5X系列单片机

2.1  AT89S51简介

AT89S51是一个低功耗、高性能CMOS 8位单片机,片内含4 KB ISP(InSystem Programming)的可反复擦写1 000次的Flash只读程序存储器。该器件采用Atmel公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。功能强大的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

2.2  AT89S51串行编程时序及指令

2.2.1  串行编程模式下的时序分析

按此在新窗口浏览图片

2.2.2  串行编程指令

串行编程使用4字节协议,指令如表1所列。

表1  串行编程指令
按此在新窗口浏览图片

[page]

3  并行口与AT89S5X单片机的硬件设计

通过对并行口和编程时序的分析,我们制作了AT89S5X单片机的ISP下载线。下面对并行口与单片机的连线作一简单介绍: 并行口P2引脚连接单片机的P1.5引脚(MOSI);并行口P10引脚连接单片机的P1.6引脚(MISO);并行口P1引脚连接单片机的P1.7引脚(SCK);并行口P17引脚连接单片机的RST引脚,如图2所示。

按此在新窗口浏览图片
图2  AT89S52下载线电路图

4  ISP下载线的软件设计在

硬件设计的基础上,通过对ISP时序和串行编程指令的分析,采用Visual C++6.0编写了下载线程序。其主要关键编程函数略——编者注。

结语

以下是作者在调试中获取的一些参数,希望对大家有所帮助。

参考资料:

晶体振荡器的频率为33 MHz(MAX),所以周期T=1/F=1/33 MHz=30 ns(MIN);SCK正脉冲宽度为8×30 ns=240 ns(MIN);SCK负脉冲宽度为8×30 ns=240 ns(MIN);MOSI建立到SCK变高时间为30 ns(MIN);SCK变高后MOSI保持时间为2×30 ns(MIN);SCK变低到MISO有效时间为10 ns(MIN)~32 ns(MAX)(一般取16 ns);芯片檫除指令周期为500 ms;串行字节写周期为64×30 ns+400 ns。

实验数据:

晶体震荡器的频率为33 MHz(MAX),所以周期T=1/F=1/33 MHz=30 ns(MIN);芯片擦除指令周期为200 ms;SCK变高后MOSI保持时间为1 ms(MIN)

关键字:单片机  ISP  在线编程 引用地址:单片机的ISP在线编程设计介绍

上一篇:单片机的图形化编程方法介绍
下一篇:单片机内部的时间单位图示

推荐阅读最新更新时间:2024-03-16 13:05

51单片机中断过程与主程序调用子程序过程的比较
3.1调用子程序过程 主程序调用子程序过程应包括保护断点、跳至子程序首址、保护现场、子程序处理、恢复现场、恢复断点(子程序返回)6步。这六步都是用软件指令完成的。其中前两步保护断点和跳至子程序首址由调用指令CALL完成。保护断点其实就是把断点地址推入堆栈中保护起来,要注意的是保护的断点应是紧跟着调用指令的下一条指令地址,而不是调用指令本身地址,否则会引起重复调用 死循环 ,这点必须提醒学生注意。LCALL与ACALL是MCS-51单片机的两条调用指令,分别称为长调用和绝对调用,两指令主要区别在于LCALL后面操作数直接就是16位二进制的子程序入口地址;而ACALL后面操作数只是11位二进制数,子程序入口地址是把这11位数作为
[单片机]
如何使用8051单片机制作一个简单的0-5V电压表
在本文中,使用8051单片机制作一个简单的0-5V电压表。该数字电压表的灵敏度为200mV,这有点低,但该项目旨在演示如何将ADC和七段显示器连接到8051单片机以获得输入电压的数字读数。 在这个案例中,ADC0804是ADC,使用的单片机是AT89S51。在尝试这个案例之前,请先了解怎么将ADC连接到8051单片机和将七段显示器连接到8051单片机,这将使您对基础知识有一个很好的了解。 一、数字电压表电路图 在电路中,ADC的Vref/2(pin9)保持开路,这意味着输入电压跨度可以是o到5V,步长将为5/255=19.6mV。ADC0804数字输出的公式为Dout=Vin/步长。在该电路中,对于1V的输入电压,数字输出
[单片机]
如何使用8051<font color='red'>单片机</font>制作一个简单的0-5V电压表
51单片机外围模块——DS1302时钟模块
一.DS1302的主要性能指标 DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。 内部含有31个字节静态RAM,可提供用户访问。 采用串行数据传送方式,使得管脚数量最少,简单SPI 3线接口。 工作电压范围宽:2.0~5.5V。 工作电流:2.0V时,小于300nA 时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传送方式。 采用8脚DIP封装或SOIC封装。 与TTL兼容,Vcc=5V。 可选工业级温度范围:-40C~+85C。 具有涓流充电能力。 采用主电源和备份电源双电源供应。 备份电源可由电池或大容量电容实现。 DS1302采用SPI总线与外结通信
[单片机]
51<font color='red'>单片机</font>外围模块——DS1302时钟模块
25美分获得25项功能:如何使用MCU进行简单的功能增强
如果有一个25美分的MCU,可以用0.5KB的内存做些什么? 您现在可能已经使用固定功能的集成电路 (IC)很长一段时间了,并且在某些情况下,已经适应了它们有限的灵活性。一个简单的通用异步收发器(UART)到串行外设接口(SPI)桥接器、一个复位控制器或一个带有后备存储器的外部实时控制器(RTC)在自身功能方面拥有良好的表现,但却仅限于设定的功能。 但是如果可以通过智能化或功能定制来更好地满足您的需求呢?如果可以使用独立的低成本MCU来实现这些独立功能呢? 新型 MSP430™ 超值传感系列MCU可以通过多种集成混合信号功能帮助部署简单的传感解决方案。为扩展这些低成本MCU的功能,TI为25个常见系统级功能创建了一个代
[嵌入式]
25美分获得25项功能:如何使用<font color='red'>MCU</font>进行简单的功能增强
mcs-51单片机汇编语言条件转移指令(8条)编程举例
控制转移 指令 用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移 指令 相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 . 条件转移指令(8条) 条件转移指令是指在满足一定条件时进行相对转移 JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行 JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0
[单片机]
单片机的数字滤波设计
1 数字滤波设计原理 这里有很多种数字滤波方法,我们见选用其中几种来进行设计,如中值滤波、算术平均滤波、加权平均滤波等等。所以下面我将详细介绍它们。 1.1 中值滤波 中位值滤波是先对某一参数连续采样N次(一般N取奇数),然后把N次采样值按从小到大排列,取中间值为本次采样值。 该滤波方法实际上是一种排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,每出现一次前者数据大于后者数据,就要进行二者数据的交换。 该算法的样例子程序如下: #define N 11 //N值可根据实际情况调整 char filter() { char value_buf ; char count,i,
[单片机]
采用HC05/HC088位微控制器的数字电容放电点火系统
引言 两化机动车:低座小摩托、摩托车、机动脚踏两用车,普遍使用电容放电点火(CDI)一种基于电容放电技术的引擎点火系统。点火系统将能量从磁电机转移到存储电容,然后通过升压变压器在火花塞处以高压脉冲形式释放出来,将汽缸中的混合烧油点烧。 目前,考虑到效率更高引擎设计的要求和污染控制中新的管理规定,变定时CDI已成为最经济实用的选择。在变定时CDI解决方案中,以监测引擎速度来提供火花的最佳定时。在空转速度状态,点火定时在压缩冲程中较迟产生,因此当活塞开始动和冲程时有充分时间完成烧烧;在高速状态,点火则在压缩冲程中较早产生。变定时可用MCU实现,如Motorola的廉价MC68HC705P6A。该MCU配置了带独立输入捕捉和输出
[半导体设计/制造]
单片机应用基础
单片机把微型计算机的主要功能部件集成在一个芯片上的单芯片微型计算机。如果说单片机就是一个电脑你可能不会认可,其实它和我们用的电脑的在本质上没有区别,只是5步和100步的区别.单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。 单片机组成: 单片机是在一块集成电路芯片上装有CPU和程序存储器、数据存储器、输入/输出接口电路、定时/计数器、中断控制器、模/数转换器、数/模转换器、调制解调器以及其他部件等的系统。 单片机与单板机的区别: 单片机与单板机最大的不同在于系统组成。 在硬件规模方面,单片机相当于将一个基本规模的单板机所具有的资源复合在一块芯片上,因此具有相当的规模.
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved