導航:首頁 > 操作系統 > 單片機c51

單片機c51

發布時間:2022-03-16 03:52:08

『壹』 c51單片機是什麼

單片機,是典型的嵌入式微控制器,一般用在工業控制上,現在用的c51大都是AT89c51.

『貳』 求單片機C51代碼

用兩個變數來控制就可以了,一個PWM控制占空比,一個T控制頻率。
一個計數變數cnt來計數。
cnt<PWM 輸出高電平
cnt>=PWM && cnt<T 輸出低電平。
用按鍵來調節PWM和T就可以改變占空比和頻率。

『叄』 C51單片機分類

你的提問是C51單片機的分類,就是說,特指MCS-51系列,那麼MCS-51系列的單片機基本上沒什麼區別的,至少內核都是一模一樣的。就是功能模塊可能稍有不一樣。比如說:
有些具有AD/DA模塊,有些不具有;
有些有EEPROM(STC89C52),有些沒有(AT89S52);
有些ROM有8K(AT89S52),有些只有2K;
有些RAM有256B,而有些只有128BIT;
有些40個管腳(AT89C51、89C52、89S52),有些20個管腳(AT89C2051、89C4051);
有些有內部晶振,有些沒有;
但這些都是稍微一點點的區別,基本都還是算一樣的。

單片機是一個很大的類,這個類下面有很多子類,C51是單片機其中一個子集,其它的子類還有PIC、AVR、Cortex、STM等。
至於樓上說的ARM,其實ARM已經有點偏離單片機的定義了,更趨向於處理器,ARM9經常用在強大的智能手機中,各種硬體資源和運算速度都不是普通單片機可以相比的,而且編程與電路方面的設計也跟單片機不太一樣。ARM7類似,但現在已經基本不用ARM7了。
還有最後一個PLC,看到PLC就知道他不是專業,可能是復制來的。PLC我們現在正在學,其實是一種工控設備,外形就是一個大大的盒子,裡面裝的也是單片機,可能是PIC的,也可能是ST的,也可能是其它的,還有一些外圍電路。總之,我不敢說ARM不屬於單片機,但PLC絕對不是單片機!!!
如果樓主要學,一般從40管腳的89C52或89S52開始學,也可以學STC的,STC的跟AT非常非常像,你可以簡單的認為,STC是仿AT的,型號也一一對應,但STC的往往會加入一些AT沒有的模塊。

『肆』 單片機c51有哪些變數,謝謝!

下面僅對C51在變數定義中注意的問題以及與80C51存儲資源有關的問題作說明,其餘遵循C語言的規定。
1.變數聲明
在變數的聲明中,可以包括存儲類型和signed或unsigned等屬性。如:
(1)char data var1;
定義字元型變數var1,被分配在內部RAM低128B,編譯後,通過直接定址方式訪問。
(2)char code text[ ] = 「ENTER PARAMETER」;
定義字元數組text[ ],將其分配到程序存儲區,並賦初始值「ENTER PARAMETER」。編譯後,通過MOVC A, @A+DPTR訪問。
(3)unsigned long xdata array[100];
定義無符號長整型數組array[100],將其分配到外RAM中,編譯後,通過MOVX A, @DPTR訪問。
(4)float idata x,y,z;
定義浮點類型變數x,y,z,將其分配到內RAM中,編譯後,通過間接定址方式訪問。
(5)unsigned int pdata dimension;
定義無符號整型變數dimension,將其分配到外RAM中,編譯後,通過MOVX A, @Ri指令採用分頁的形式訪問。
(6)unsigned char xdata vector[10][4][4];
定義無符號字元型數組vector[10][4][4],將其分配到外RAM中,編譯後,通過MOVX A,@DPTR訪問。
(7)char bdata flags;
定義字元型變數flags,將其分配到可位定址的內部數據存儲器中,可以以位元組方式訪問,也可以以位方式訪問。

『伍』 單片機C51

你把「STARTUP.A51」,從項目中刪除,就好了。

『陸』 編寫一個完整的單片機C51程序

