单片机运行出现 expression with possibly no effect

问题描述

单片机运行出现 expression with possibly no effect
#include
#include
#define uchar unsigned char
#define uint unsigned int

sbit CS88 = P2^2; //8X8点阵使能
sbit DS1302=P2^7; //HJ-C52主板 时钟复位 关掉DS1302 以免影响其他IO口实验。
sbit LCD1602=P2^5;//HJ-C52主板 LCD1602复位 关掉LCD1602显示 以免影响其他IO口实验。

void delay1();

//Motor
sbit F1 = P1^0;
sbit F2 = P1^1;
sbit F3 = P1^2;
sbit F4 = P1^3;

unsigned char code FFW[8]={0xfe0xfc0xfd0xf90xfb0xf30xf70xf6}; //反转
unsigned char code FFZ[8]={0xf60xf70xf30xfb0xf90xfd0xfc0xfe}; //正转
unsigned int K rate;

sbit dula=P2^6;
sbit wela=P2^7;
sbit LCD_RS = P1^0;

sbit LCD_RW = P1^1;
sbit LCD_EN = P2^5;

int time;
int succeed_flag;
uchar timeL;
uchar timeH;
uchar distance;
uchar H;
sbit Trig=P2^4;
sbit Echo=P3^2;
uchar code dis1[] = {""The juli is: ""};
uchar dis2[] = {0x300x310x320x330x340x350x360x370x380x39};

