//驱动步进电机以150r/min运动//#includesbitPL0=P1^0;sbitDIR0=P1^1;unsignedintTH1_R,TL1_R,num_R,a;voidT1_int(void)interrupt3{EA=0;关中断PL0=~PL0;中断到时脉冲取反TH1=TH1_R;重新装入定时器初值TL1=TL1_R;EA=1;允许总中断}voidmain(void){P1=0xff;do{DIR0=0;a=500;500为150r/min对应的频率EA=1;总段允许ET1=1;T1定时器/计数器中断允许TMOD=TMOD&0x0f;设定T1工作方式TMOD=TMOD|0x10;TH1_R=(65536-11059200/24/a)/256;根据频率计算定时器初值TL1_R=(65536-11059200/24/a)%256;TH1=TH1_R;装入初值TL1=TL1_R;TR1=1;启动定时器1结束后会触发中断执行voidT_1子程序}while(1);}硬件接线图#includebdataunsignedcharX_IMG[2]={0x00,0x00};bdataunsignedcharY_IMG[2]={0x00,0x00};bitT0_flag,T0_triger,T0_end,T1_flag,T1_triger,rotate_trigger,rotate_end;unsignedcharT0_times,T1_times;sbitK1_IMG=X_IMG[0]^0;sbitK2_IMG=X_IMG[0]^1;sbitK3_IMG=X_IMG[0]^2;sbitK4_IMG=X_IMG[0]^3;sbitK1R=P1^4;sbitK2R=P1^5;sbitK3R=P1^6;sbitK4R=P1^7;sbitPL0=P1^0;sbitDIR0=P1^1