游承RGC承实验名*实验说明*注意:步进电机角度控制:通过不同的按键控制步进电机角度分别是5度10度30度45度■■4(***穴4(***穴*穴****4(*穴****穴4(*4(*4(*4(******穴******穴**穴*穴****4(*穴**4(*4(**4(*4(*4(***「*穴*4(***/#inelude//-定义使用的10□-//sbitpls=PlA0;sbitdir=PlAl;sbitkl=P2Al;sbitk2=P2A2;sbitk3=P2A3;sbitk4=P2A4;sbitk5=P2A5;sbitk0=P2A0;sbitpls2=P2A7;sbitden=P3A7;〃-定义一个全局变量-〃unsignedcharcont=0;unsignedinttimerl=0;voidDelaylOms(unsignedintc);〃延时10msvoidTimelConfig();承函数名*函数功能*输入*输出:main:主函数:无:无^^************^*^******************************************************^*^**♦♦♦voidmain(void)den=O;pls=O;dir=l;timerl=O;ITO=1;〃下降沿触发EXO=1;pls2=l;TimelConfig();while(l){if(kO==O){Delayl0ms(2);if(kO==O){pls2=O;timerl=0;}}elsepls2=l;〃长转动if(cont==l){if(kl==O)TRI=1;elseTRI=0;den=l;}else{TRI=0;den=O;}//5duif(cont==2){if(k2==0){if(timerl>=44){TRI=0;}elseTRI=1;}elsetimerl=0;}elseTRI=0;//10duif(cont==3){if(k3==0){if(timerl>=89){TRI=0;}elseTRI=1;}elsetimerl=0;}elseTRI=0;//30duif(cont==4){if(k4==0){if(timerl>=267){TRI=0;}elseTRI=1;}elsetimerl=0;}elseTRI=0;//45duif(cont==5){if(k5==0){if(timerl>=400){TRI=0;}elseTRI=1;}elsetimerl=0;承函数名TimelConfig设置定时器无无elseTRI=0;if(cont>5)cont=0;*宣穴******穴*****宣穴*宣*宣)|(*穴*穴****穴*穴****穴*宣*********穴*穴*宣穴*穴*穴**4(*穴*穴**穴*****宣穴*^******************************************************************************voidTimelConfig(){TMOD|=OxlO;〃设置定时计数器工作方式1为定时器〃-定时器赋初始值,12MHZ下定时0.5ms-//THl=0xb8;TL1=0x42;//THl=0xdc;//TLl=0x21;ETl=1;〃开启定时器1中断EA=1;〃开启定时器}*宣穴******穴*****宣穴*宣*宣)|(*穴*穴****穴*穴****穴*宣*********穴*穴*宣穴*穴*穴**4(*穴*穴**穴*****宣穴*^******************************************************************************voidTimel(void)interrupt3//3为定时器1的中断号1定时器0的中断号0外部中断*输出无承函数名}12外部中断24串II中断//THl=0xe8;〃重新赋初值//TL1=Oxf7;THl=Oxfd;〃重新赋初值TL1=0x7b;timerl++;pls=!pls;}*INTO中断函数voidcounterO(void)interrupt0using1EXO=O;cont++;EXO=1;}DelaylOms延时函数,延时10ms无无voidDelaylOms(unsignedintc)〃误差Ous{unsignedchara,b;//-C已经在传递过来的时候已经赋值了,所以在f(K语句第一句就不用赋值了-〃for(;c>0;c-){for(b=3&b>O;b-)for(a=130;a>0;a-);