52是51基础上衍生出来的增强产品。主要差别在是多了定时/计数器2、增加了4K的ROM、增加了128字节的内部RAM。
所以如果原论文及代码中没有涉及到定时/计数器2,程序代码长度也没超过4K的话,可以替换。其它情况则不行!
下面是52比51在功能上增加的内容
1、内部ROM增加了4K,总计8K,相应的如果外扩程序存储器,则从2000H开始从外部取指。
2、增加了128字节的内部RAM,地址从80H到FFH。使用时这128字节地址因为与特殊功能寄存器地址重叠,所以只能采用间接寻址的方式读写。
3、增加了定时器2,而且该定时器也可用作波特率发生器,具备16位自动重装载和捕获能力。
4、相应的增加了定时器2中断。
5、增加了有关定时器2的特殊功能寄存器T2MOD、T2CON、RCAP2L、RCAP2H、TH2、TL2等,还有诸如T2、ET2等控制位
其它方面均与51一致。
78E516也有内部看门狗的,而且还有几个寄存器是52里没有的,下面是我改过的REG52.h另外,78E516的ROM区前4K是用于BOOT的,如果里面的程序没有跳出来的话,就永远进不了你的应用程序区了,好好看看CHPENR 那几个寄存器的使用方式。
/*
*-----------------------------------------------------------------------------
* Copyright (c) KEIL ELEKTRONIK GmbH and Franklin Software, Inc., 1987-1992
*-----------------------------------------------------------------------------
*/
/* 8052 Processor Declarations */
/* BYTE Registers */
#ifndef POD8751
sfr P0 = 0x80
sfr P1 = 0x90
sfr P2 = 0xA0
sfr P3 = 0xB0
sfr P4 = 0xD8
#endif
#ifdef POD8751
sfr P0 = 0xC0
sfr P1 = 0x90
sfr P2 = 0xD8
sfr P3 = 0xC8
#endif
sfr PSW = 0xD0
sfr ACC = 0xE0
sfr B = 0xF0
sfr SP= 0x81
sfr DPL = 0x82
sfr DPH = 0x83
sfr PCON = 0x87
sfr TCON = 0x88
sfr TMOD = 0x89
sfr TL0 = 0x8A
sfr TL1 = 0x8B
sfr TH0 = 0x8C
sfr TH1 = 0x8D
sfr IE= 0xA8
sfr IP= 0xB8
sfr SCON = 0x98
sfr SBUF = 0x99
/* 8052 Extensions */
sfr T2CON = 0xC8
sfr RCAP2L = 0xCA
sfr RCAP2H = 0xCB
sfr TL2 = 0xCC
sfr TH2 = 0xCD
/*W78E516*/
sfr CHPENR = 0xf6
sfr SFRAH = 0xc5
sfr SFRAL = 0xc4
sfr SFRFD = 0xc6
sfr SFRCN = 0xc7
sfr CHPCON = 0xbf
/* BIT Registers */
/* PSW */
sbit CY= 0xD7
sbit AC= 0xD6
sbit F0= 0xD5
sbit RS1 = 0xD4
sbit RS0 = 0xD3
sbit OV= 0xD2
sbit P = 0xD0
/* TCON */
sbit TF1 = 0x8F
sbit TR1 = 0x8E
sbit TF0 = 0x8D
sbit TR0 = 0x8C
sbit IE1 = 0x8B
sbit IT1 = 0x8A
sbit IE0 = 0x89
sbit IT0 = 0x88
/* IE */
sbit EA= 0xAF
sbit ES= 0xAC
sbit ET1 = 0xAB
sbit EX1 = 0xAA
sbit ET0 = 0xA9
sbit EX0 = 0xA8
/* IP */
sbit PS= 0xBC
sbit PT1 = 0xBB
sbit PX1 = 0xBA
sbit PT0 = 0xB9
sbit PX0 = 0xB8
#ifndef POD8751
/* P3 */
sbit RD = 0xB7
sbit WR = 0xB6
sbit T1 = 0xB5
sbit T0 = 0xB4
sbit INT1 = 0xB3
sbit INT0 = 0xB2
sbit TXD = 0xB1
sbit RXD = 0xB0
#endif
#ifdef POD8751
sbit RD = 0xCF
sbit WR = 0xCE
sbit T1 = 0xCD
sbit T0 = 0xCC
sbit INT1 = 0xCB
sbit INT0 = 0xCA
sbit TXD = 0xC9
sbit RXD = 0xC8
#endif
/* SCON */
sbit SM0 = 0x9F
sbit SM1 = 0x9E
sbit SM2 = 0x9D
sbit REN = 0x9C
sbit TB8 = 0x9B
sbit RB8 = 0x9A
sbit TI= 0x99
sbit RI= 0x98
/* 8052 Extensions */
/* IE */
sbit ET2 = 0xAD
/* IP */
sbit PT2 = 0xBD
/* P1 */
sbit T2EX = 0x91
sbit T2= 0x90
/* T2CON */
sbit TF2 = 0xCF
sbit T2IP = 0xCE
sbit RCLK = 0xCD
sbit T2IE = 0xCD
sbit TCLK = 0xCC
sbit T2RSE = 0xCC
sbit BGEN = 0xCB
sbit TR2 = 0xCA
sbit C_T2 = 0xC9
sbit CP_RL2= 0xC8
sfr AUXR = 0x8E
sfr WDT_CONTR = 0xe1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)