用89C52產生控制二相步進電機的程序,用PWM信號控制步進電機
用普通I/O口采用軟件定時器中斷可以模擬PWM輸出
/*采用6MHz晶振,在P1.0腳上輸出周期為2.5s,占空比為20%的脈沖信號*/ /*定時100ms,周期2.5s需25次中斷,高電平0.5s需5次中斷*/ #include <reg51.h> typedef unsigned char uchar; sbit P1_0=P1^0; uchar time=0; uchar period=25; uchar high=5; void timer0() interrupt 1 using 1 { TH0=0x3c; /*定時器初值重裝載*/ TL0=0xb0; time++; if(time==high) /*高電平持續時間結束,變低*/ { P1_0=0;} else if(time==period) /*周期時間到,變高*/ { time=0; P1_0=1; } } void main() { TMOD=0x01; /*定時器0方式1*/ TH0=0x3c; /*定時器裝載初值*/ TL0=0xb0; EA=1; /*開CPU中斷*/ ET0=1; /*開定時器0中斷*/ TR0=1;/*啟動定時器0*/ while(1) /*等待中斷*/ {} }