|
樓主用心良苦。讓我們練習(xí)打代碼出來。,不讓自己復(fù)制
。代碼我打好了:
#include <reg52.h>
unsigned char timerl;
sbit ENA=P2^2; //位定義ENA為P1.1, 控制步進(jìn)電機(jī)的使能
sbit DIR=P2^1; //位定義DIR為P1.0口,控制步進(jìn)電機(jī)轉(zhuǎn)向
sbit PWM=P2^0; //位定義PwM為P1.2,用來輸出PMw波
void system_Ini()
{
TMOD|= 0x11;
TH1 = 0xfe; //11.0592MHz 0. 5ms定時(shí)
TL1 = 0x33;
TR1 = 1; //啟動(dòng)T1定時(shí)器
IE =0x8A; //開r0,I1中斷,開總中斷
}
main()
{
system_Ini(); //調(diào)用子函數(shù)初始化定時(shí)器T1
while (1)
{
if (timerl>10)//原始是10
//此處10很關(guān)鍵,決定這一個(gè)脈沖的周期時(shí)間,此處o. 5ms*10=5ms
{
timerl=0; //輸出占空比為o.7的PwM波
}
if (timerl<3)
{
PWM=0;
}
else
{
PWM=1;
}
}
}
//[ t1 (0.5ms)中斷] 中斷中做PWM輸出1000/ (0. 02ms*250)
//--- 1000/ (0.02ms*250)=200Hz, 也就是1秒中輸出200個(gè)脈沖
void T1zd (void) interrupt 3 //開定時(shí)器1中斷
{
TH1 = 0xfe; //11.0592Hz,0. 5ms初始化定時(shí)器,讓定時(shí)器復(fù)位繼續(xù)定時(shí)
TL1 = 0x33;
timerl ++;
//計(jì)數(shù)+1
}
|
|