新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)常用功能函數(shù)

51單片機(jī)常用功能函數(shù)

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
delay延時(shí)函數(shù)
void delayms (uint xms) //(毫秒單位
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--)
}
單片機(jī) 外部中斷0設(shè)置開啟 P3.2口為中斷0出入口
EA=1; //開啟總中斷
EX0=1;//開啟外部中斷0
TCON=0x01;//設(shè)置觸發(fā)方式(此方式為下降沿)可對(duì)每一位操作
void exter0 () interrupt 0 //中斷程序
{
......
}
時(shí)鐘中斷 1秒鐘時(shí)鐘 晶振為11.0592
//注意:1.對(duì)TMOD賦值,確定T0和T1的工作方式。2.計(jì)算初值,寫入TH0、TL0或TH1、TL1。
3.中斷方式,對(duì)IE賦值,開放中斷。4.使TR0或TR1置位,啟動(dòng)定時(shí)器/計(jì)數(shù)器時(shí)或計(jì)數(shù)。
void main
{
TMOD=0x01;//設(shè)置定時(shí)器0模式(16位,定時(shí)器模式,內(nèi)部) 也可以將初始化單獨(dú)寫成函數(shù)
TH0=(65536-50000)/256;//裝初值
TL0=(65536-50000)%6;
EA=1;//開總中斷
ET=1;//開定時(shí)器0中斷
TR0=1;//啟動(dòng)定時(shí)器0
if(tt==20)
{
tt=0;
.......
}
}
void timer0() interrupt 1 //定時(shí)器中斷
{
TH0=(65536-50000)/256;//由于進(jìn)入中斷16為計(jì)數(shù)器會(huì)清零,所以重新賦值
TL0=(65536-50000)%6;
tt++;
}
按鍵消除浪涌處理
void main()
{
if(key1==0)
{
delay(5);//盡量在5毫秒以上
if(key1==0)
{
// d1=0;
// num++; 這里可以寫自己需要的程序
// if(num==10)
// num=0;
}
while(!key1);//判斷是否松手
delay(5);//消除松手時(shí)產(chǎn)生的浪涌
while(!key1);
}
DA轉(zhuǎn)化
void main()
{
P3.2=0;//DA的CS-為低電平有效,打開DA的片選
P3.6=0;//DA的wr低電平,
P0=0xFF;//把燈點(diǎn)亮,而且是最亮。如果 P0=0;燈滅. P0輸出不同的2進(jìn)制可以控制LED的亮度。
while(1);
}
AD轉(zhuǎn)換 AD0804


關(guān)鍵詞: 51單片機(jī)功能函

評(píng)論


技術(shù)專區(qū)

關(guān)閉