AT89C51和AT89C52的编程原理完全相同,内部都有一个可重复编程的Flash ROM,AT89C51的ROM容量为4KB,而AT89C52的容量为8KB.
我们以AT89C52为例来说明其编程原理:
A:由其ROM的容量可知其地址线需要13条,硬件连接如图1所示,整个P1口和P2口的低5位为编程地址输入线, P0口为数据输入端,P2.6、P2.7、P3.6、P3.7为编程模式.其电平组合见表1.
B:以下是编程过程:
1.将RST接高电平,PSEN接低电平.
2.擦除芯片,每次重新编程前都要首先把原来ROM里面的程序擦除掉,将编程模式组合为擦除模式,送ALE端一个10ms宽度的低电平脉冲即可.
3.在地址线上输入所需编程的存储单元的地址.
4.将正确的控制信号组合为有效(写模式).
5.在数据线上输入相应的字节.
6.将EA升至12V.
7.给ALE一个50us的低电平脉冲.
8.效验数据,将控制信号组合为读模式,数据即出现在P0口.
9.改变地址和数据,重复步骤3~8步,直至程序写完.
AT89C1051\2051\4051的编程原理
AT89C1051\2051\4051只有20个脚,相对AT89C51\52来说少了P0口和P2口.以AT89C2051为例,它内部有一个地址计数器,它的编程地址是通过XTAL1串行输入的,对XTAL1管脚施加一个脉冲,内部地址计数器递增,而数据则通过P1口输入.编程时硬件参照图2连接,控制信号见表2:
其编程步骤如下:
1.擦除程序,电平组合为擦除模式,往P3.2口送一10ms低电平脉冲,内部ROM全部被置1,擦除完成.
2.将XTAL1和RST置低电平.
3.将RST和P3.2置高电平.
4.将P3.4、P3.5、P3.6、P3.7的电平组合为写模式.
5.将编程数据送入P1口.
6.将RST端电压升至12V编程电压.
7.送P3.2一个50us的低电平脉冲,即将一个字节写入内部ROM.
8.效验数据,将RST电压降为5V,组合电平变为读模式,数据即出现在P1口.
9.对下一存储单元编程,在XTAL1施加一个脉冲,内部计数器加1,新数据送入P1口.
10.重复步骤1~8,直至程序写完.
11.下电步骤:将XTAL1置低电平,RST置低电平.
对十六进制文件的理解
当对源程序进行编译链接完成后,将得到相应的十六进制文件(后缀是.HEX), 对单片机进行编程就是将*.HEX文件写入内部ROM, 当用记事本程序打开HEX文件时,可以发现其每一行都是以“:”开头,后面是一串十六进制数字;
从“:”开始,第一个字节表示要写入ROM的字节数,第二、三字节表示这一串数据在ROM中的首地址,第四个字节总是00,一般不作处理,第五个字节到倒数第二个字节就是要写入ROM的数据,最后一个字节作效验用,使得整行数据之和低8位为0。
上一篇:串口波特率选择
下一篇:基于MAX155的同步数据采集系统
推荐阅读最新更新时间:2024-03-16 13:49