|
接收判断就是不行比如我用while(receiveData=="1")就是判断不了,只能自己设一个中间变量flag辅助判断,求大神指教。自己磨了好久。
- #include<reg52.h>
- #include<intrins.h>
- #include<stdio.h>
- #include<string.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define MotorData P1 //步进电机控制接口定义
- uchar phasecw[8] ={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//正转 电机导通相序 D-C-B-A
- uchar phaseccw[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//反转 电机导通相序 A-B-C-D
- uint sem=1,sam=1,speed=2;//信号量
- uint flag=0;
- uchar receiveData;
- /*
- sbit k1=P3^1;
- sbit k2=P3^0;
- sbit k3=P3^2;
- sbit k4=P3^3;*/
- //ms延时函数
- void Delay_ms(uint x)
- {
- uint i,j;
- for(i=0;i<x;i++)
- for(j=0;j<112;j++);
- }
- //顺时针转动
- void MotorCW(void)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- MotorData=phasecw[i];
- Delay_ms(speed);//转速调节
- }
- i=0;
- }
- //逆时针转动
- void MotorCCW(void)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- MotorData=phaseccw[i];
- Delay_ms(speed);//转速调节
- }
- }
- /*******************************************************************************
- * 函数名 :UsartInit()
- * 函数功能 :设置串口
- * 输入 : 无
- * 输出 : 无
- *******************************************************************************/
- void UsartInit()
- {
- SCON=0X50; //设置为工作方式1
- TMOD=0X20; //设置计数器工作方式2
- PCON=0X80; //波特率加倍
- TH1=0XF4; //计数器初始值设置,注意波特率是4800的
- TL1=0XF4;
- ES=1; //打开接收中断
- EA=1; //打开总中断
- TR1=1; //打开计数器
- REN=1;
- }
- /*******************************************************************************
- * 函数名 : Usart() interrupt 4
- * 函数功能 : 串口通信中断函数
- * 输入 : 无
- * 输出 : 无
- *******************************************************************************/
- void Usart() interrupt 4
- {
- TH1=0XF4; //计数器初始值设置,注意波特率是9600的
- TL1=0XF4;
- //uchar receiveData;
- if(RI==1)
- {
- flag=1;//表示已经接收到数据
- receiveData=SBUF;//出去接收到的数据
- RI = 0;//清除接收中断标志位
- }
- }
- void main(void)
- {int a=0;
- while(1)
- { UsartInit();
- MotorData=0x00;
-
- //keypros();
- while(flag==1)//如果用while(receiveData=="1")就是判断不出来
- {
- for(a=0;a<25;a++)
- {MotorCW();
- Delay_ms(speed);//转速调节
- }
- Delay_ms(10);//转速调节
- flag=0;
- // keypros();
- }
- }
- }
复制代码
|
|