標(biāo)題: 我是新手,用P0.0產(chǎn)生周期0.1ms脈沖,作為計(jì)數(shù)器T1輸入,定時(shí)器T0定時(shí)1ms,在定時(shí)器中斷中判斷技術(shù)脈沖個(gè)數(shù),進(jìn)而驅(qū)動(dòng)電機(jī)正反轉(zhuǎn),問題是拷進(jìn)代碼后蜂鳴器 [打印本頁]
作者: jiebaoxiao 時(shí)間: 2012-6-7 15:09
標(biāo)題: 我是新手,用P0.0產(chǎn)生周期0.1ms脈沖,作為計(jì)數(shù)器T1輸入,定時(shí)器T0定時(shí)1ms,在定時(shí)器中斷中判斷技術(shù)脈沖個(gè)數(shù),進(jìn)而驅(qū)動(dòng)電機(jī)正反轉(zhuǎn),問題是拷進(jìn)代碼后蜂鳴器
這是程序代碼
#include<reg52.h>
#include <intrins.h>
sbit wave=P0^0;
unsigned char Flag;//定義正反轉(zhuǎn)和停止標(biāo)志位
//sbit KEY = P3^3;
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正轉(zhuǎn)表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反轉(zhuǎn)表格
void Delay(unsigned int i)//延時(shí)
{
while(--i);
}
void T0ISR(void) interrupt 1
{
unsigned char i;
unsigned char a;
a=TL1;
while(a>3&& a<11)
{
for(i=0;i<4;i++) //4相
{
P2=F_Rotation; //輸出對(duì)應(yīng)的相 可以自行換成反轉(zhuǎn)表格
Delay(500); //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大
}
}
while(a<3||a>11)
{
for(i=0;i<4;i++) //4相
{
P2=B_Rotation; //輸出對(duì)應(yīng)的相
Delay(500); //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大
}
}
a=0;
TL1=0;
TL0=0x18;
TH0=0x1c;
}
void delay1()
{
unsigned char a,b,c;
for(a=0;a<1;a++)
for(b=0;b<1;b++)
for(c=0;c<61;c++);
}
void main()
{
TMOD=0x40;
TL0=0x18;
TH0=0x1c;
TR0=1;
TR1=1;
ET0=1;
EX1=1; //外部中斷0開
IT1=1; //邊沿觸發(fā)
EA=1;
while(1)
{
wave=0;
delay1();
wave=1;
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |