樓主用心良苦。讓我們練習打代碼出來。,不讓自己復制
。代碼我打好了:
#include <reg52.h>
unsigned char timerl;
sbit ENA=P2^2; //位定義ENA為P1.1, 控制步進電機的使能
sbit DIR=P2^1; //位定義DIR為P1.0口,控制步進電機轉向
sbit PWM=P2^0; //位定義PwM為P1.2,用來輸出PMw波
void system_Ini()
{
TMOD|= 0x11;
TH1 = 0xfe; //11.0592MHz 0. 5ms定時
TL1 = 0x33;
TR1 = 1; //啟動T1定時器
IE =0x8A; //開r0,I1中斷,開總中斷
}
main()
{
system_Ini(); //調用子函數初始化定時器T1
while (1)
{
if (timerl>10)//原始是10
//此處10很關鍵,決定這一個脈沖的周期時間,此處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個脈沖
void T1zd (void) interrupt 3 //開定時器1中斷
{
TH1 = 0xfe; //11.0592Hz,0. 5ms初始化定時器,讓定時器復位繼續定時
TL1 = 0x33;
timerl ++;
//計數+1
}
|