⑴ 單片機代碼
void delay(unsigned int x) //延時 x ms
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
延時1ms 即為使x=1;
這程序延時約1ms(x=1時用keil測出來約 0.96831272ms,近似1ms),用C語言很難做到准確的1ms。注意晶振為11.0592MHZ的時候用~
滿意請採納,不懂繼續問
⑵ 單片機c語言必背代碼
TR0 = 1;
ET0 = 1;
EA = 1;
⑶ 求單片機8*8點陣簡單圖案源代碼。
在8X8 LED點陣上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左 平滑移動三次,再次從上到下平滑移動三次,最後從下到上平滑移動三次如此循環下去。
#include<AT89X52.H>
unsignedcharcodetaba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodetabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
voiddelay(void)
{
unsignedchari,j;
for(i=10;i>0;i--)
for(j=248;j>0;j--);
}
voiddelay1(void)
{
unsignedchari,j,k;
for(k=10;k>0;k--)
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
voidmain(void)
{
unsignedchari,j;
while(1)
{
for(j=0;j<3;j++) //fromlefttoright3time
{
for(i=0;i<8;i++)
{
P3=taba[i];
P1=0xff;
delay1();
}
}
for(j=0;j<3;j++) //fromrighttoleft3time
{
for(i=0;i<8;i++)
{
P3=taba[7-i];
P1=0xff;
delay1();
}
}
for(j=0;j<3;j++) //fromtoptobottom3time
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=tabb[7-i];
delay1();
}
}
for(j=0;j<3;j++) //frombottomtotop3time
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=tabb[i];
delay1();
}
⑷ 單片機代碼
char i,j 這句中的char和變數 i 之間要有空格。主程序中變數 j 的兩個for循環的前後的一對圓括弧( ) 去掉,要加必須用一對大括弧 { } ,其實是不需要的,雙層循環可以直接寫兩行,而第二個for 循環結尾帶分號 ; 就可以。如下圖所示
⑸ 單片機 數碼管動態顯示代碼
if(Countnum[3]++=9) 單片機裡面判斷是否相等是用==的而不是=
你應該寫成if(Countnum[3]++==9)
而且你的寫法和不規范,這個寫法的意思是Countnum[3]是否等於9,然後Countnum[3]加1
其它的錯誤也是一樣
⑹ 單片機點陣顯示心形代碼,急!!求大神。。。
把點陣圖形的代碼存於表格中,一次取一個數,反復顯示即可。
⑺ 51單片機常用代碼
51單片機常用有不同的代碼,那麼單片機的代碼呢還是你用他的最原始的代碼書寫文件就可以了,這樣的話就可以做出來非常成功的描述。
⑻ 求用51單片機實現下圖功能的代碼
使用數組的方法點亮十六盞流水燈
#include <reg52.h>
unsigned char table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; //宏函數 定義數組,這里的數組均是可以使其亮的順序。因為
void delay(void) 要使十六盞燈亮,所以需要在後面加上0xff(11111111)即全滅
{ 如果不是需要十六盞則不需要加上最後一個數組。
unsigned char a,b; //聲明函數,聲明燈的閃爍情況,與上一個代碼相同。
for(a=0;a<200;a++)
for(b=0;b<200;b++); // for 語句循環嵌套
}
void main()
{
unsigned char i;
while(1) // while語句是為了使使循環持續進行
{
for(i=0;i<9;i++) //定義一個i,
{
P0=table[i]; // i取值為數組中的值。依次點亮前八盞燈
delay(); // 延遲
}
{
for(i=0;i<9;i++) // 繼續賦值,繼續點亮後8盞燈
{
P2=table[i];
delay();
}
}
}
}
⑼ 單片機的操作碼有多少分別是什麼
MCS-51使用匯編語言指令,它共有44個操作碼助記符,33種功能,其操作數有#data、direct、Rn、@Ri等。這里先介紹指令助記符及其相關符號的記憶方
法。
一、助記符號的記憶方法
1�表格列舉法
把44個指令助記符按功能分為五類,每類列表記憶。此處從略,請讀者自己總結。
2�英文還原法
單片機的操作碼助記符是該指令功能的英文縮寫,將縮寫還原成英語原文,再對照漢
語有助於理解其助記符含義,從而加強記憶。例如:
增量 INC-Incremect 減量 DNC-Decrement
短轉移 SJMP-Short jump 長轉移 LJMP-Long jump
比較轉移 CJNE-Compare jump not equality
絕對轉移 AJMP-Absolute jump 空操作 NOP-No operation
交換 XCH-Exchange 加法 ADD-Addition
乘法 MUL-Multiplication 除法 DIV-Division
左環移 RL-Rotate left 進位左環移 RLC-Rotate
left carry
右環移 RR-Rotate right 進位右環移RRC-Rotate
right carry
3�功能模塊記憶法
單片機的44個指令助記符,按所屬指令功能可分為五大類,每類又可以按功能相似原
則為2~3組。這樣,化整為零,各個擊破,實現快速記憶。
1)數據傳送組。 2)加減運算組
MOV 內部數據傳送 ADD 加法
MOVC 程序存儲器傳送 ADDC 帶進位加法
MOVX 外部數據傳送 SUBB 帶進位減法
3)邏輯運算組。 4)子程序調用組。
ANL 邏輯與 LCALL 長調用
ORL 邏輯或 ALALL 絕對調用
XRL 邏輯異或 RET 子程序返回
二、指令的記憶方法
1�指令操作數的有關符號
MCS-51的定址方式共有六種:立即數定址、直接定址、寄存器定址、寄存器間址、變
址定址、相對定址。我們必須掌握其表示的方法。
1)立即數與直接地址。ata表示八位立即數,#data16表示是十六位立即數,data或
direct表示直接地址。
2)Rn(n=0-7)、A、B、CY、DPTR寄存器定址變數。
3)@R0、@R1、@DPTR、SP表示寄存器間址變數。
4)DPTR+A、PC+A表示變址定址的變數。
5)PC+rel(相對量)表示相對定址變數。
記住指令的助記符,掌握不同定址方式的指令操作數的表示方法,為我們記憶匯編指
令打下了基礎。MCS-51指令雖多,但按功能可分為五類,
其中數據傳送類28條,算術運算類24條,邏輯操作類25條,控制轉移類17條,布爾位操作
類17條。在每類指令里,根據其功能,抓住其源、
目的操作數的不同組合,再輔之以下方法,是完全能記住的。
我們約定,可能的目的操作數按(#data/direct/A/Rn/@Ri)順序表示。
對於MOV指令,其目的操作數按A、Rn、direct、@Ri的順序書寫,則可以記住MOV的15
條指令。例如以累加器A為目的操作數,可寫出如下4條指令。
MOV A,#data/direct/A/Rn/@Ri
以此類推,寫出其它指令。
MOV Rn,#data/direct/A
MOV direct,#data/direct/A/Rn/@Ri
MOV @Ri,#data/direct/A
2�指令圖示記憶法
圖示記憶法是把操作功能相同或相似、但其操作數不同的指令,用圖形和箭頭將目
的、源操作數的關系表示出來的一種記憶方法。
例如:由助記符MOV、MOVX、MOVC組成的送數組指令,可以用圖1、2幫助記憶。
由助記符CJNE形成的四條指令,也可以用圖示法表示,如圖3。
CJNE A,#data,rel CJNE A,direct,rel
CJNE @Rn,#data,rel CJNE @Ri,#data,rel
另外,對於由(ANL、ORL、ARL)形成的18條邏輯操作指令,有關A的四條環移指令,
也可以用圖示法表示,請讀者自行畫出記憶。
3�相似功能歸類法
在MCS-51指令中,我們發現部分指令其操作碼不同,但功能相似,而操作數則完全一
樣。相似功能歸類法就是把具有這樣特點的指令放在一起記憶,
只要記住其中的一條,其餘的也就記住了。如加、減法的十二條指令,與、或、非的十八
條指令,現列舉如下。
ADD/ADDC/SUBB A,#data/direct/Rn/@Ri
ANL/ORL/XRL A,#data/direct/Rn/@Ri
ANL/ORL/XRL direct,#data/a
上述每一排指令,功能相似,其操作數都相同。其它的如加1(INC)、減1(DEC)指令也
可照此辦理。
4�口訣記憶法
對於有些指令,我們可以把相關的功能用精練的語言編成一句話來記憶。如PUSH
direct和POP direct這兩條指令。
初學者常常分不清堆棧SP的變化情況,為此編成這樣一句話:(SP的內容)加1(direct的內
容)再入棧,(SP的內容)彈出(到direct單元)SP才減1。
又如乘法指令中積的存放,除法指令中被除數和除數以及商的存放,都可以編成口訣記憶
如下。
MUL AB 高位積(存於)B,低位積(存於)A。
DIV AB A除以B,商(存於)A余(下)B。
⑽ 單片機可以用圖形化編程嗎
給你推薦一個吧:LinkBoy,這是一個單片機圖形化中文編程平台,雖然設計比較粗糙,不過用著確實方便。目前這個平台正處於不斷完善中,你可以在這個博客了解LinkBoy設計者的後續研發和更新:
http://blog.sina.com.cn/freerobot
這是關於LinkBoy的介紹,從上邊的博客中轉過來的一段話:
LinkBoy是一套創意展示平台,它是專門為痴迷技術的極客、業余IT玩家和機器人發燒友設計的。在這個集成化的開發平台上,包含了軟體、電子、機械在內的一整套設計環境,通過LinkBoy,用戶只需要幾分鍾的時間,就能從最開始的創意萌發過渡到軟體設計、電路模塊連接和機械結構組裝,並迅速搭建出一個實物的設計原型,比如說——下雨時自動把衣服收進來的小裝置;離開你10米遠就會嘀嘀響的手提包;每天晚上7點鍾會自動打開電視機的神奇插座;可以用iPhone控制發光顏色的七彩夢幻吊燈;每天會自動澆花的小噴壺……
作為一套電子積木玩具,通過完全插接式的拼裝,用戶不再需要繁瑣的底層編程、晶元飛線焊接、底板切割、鑽孔…… 因為LinkBoy已經為您設計好了一系列的軟體包、電子模塊、機械小構件,只需要幾行程序代碼、簡單的插接和拼裝,一個個小創意作品就會在您的雙手上源源不斷地出現。
……