当前位置:首页 » 编程语言 » c语言编程51和52
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编程51和52

发布时间: 2022-11-12 04:48:24

⑴ 51单片机的程序52单片机能用吗

能,但是52的有些功能就不能用了,如定时器2,reg51.h里面没有声明,因为51里根本上就没有定时器2。

⑵ s52单片机与c51单片机用c语言编程有什么区别

在C51上能跑的程序在S52上绝对能跑
S52比C51多了一个看门狗,一个T2定时器,一个数据指针DPTR1,相应的也多了几个寄存器
这几个多出来的除了T2之外,你都可以不用,因此不用管,T2定时器最好看看一资料,功能很强大的一个定时器,比T0,T1好多了,当然你也可以选择不用
还有就是存储器大了正好一倍

⑶ 用五一单片机c语言编程,p1口控制八个发光二极管,实现每隔一秒,两两点亮,并循环。

一、#include<reg51.h>

void delay(unsigned char Xms)//延时Xms

{

int i,j;

for(X = i; X>0; X--)

for(j=110;j>0;j--);

}

void main()

{

P0 = 0x00; //P0.0~P0.7分别接八个发光二极管,刚开始全灭

while(1)

{

delay(1000);

P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;

delay(1000);//延时1秒

P0 = 0x30;//点亮第三个和第四个LED

delay(1000);

P0 = 0x0c;

delay(1000);

P0 = 0x03;

}

}

二、

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar temp, t0, t1;

bit t2;

sbit P10 = P1^0;

void main()

{

P10 = 1;

temp = 0xfe;

P0 = temp;

P2 = 0xff;

TMOD = 0x01;

TH0 = (65536 - 50000) / 256;

TL0 = (65536 - 50000) % 256;

ET0 = 1;

EA = 1;

TR0 = 1;

while(1);

}

void timer0() interrupt 1

{

TH0 = (65536 - 50000) / 256;

TL0 = (65536 - 50000) % 256;

t0++;

if(t0 == 10) {

t0 = 0;

t1++;

if(t1 == 8) {t1 = 0; t2 = ~t2; P10 = t2;}

temp = _crol_(temp, 1);

if(t2) {P0 = temp; P2 = 255;}

else {P2 = temp; P0 = 255;}

}

}

(3)c语言编程51和52扩展阅读:

例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子里面的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c;则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。

顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。

⑷ 如果c语言编的52单片机的程序怎么改成51单片机的啊

52单片机同属于51系列单片机,程序不用改的,是完全一样的。

⑸ 利用单片机51 52都可以实现SHT11温湿传感器的数据采集并用LED或LCD显示,需要proteus仿真图和C语言程序

sht11的IIC协议写的温湿度采集,在LCD12864上显示。cpu采用89s52.我这里有写好的KEIL C程序,和protues仿真。欢迎网络hi联系我,或者[email protected]

⑹ 单片机C语言编程中头文件中包含的51.h和52.h有什么区别 任何不同都行

reg52.h 用于52单片机
reg51.h 用于51单片机
不同在于52单片机功能多一点,所以多几个寄存器
比如多一个定时器
/* 8052 Extensions */
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;

sbit P = PSW^0; //8052 only
sbit ET2 = IE^5; //8052 only

/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
这就是所有52比51多的寄存器了,具体的你可以自己打开两个文件去看看哈。

⑺ 关于 c语言 头文件 51单片机 reg52.h 的问题

防止头文件被重复包含出现重定义的问题。
首先同一个变量被定义2次肯定是一个问题,
比如
const
int32_t
l_age
=
20;
const
int32_t
l_age
=
30;
使用
#ifndef
__REG52_H__
#define
__REG52_H__
sfr
xx
=
yy;
.....
.....
#endif
的格式可以避免出现类似问题。
假定
a.h中有#include
假定b.h中有#include
假定c.h中
#include
#include
假定c.c中
有#include
展开为
#ifndef
__REG52_H__
#define
__REG52_H__
sfr
xx
=
yy;
.....
.....
#endif
#ifndef
__REG52_H__
#define
__REG52_H__
sfr
xx
=
yy;
.....
.....
#endif
因为之前有过_REG52_H_的宏定义
所以下一个#ifndef
__REG52_H__直接跳过,
这个解决了这个重复定义的问题。

⑻ C51和C52单片机哪个更好用

C52更好用些,强烈建议用C52。

C51的ROM为4KB,C52的ROM为8KB。
C51的内部RAM只有128字节,除去4组工作寄存器、位地址单元和预留一部分堆栈空间,剩下的RAM不多了,对稍微复杂一些的程序,编程起来非常的不舒服,因为能定义的空间很少了。

如果是用汇编编程,建议用南京伟福(Wave for Windows),个人一直在用这个,感觉不错。(伟福主页:http://www.wave-cn.com/)
如果用C语言编程,建议用Keil C。

⑼ 单片机51c语言编程题,求解答,题目都看不懂(´・_・`)

ACC在C51、C52的头文件里均有定义,但没有位定义。
P1.2、P1.4在C语言中,不能直接使用,而程序中直接使用P1^2、P1^4,属于逻辑运算;

所以,题目中的4个量均不能直接表达,端口(P1.2,P1.4)需先进行位定义,而ACC.0,ACC.7需使用逻辑表达式进行位获取:
sbit P12=P1^2;
sbit P14=P1^4;
P12 || P14 && ACC &0x01 ||ACC &0x80;
上述表达式的运算优先级为: & >&& >||,所以不用加括号

⑽ 用C语言编程51单片机时候让程序返回到指定位置用什么语句

还是循环,需要循环几次用的i++
或者这样不就回去了吗?
while(1)
{
P0 = 0xFE;
for(i = 0;i < 60000;i++);
P0 = 0xFB;
for(j = 0;j < 30000;j++);
P0 = 0xFD;
}