花了一點時間寫的,只有55行代碼,大約1KB(實際上是846B),可以實現正反轉,停止功能,帶有指示燈。
單片機源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code ffw[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};
- uchar code rev[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
- sbit k1=P3^0;
- sbit k2=P3^1;
- sbit k3=P3^2;
- void delayms(uint ms){
- uchar i;
- while(ms--){
- for(i=0;i<120;i++);//120
- }
- }
- void step_motor_ffw(uint n){
- uint i,j;
- for(i=0;i<512*n;i++){
- for(j=0;j<8;j++){
- if(k3==0){
- break;
- }
- delayms(1);
- P1=ffw[j];
- }
- }
- }
- void step_motor_rev(uint n){
- uint i,j;
- for(i=0;i<512*n;i++){
- for(j=0;j<8;j++){
- if(k3==0){
- break;
- }
- delayms(1);
- P1=rev[j];
- }
- }
- }
- void main(){
- uint x=1;
- while(1){
- if(k1==0){
- P2=0xfe;
- step_motor_ffw(x);
- }else if(k2==0){
- P2=0xfd;
- step_motor_rev(x);
- }else{
- P2=0xfb;
- P1=0x00;
- }
- }
- }
復制代碼
|