为了账号安全,请及时绑定邮箱和手机立即绑定

单片机加上延时函数 IO口输出就不正常,为什么啊?

单片机加上延时函数 IO口输出就不正常,为什么啊?

慕的地8271018 2023-01-12 15:11:23
延时函数屏蔽掉就正常改一下 输出变得更怪异 有谁知道是怎么回事么附void delay1ms(uchar t) //1ms延时{uchar a,b;for(a=0;a<t;a++)for(b=0;b<125;b++);}#include <reg52.h> #define uchar unsigned char  #define uint unsigned int  #define ulong unsigned long sbit IN4=P1^2; //B-sbit IN3=P1^3; //B+sbit EN2=P1^4; //B使能 sbit IN2=P1^5; //A- sbit IN1=P1^6; //A+sbit EN1=P1^7; //A使能uchar np;uchar steptable[]={//时序表 0-7为正转,7-0为反转0xd3, 0xdb,0x9b,0xbb,0xb3,0xb7,0x97,0xd7};void delay1ms(uchar t) //1ms延时{uchar a,b;for(;t>0;t--)for(a=2;a>0;a--)for(b=220;b>0;b--);}void a_step(uchar d,uchar t) {if(d&0x01) {if(np==0)  np=7;  else np--; }else{if(np==7)np=0;else np++;}P1=steptable[np];delay1ms(t); }void a_turn(uchar d,uchar t){ uchar i;for(i=0;i<96;i++)a_step(d,t);}void main(void){while(SEN){ a_step(0,200); }while(1) //主循环{ a_turn(0,200);}}
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

uchar np;定义的是无符号的
这里有错
{if(np==0)  
np=7;  
else np--; }np--的话减为负的就溢出了。
这是步进电机的程序?加延时有什么问题?

查看完整回答
反对 回复 2023-01-15
?
呼如林

TA贡献1798条经验 获得超3个赞

延时应该跟输出没关系的吧,有没有电路图看看。
还有那np最好给个初值,不然在定义的时候np的值不就是未知的那在计算的时候可能有错


查看完整回答
反对 回复 2023-01-15
  • 2 回答
  • 0 关注
  • 201 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号