#include<reg51.h>
sbit led=P1^0; //單片機管腳位聲明
void main()
{
TMOD=0x01; //定時器TO工作在方式1
TH0=(65536-5000)/256; //裝初值,12M晶振 1為1us; 5000為5000us=5ms;
TL0=(65536-5000)%256;
EA =1; //開總中斷
ET0=1; //開定時器TO中斷
TR0=1; //啟動定時器
P1=0; //初始化P1口
while(1) ; //程序在這里等待中斷發生
}
void T0_time() interrupt 1
{
unsigned char num;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
if(num==100) //0.5S (1s閃爍1次==0.5S亮0.5S滅)
{
num=0;
led=~led; //led狀態取反
}
}

『柒』 c51單片機程序實例

#include<reg51.h>
#defineucharunsignedchar
uchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//0到9
ucharnum,cnt,disn;
ucharkeyval,disk;
ucharled[]={1,2,3,4};
voiddealdat(uchara)
{
led[0]=0;
led[1]=0;
led[2]=0;
led[3]=0;
led[a]=disk;
}
voiddelay(unsignedinta)
{
unsignedinti,j;
for(i=0;i<a;i++)
for(j=0;j<1000;j++);
}
voidt0isr()interrupt1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
switch(num)
{
case0:P2=0x01;break;
case1:P2=0x02;break;
case2:P2=0x04;break;
case3:P2=0x08;break;
default:break;
}
P0=~tab[led[num]];
num++;
num&=0x03;
cnt++;
if(cnt>100)
{
cnt=0;
disn++;
disn%=4;
dealdat(disn);
}
}

ucharkbscan(void)
{
unsignedcharsccode,recode;
P3=0x0f;//發0掃描,列線輸入
if((P3&0x0f)!=0x0f)//有鍵按下
{
// delay(20);//延時去抖動
if((P3&0x0f)!=0x0f)
{
sccode=0xef;//逐行掃描初值
while((sccode&0x01)!=0)
{
P3=sccode;
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0;
return((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return0;//無鍵按下,返回0
}

voidgetkey(void)
{
unsignedcharkey;
key=kbscan();
if(key==0){keyval=0xff;return;}
switch(key)
{
case0x11:keyval=7;break;
case0x12:keyval=4;break;
case0x14:keyval=1;break;
case0x18:keyval=10;break;
case0x21:keyval=8;break;
case0x22:keyval=5;break;
case0x24:keyval=2;break;
case0x28:keyval=0;break;
case0x41:keyval=9;break;
case0x42:keyval=6;break;
case0x44:keyval=3;break;
case0x48:keyval=11;break;
case0x81:keyval=12;break;
case0x82:keyval=13;break;
case0x84:keyval=14;break;
case0x88:keyval=15;break;
default:keyval=0xff;break;
}
}

main()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
getkey();
if(keyval!=0xff)disk=keyval;
delay(10);
}

}

『捌』 單片機C51錯誤

在之前加#define unsigned int uint
uint是為了方便才把unsigned int宏定義成uint

『玖』 請問單片機C語言編程與單片機C51編程的區別是什麼

沒什麼區別。C51單片機可以用匯編語言編程,也可以用C語言編程!

『拾』 單片機 C51 union 的用法

這個應該是c51的c語言編程吧?->的意思是info這個指向結構體的指針所指的結構中取名叫irqsource的成員變數。也可以寫成(*info).irqsource=0x00;
效果是一樣的。

閱讀全文

與單片機c51相關的資料

熱點內容
cnc編程工程師自我評價 瀏覽:126
書本文件夾夾子怎麼安 瀏覽:801
如何更改編譯器的背景 瀏覽:84
linuxcp拷貝文件 瀏覽:608
我的世界如何屏蔽別人伺服器 瀏覽:907
單片機燒錄員 瀏覽:970
美國數據伺服器可以部署什麼業務 瀏覽:973
如何卸載伺服器中的ie 瀏覽:42
單片機必須學編程嗎 瀏覽:153
如何判斷是否與伺服器連接資料庫 瀏覽:740
吃甜食會緩解壓力嘛 瀏覽:317
pdf魔鬼 瀏覽:29
二維數組遞歸解決演算法問題 瀏覽:382
java反射例子 瀏覽:670
惠普筆記本自帶解壓軟體 瀏覽:840
抖音視頻後台壓縮 瀏覽:707
app里的視頻廣告從哪裡接的 瀏覽:556
天翼雲伺服器跟騰訊雲 瀏覽:618
cyk演算法實現 瀏覽:191
大潘號app在哪裡可以下載 瀏覽:109