新聞中心
如何用c語言編寫一段方波
最好還是不要用延時(shí)函數(shù)
創(chuàng)新互聯(lián)在網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、成都app軟件開發(fā)、網(wǎng)站運(yùn)營(yíng)等方面均有出色的表現(xiàn),憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,我們更提供一系列網(wǎng)絡(luò)營(yíng)銷推廣,網(wǎng)站制作和網(wǎng)站推廣的服務(wù),以推動(dòng)各中小企業(yè)全面信息化,并利用創(chuàng)新技術(shù)幫助各行業(yè)提升企業(yè)形象和運(yùn)營(yíng)效率。
比較準(zhǔn)確的方法是利用定時(shí)器
以c51為例:
/*********定時(shí)器方波************/
/*********16位定時(shí)器************/
/************機(jī)器周期1us********/
/*********占空比50%*************/
/*********方波周期1s*************/
int a; // 定義全局整形變量
void int() interrupt 1
{
設(shè)置定時(shí)器初值為500;
a++;
if(a == 1000)
{
"輸出取反"
}
}
如何用C語言編程使單片機(jī)產(chǎn)生方波信號(hào)?
普通51的話需要模擬PWM,如果是加強(qiáng)版51有內(nèi)置PWM模塊,
PIC和AVR以及430還有STM也有集成PWM的型號(hào)!
如果是單純輸出方波的話就簡(jiǎn)單了。
程序如下:
//功能,按下P1_0的開關(guān)降低頻率,按P1_1為升高頻率
#includeAT89X52.H ?//引用AT89X52的庫文件
#define?uchar?unsigned?char ?//替換簡(jiǎn)稱
#define?uint??unsigned?int ?//替換簡(jiǎn)稱
uchar?sm; //定義臨時(shí)變量
void?delay_ms(uint?ms) //延時(shí)子函數(shù),一個(gè)循環(huán)12uS
{
while(--ms);
}
void?T0_IRQ(void)?interrupt?TF0_VECTOR ?//定時(shí)器0中斷函數(shù)
{
TH0=sm; ?//將變量賦予定時(shí)器0的高位
P2_0=!P2_0; ?//翻轉(zhuǎn)IO
}
?//寄存器初始化子函數(shù)
void?mcu_init()
{
ET0=1; //開定時(shí)器0中斷
EA=1; ??? //開總中斷
TMOD=0x01;? //設(shè)置為16位定時(shí)器0
TH0=0xFF; //填充定時(shí)器高位
TR0=1; //開定時(shí)器0
sm=0xFF; //變量初始化
}
void?main() //主函數(shù)
{
mcu_init(); //調(diào)用初始化函數(shù)
while(1) //主循環(huán)
{
if((!P1_0)||(!P1_1))?? //檢測(cè)是否有按鍵按下
{
delay_ms(8333); //延時(shí)去抖
if(!P1_0) //如果是P1_0按鍵按下
{
while(!P1_0); //等待按鍵放手
if(sm) //檢測(cè)變量不為0
{
? --sm; //自減1
P2_1=1; //取消邊界LED
}
else?P2_1=0; //到達(dá)邊界點(diǎn)亮LED
}
else?if(!P1_1) //否則如果P1_1按鍵按下
{
while(!P1_1); //等待按鍵放手
if(sm0xFF) //檢測(cè)變量小于0xFF
{
?? ++sm; ? //自加1
P2_1=1;
}
else?P2_1=0;
}
}
}
}
怎樣用C語言編寫一個(gè)方波函數(shù)?
附上代碼,講解在后面:
public class Program
{
static void Main(string[] args)
{
ListPoint range = new ListPoint(5 * 5);
for (int i = 0; i 5; i++)
{
for (int j = 0; j 5; j++)
{
range.Add(new Point { X = j, Y = i });
}
}
//移動(dòng)方向的順序
MoveDirection[] md = new[]
C語言編寫輸出方波
以12M晶振,50ms為例
用定時(shí)器寫
以下是中斷程序
void pwm_1() interrupt 1
{
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
P1^0=~P1^0;
}
名稱欄目:c語言寫方波函數(shù),C語言方程
本文來源:http://www.dlmjj.cn/article/heshid.html