C52的C程序能直接用于C51吗?

C52的C程序能直接用于C51吗?,第1张

不能,文件头都不一样。还有C51及C52单片机在内核结构上完全一样,两者的主要差别在RAM和ROM上,C51是128byte RAM,4K ROM,C52是256Byte,8K ROM。C51有6个中断源、C52有8个。C51有T0、T1两个16位定时器、C52有T0、T1、T2三个16位定时器。

不一定!

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12002094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存