标题: 单片机C语言延时函数 编译时 提示语法错误,大佬们 请指点一下 [打印本页]

作者: han8680713    时间: 2020-11-11 09:39
标题: 单片机C语言延时函数 编译时 提示语法错误,大佬们 请指点一下
void delay(uint jishi);//毫秒延时函数
void TimerInit();//定时器初始化函数
void Time0();//定时器0定时函数
void Time1();//定时器1定时函数
void KeyScan();//按键扫描函数
void waibuzhongduanlingjishu();//外部中断0计数函数
      //void shumaguandisplay(uint qian,uint bai,uint shi,uint ge);//数码管显示函数
      //void shumaguannodisplay(uint qian,uint bai,uint shi,uint ge);//数码管无显示函数
  void main()//主函数
{
   TimerInit();//定时器初始化函数
   IN1=0;//L298M芯片控制端IN1置低电平,电机不运转。
   IN2=0;//L298M芯片控制端IN2置低电平,电机不运转。
   while(1)//死循环

    KeyScan();//按键扫描函数
    {
      if(qitingnum==1)//判断启停键是否第一次按下
             //shumaguandisplay(qian,bai,shi,ge);//数码管显示函数

    //}
   void delay (uint jishi )//延时函数
   {
   uint i,j;
   for(i=jishi;i>0;i--)
      for(j=110;j>0;j--);
    }
   void TimerInit()//定时器初始化函数
{
   TMOD=0x11;//设定定时器为定时器0和定时器1,工作模式都为1。
   TH0=(65536-1000)/256;//TH0装初值为65536-100=65436,即定时100微妙,相当于0.1毫秒。
   TL0=(65536-1000)%256;//TL0装初值为65536-100=65436
   TH1=(65536-50000)/256;//TH1装初值为65536-50000=15536,即定时50000微妙,相当于50毫秒。
   TL1=(65536-50000)%256;//TL1装初值为65536-50000=15536
   EA=1;//全局中断允许
   ET0=1;//打开定时器0中断允许
   TR0=1;//开定时器0      
   EX0=1;//开外部中断0允许
   IT0=1;//设置外部中断0下降触发中断
   ET1=1;//打开定时器1中断允许
   TR1=1;//开定时器1
}



为什么 延时函数  编译时  语法错误呢



作者: 陈都cd    时间: 2020-11-11 11:08
delay()上面的括号被注释掉了,也不能在主函数中写子函数,主函数没有},改变一下位置就好了
作者: boboxuexi    时间: 2020-11-11 11:14
楼上正解
作者: 器车人    时间: 2020-11-11 11:42
检查括号,括号有问题{}
作者: 闫新净    时间: 2020-11-11 13:48
KeyScan();//按键扫描函数
    {
      if(qitingnum==1)//判断启停键是否第一次按下
             //shumaguandisplay(qian,bai,shi,ge);//数码管显示函数

    //}


看这一段,注释//要在}后面;不能在前面
作者: 闫新净    时间: 2020-11-11 13:49
这程序 写的有点凌乱呀,写程序的功夫还不到家 呀
作者: YQR123    时间: 2020-11-11 14:25
   while(1)//死循环      KeyScan();//按键扫描函数    这个死循环的运行范围也只是这个keyscan函数,对 {       if(qitingnum==1)//判断启停键是否第一次按下              //shumaguandisplay(qian,bai,shi,ge);//数码管显示函数      }这段代码没有包含,编译过了也达不到你要的要求吧
作者: YUANYUXING    时间: 2020-11-11 15:10
  IN1=0;//L298M芯片控制端IN1置低电平,电机不运转。
   IN2=0;//L298M芯片控制端IN2置低电平,电机不运转。
   while(1)//死循环

    KeyScan();//按键扫描函数
    {
      if(qitingnum==1)//判断启停键是否第一次按下
             //shumaguandisplay(qian,bai,shi,ge);//数码管显示函数

    //}
这段应该这样子改一下
  
   IN1=0;//L298M芯片控制端IN1置低电平,电机不运转。
    IN2=0;//L298M芯片控制端IN2置低电平,电机不运转。
while(1)//死循环
{
   
    KeyScan();//按键扫描函数
    {
      if(qitingnum==1)//判断启停键是否第一次按下
          shumaguandisplay(qian,bai,shi,ge);//数码管显示函数
}
    }
作者: 2550049233    时间: 2020-11-11 15:29
多熟悉一下 c语言
作者: han8680713    时间: 2020-11-11 19:35
YUANYUXING 发表于 2020-11-11 15:10
IN1=0;//L298M芯片控制端IN1置低电平,电机不运转。
   IN2=0;//L298M芯片控制端IN2置低电平,电机不运转 ...

感谢指导    我 刚接触 单片机 啊  
作者: han8680713    时间: 2020-11-11 19:36
陈都cd 发表于 2020-11-11 11:08
delay()上面的括号被注释掉了,也不能在主函数中写子函数,主函数没有},改变一下位置就好了

感谢 指导    我是  刚刚 接触  单片机的  请谅解
作者: changhz    时间: 2020-11-11 22:13
这里后都被注释掉了
//}
   void delay (uint jishi )//延时函数
   {
   uint i,j;
   for(i=jishi;i>0;i--)
      for(j=110;j>0;j--);
    }
   void TimerInit()//定时器初始化函数
{
   TMOD=0x11;//设定定时器为定时器0和定时器1,工作模式都为1。
   TH0=(65536-1000)/256;//TH0装初值为65536-100=65436,即定时100微妙,相当于0.1毫秒。
   TL0=(65536-1000)%256;//TL0装初值为65536-100=65436
   TH1=(65536-50000)/256;//TH1装初值为65536-50000=15536,即定时50000微妙,相当于50毫秒。
   TL1=(65536-50000)%256;//TL1装初值为65536-50000=15536
   EA=1;//全局中断允许
   ET0=1;//打开定时器0中断允许
   TR0=1;//开定时器0      
   EX0=1;//开外部中断0允许
   IT0=1;//设置外部中断0下降触发中断
   ET1=1;//打开定时器1中断允许
   TR1=1;//开定时器1
}
作者: 123456czst    时间: 2020-11-12 08:46
被注释掉了
//void shumaguandisplay(uint qian,uint bai,uint shi,uint ge);//数码管显示函数
      //void shumaguannodisplay(uint qian,uint bai,uint shi,uint ge);//数码管无显示函数

作者: 心有浮生    时间: 2020-11-12 09:25
少了括号?
作者: qyqx01    时间: 2020-11-12 10:35
一个好的结构框架是你需要的
作者: CGS1273972181    时间: 2020-11-12 10:51
你的delay函数的括号被注释掉了,而且需要在main之外书写子函数,而不是在main里面现写




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1