/**********************************************************

  • *
  •             步进电机驱动                              *

    ***********************************************************/
    void motor_ffw(void)
    {
    unsigned char i;

    for (i=0; i<8; i++) //一个周期转30度
    {
    P1 = FFW[i]&0x1f; //取数据

      delay1();           //调节转速}

    }

/********************************************
延时程序
*********************************************/

void delay1(void)

{

unsigned int kt;
t=rate;
while(t--)
{
for(k=0; k<150; k++)
{ }
}
}

/********************************************************

  • *步进电机运行
  • *********************************************************/
    void motor_turn(void)
    {
    unsigned char x;
    rate=0x0a;
    x=0x40;
    do
    {
    motor_ffw(); //加速
    rate--;
    }while(rate!=0x01);
    do
    {

    motor_ffw(); //匀速
    x--;
    }while(x!=0x01);

    do
    {
    motor_ffw(); //减速
    rate++;
    }while(rate!=0x0a);

    }

void delay2(int ms)
{

int i;
while(ms--)
{
for(i = 0; i< 110; i++)
{
nop();
}
}
}
void delay2_20us()
{
uchar a ;
for(a=0;a<100;a++);
}
bit lcd_busy()
{

bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
nop();
nop();
nop();
nop();
result = (bit)(P0&0x80);
LCD_EN = 0;
return result;
}
void lcd_wcmd(uchar cmd)
{

while(lcd_busy());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
nop();
nop();
P0 = cmd;
nop();
nop();
LCD_EN = 1;
nop();
nop();
LCD_EN = 0;

}
void lcd_wdat(uchar dat)
{

while(lcd_busy());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
nop();
nop();
LCD_EN = 1;
nop();
nop();

LCD_EN = 0;
}
void lcd_pos(uchar pos)
{

lcd_wcmd(pos|0x80); //数据指针=80+地址变量
}
void lcd_init()
{

dula=0;
wela=0;

lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
delay2(5);
lcd_wcmd(0x38);

delay2(5);
lcd_wcmd(0x38);

delay2(5);
lcd_wcmd(0x0c); //显示开,关光标
delay2(5);
lcd_wcmd(0x06); //移动光标
delay2(5);
lcd_wcmd(0x01); //清除LCD的显示内容
delay2(5);
}
main()
{
uchar iabc;

delay2(10);
lcd_init(); // 初始化LCD
Trig=0; //首先拉低脉冲输入引脚
EA=1; //打开总中断0
TMOD=0x10; //定时器1,16位工作方式
while(1)

{
EA=0; //关总中断
Trig=1; //超声波输入端
delay2_20us(); //延时20us
Trig=0; //产生一个20us的脉冲
while(Echo==0); //等待Echo回波引脚变高电平
succeed_flag=0; //清测量成功标志
EA=1;
EX0=1; //打开外部中断0
TH1=0; //定时器1清零
TL1=0; //定时器1清零
TF1=0; //计数溢出标志
TR1=1; //启动定时器1
delay2(20); //等待测量的结果
TR1=0; //关闭定时器1
EX0=0; //关闭外部中断0
if(succeed_flag==1)
{

time=timeH*256+timeL;
distance=time*0.0172; //毫米
H=100 - distance;
}

if(succeed_flag==0)
{
distance=0; //没有回波则清零

    }       a=H/100;  b=(H%100)/10;  c=H%10;                    lcd_wcmd(0x06);           //向右移动光标  lcd_pos(0);         //设置显示位置为第一行的第1个字符  i = 0; while(dis1[i] != '') {                                     //显示字符   lcd_wdat(dis1[i]);   i++;   delay2(2);                     //控制两字之间显示速度 }                                                        lcd_pos(0x45);        //设置显示位置为第二行第1个字符  lcd_wdat(dis2[a]);  delay2(2);                                    lcd_wdat(dis2[b]);  delay2(2);                               lcd_wdat(dis2[c]);  delay2(2);   lcd_wdat('c');  delay2(2);   lcd_wdat('m');  delay2(2);       if(distance>10)          motor_turn;

}
}

void exter() interrupt 0 // 外部中断0是0号
{

EX0=0; //关闭外部中断
timeH =TH1; //取出定时器的值
timeL =TL1; //取出定时器的值
succeed_flag=1;//至成功测量的标志
}
void timer1() interrupt 3 //
{
TH1=0;
TL1=0;
}
出现这种情况为什么MAIN.C(252): warning C275: expression with possibly no effect

解决方案

今天运行一个以前的项目,突然出现了如下错误

原因是这个项目工程没有标志,

在Bundle identifier后面填上你的标识就行了记得运行前Command+shift+k清空一下......
答案就在这里:iOS运行出现No application was specified.

解决方案二:
这句话的意思是,表达式没有影响,就是说你警报的地方做了一次无意义的操作,看看你的运算符是不是搞错了。

解决方案三:
if(distance>10)

 motor_turn; //这一句 行数调用 忘了加括号 motor_turn();
时间: 2024-10-30 03:32:02

单片机运行出现 expression with possibly no effect的相关文章

单片机编程

(一) 先声明一个概念,裸编程,我创造的名词,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系统,不要想歪咯. 在裸机上编程,就犹如在一片荒地上开垦,任何一锄头下去,都会碰到硬生生的石头,要说做这有什么味?拓荒者追求的是来年的绿洲.而我们这些开垦裸机的所谓的工程师们追求的是什么?我们当然追求的是完成一个任务. 我们一般都自称是高级知识分子,那么我们在拓荒的过程中应该想些什么?当然不是想着如何把任务完成,而应该首先想着我们在想些什么.绕了是不?绕了就对了,这一绕就绕出了思想.

《我和PIC单片机:基于PIC18》——第3章 仿真 3.1 MPLAB SIM软件模拟器

第3章 仿真 在第2章中,我们在MPLAB IDE集成开发环境下,编写了C程序,通过PICkit 2编程器,将程序下载到单片机中,并且观察到了程序运行的效果.应该说,这一过程也是我们开发PIC的基本步骤.但有的时候,程序并不都像点亮几个流水灯那么简单,而且运行后的结果也不一定是我们想要的,为了修正错误,就必须在成百上千的程序行中找出Bug,这是一件让开发者头痛的事情.本章给大家介绍的仿真调试能帮助开发者快速定位Bug,修正程序中的问题,从而得到正确的运行结果. 3.1 MPLAB SIM软件模拟

《51单片机应用开发从入门到精通》——1.3 Keil uVision2集成开发环境

1.3 Keil uVision2集成开发环境 51单片机应用开发从入门到精通 uVision2 IDE是Keil software公司的产品,它集项目管理.编译工具.代码编写工具.代码调试以及完全仿真于一体,特别适用于个人开发或者人数少.对开发过程的管理还不成熟的开发团体.这一功能强大的软件提供简单易用的开发平台,可以让开发者在开发过程中集中精力于项目本身,加快开发速度. 1.3.1 uVision2介绍 uVision2的界面窗口如图1-13所示,该软件提供了丰富的工具,常用命令都具有快捷工

51单片机入门程序

注:昨天有同学指正说流水灯会影响脉冲输出,造成4s时间的延误.这里说明下,程序设计的初衷是让每个任务独立运行,意思就是当流水灯任务执行的时候脉冲输出任务就被挂起,不过实际上流水灯工作的时候脉冲输出引脚的确会一直维持一个电平,没考虑周详,多谢这位同学提出.最后附上了新的解决方案,中断方式,欢迎同道指正. 需求:通过按下不同的按键让STC89C52RC控制电机以不同的转速运行或者控制LED实现流水灯. 需求分析: 按下按键1流水灯开始工作,按下按键2电机以低转速运行,按下按键3电机以中转速运行,按下

《我和PIC单片机:基于PIC18》——2.2 MPLAB IDE集成开发环境

2.2 MPLAB IDE集成开发环境 MPLAB IDE软件由MICROCHIP公司出品,专门用于为其旗下的PIC单片机及dsPIC数字信号处理器开发应用程序.MPLAB IDE软件提供了一个完整的PIC开发过程支持,因此被称为集成开发环境(IDE).为了更好地理解集成开发环境的概念,我们需要先来了解一下单片机系统的开发过程. 2.2.1 单片机系统开发过程 PIC单片机组建单片机系统时,其开发过程一般要经历以下几个步骤: 1)创建设计方案.根据所需的功能要求,决定最适合的PIC单片机型号,并

