找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 6010|回復(fù): 6
收起左側(cè)

如何編寫C語言的延遲函數(shù),實(shí)現(xiàn)p1.0口的led閃爍1/2/3次和不斷閃爍與常亮呢?

[復(fù)制鏈接]
ID:190966 發(fā)表于 2017-4-18 20:23 | 顯示全部樓層 |閱讀模式
如何編寫延遲函數(shù),實(shí)現(xiàn)p1.0口的led閃爍1/2/3次和不斷閃爍與常亮呢?

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:190966 發(fā)表于 2017-4-18 20:26 | 顯示全部樓層
還有怎樣用p3.2口的高低電平來控制閃爍的狀態(tài)呢?
回復(fù)

使用道具 舉報(bào)

ID:190966 發(fā)表于 2017-4-18 22:30 | 顯示全部樓層
請(qǐng)問下怎么改下面程序呀?就是閃爍次數(shù)不對(duì),改延時(shí)么?
#include<reg51.h>
#define uchar unsigned char
sbit key=P3^3;
sbit led=P1^1;
uchar timeCnt=0;
void delay( unsigned int t)
{
uchar i,j;
for(i=t;i>0;i--)
for(j=3;j>0;j--);
}
void shanshuo1()
{
led=~led;
delay(0);
}
void shanshuo2()
{
led=~led;
delay(10);
}
void shanshuo3()
{
led=~led;
delay(100);
}
void shanshuo4()
{
led=0;
delay(1500);
led=1;
delay(1500);
}
void shanshuo5()
{
led=0;
delay(60000);
led=1;
delay(60000);
}
void main()
{
while(1)
{
if(key==0)
{
timeCnt++;
if(timeCnt==6) timeCnt=0;
}
if(timeCnt==1) shanshuo1();
if(timeCnt==2) shanshuo2();
if(timeCnt==3) shanshuo3();
if(timeCnt==4) shanshuo4();
if(timeCnt==5) shanshuo5();

}
}
回復(fù)

使用道具 舉報(bào)

ID:189542 發(fā)表于 2017-4-19 15:43 | 顯示全部樓層
在多機(jī)通信中,主機(jī)必須要能對(duì)各個(gè)從機(jī)進(jìn)行識(shí)別,在51系列單片機(jī)中可以通過SCON寄存器的SM2位來實(shí)現(xiàn)。當(dāng)串口以方式2或方式3發(fā)送數(shù)據(jù)時(shí),每一幀信息都是11位,第9位是數(shù)據(jù)可編程位,通過給TB8置1或置0來區(qū)別地址幀和數(shù)據(jù)幀,當(dāng)該位為1時(shí),發(fā)送地址幀;該位為0時(shí),發(fā)送數(shù)據(jù)幀。 在多機(jī)通信過程中,主機(jī)先發(fā)送某一從機(jī)的地址,等待從機(jī)的應(yīng)答,所有的從機(jī)接收到地址幀后與本機(jī)地址進(jìn)行比較,若相同,則將SM2置0準(zhǔn)備接收數(shù)據(jù);若不同,則丟棄當(dāng)前數(shù)據(jù),SM2位不變。
回復(fù)

使用道具 舉報(bào)

ID:190541 發(fā)表于 2017-4-19 15:56 | 顯示全部樓層
循環(huán)語句加上延時(shí);常亮不加延時(shí)
回復(fù)

使用道具 舉報(bào)

ID:190966 發(fā)表于 2017-4-19 17:19 | 顯示全部樓層
·零點(diǎn)· 發(fā)表于 2017-4-19 15:56
循環(huán)語句加上延時(shí);常亮不加延時(shí)

是這樣加么?
uchar i,j;
for(i=t;i>0;i--)
for(j=250;j>0;j--);
}
void shanshuo1()
{
led1=0;
delay(5000);
led2=2;
delay(5000);
led3=1;
delay(5000);
}
void shanshuo2()
{
led2=0;
delay(5000);
led1=1;
delay(5000);
led3=1;
delay(5000);
}
void shanshuo3()
{
led3=0;
delay(5000);
led1=1;
delay(5000);
led2=1;
delay(5000);
}
void shanshuo4()
{
led1=0;
delay(5000);
led2=0;
delay(5000);
led3=1;
delay(5000);
}
void shanshuo5()
{
led2=0;
delay(5000);
led3=0;
delay(5000);
led1=1;
delay(5000);
}
void main()
{
while(1)
{
if(s2==0)
{
timeCnt++;
if(timeCnt==6) timeCnt=0;
}
if(timeCnt==1) shanshuo1();
if(timeCnt==2) shanshuo2();
if(timeCnt==3) shanshuo3();
if(timeCnt==4) shanshuo4();
if(timeCnt==5) shanshuo5();

}
}
回復(fù)

使用道具 舉報(bào)

ID:190966 發(fā)表于 2017-4-19 17:20 | 顯示全部樓層
·零點(diǎn)· 發(fā)表于 2017-4-19 15:56
循環(huán)語句加上延時(shí);常亮不加延時(shí)

親吻怎么添加進(jìn)去呢?似乎是缺少頭文件還是怎么修改呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表