接收判斷就是不行比如我用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();
- }
- }
- }
復制代碼
|