當前位置:首頁 » 編程語言 » 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;
}