stm32之GPIO(二)

输入上拉:当IO口作为输入时,比如按键输入,而按键是与地连接,按下时为低电平,则没按下时该IO口应为高电平,上拉即是该IO口通过一个电阻与电源相连,则没按下时为高电平,按下即为低电平.      输入下拉:同理此时按键与电源相连,按下即为高电平,下拉就是该IO口通过一个电阻与地相连,没按下为低电平,按下为高电平.        推挽输出:作为普通的IO口输出高低电平 STM32的输入输出管脚有下面8种可能的配置:(4输入.2输出.2复用输出) 1.浮空输入_IN_FLOATING 2.带上拉输入

51单片机数组赋值,中断不运行

问题描述 51单片机数组赋值,中断不运行 #include #define uchar unsigned char #define uint unsigned int uchar num,num1,begin,temp,flag; uchar a[10]; void delay(uint x) { uchar y; for(x;x>0;x--) for(y=255;y>0;y--); } void init()//初始化 { TMOD=0x20; TH1=0xfd;//9600 TL1=0xf

正则表达式regular expression详述(一)

express|正则 正则表达式是regular expression,看来英文比中文要好理解多了,就是检查表达式符 不符合规定!!正则表达式有一个功能十分强大而又十分复杂的对象RegExp,在JavaScript1.2 版本以 上提供. 下面我们看看有关正则表达式的介绍: 正则表达式对象用来规范一个规范的表达式(也就是表达式符不符合特定的要求,比如是不是Email 地址格式等),它具有用来检查给出的字符串是否符合规则的属性和方法. 除此之外,你用RegExp构造器建立的个别正则表达式对象的属性

运行时和编译时元编程—编译时元编程

原文链接    译文链接     译者:JackWang 运行时和编译时元编程 第二部分 2 编译时元编程 Groovy的编译时元编程支持编译时生成代码.这些变换(译者注:原文该专有名词是transformations,译者直译为变换,也许不准确.如果有知道准确翻译的读者恳请不吝赐教,待译者修正)叫做程序的抽象语法树(AST),在Groovy里,我们叫做AST变换.AST变换支持在编译过程中植入钩子,修改抽象语法树之后继续编译生成正常的字节码流.和运行时元编程相比,这种转换可以在类文件的修改可见