烈220 2022-06-16 15:12 采纳率: 100%
浏览 21
已结题

进步电机换档位实验,程序一直有两个warning

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

           uchar code tade0[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

           sbit K1=P3^0;
           sbit K2=P3^1;
           sbit K3=P3^3;
           sbit k4=P3^4;
           sbit RS=P3^5;
           sbit RW=P3^6;
           sbit E=P3^7;

           int speed;
           uchar num;
           uint m=0;
           uint xms;

           void delayMS()
           {
              TF0=0;TR0=1;
              while(TF0==0);
              TR0=0;
              TL0=(65536-40)/256;
              TH0=(65536-40)%256;
           }
           
           void delay(uchar xms)
           {
             uchar a;
             while    (xms--)
             for(a=125;a>0;a--);

           }
           void write_com(uchar com)
           {
             
             RS=0;
             RW=0;
             P0=com;
             delay(5);
             E=1;
             delay(5);
             E=0;
           }

           void write_data(uchar date)
           {
             
             RS=1;
             RW=0;
             P0=date;
             delay(5);
             E=1;
             delay(5);
             E=0;
           }

           void LCD1602_init()
           {
              write_com(0x38);
              write_com(0x0c);
              write_com(0x06);
              write_com(0x01);
           }
           void display()
           { 
             LCD1602_init();                                     //速度显示在LCD上
             write_com(0x80);
             write_data(0x20);
             write_data(0x53);
             write_data(0x3a);
             write_data(0x20);
             write_data(0x3d);
             write_data(0x30+speed/100);
             write_data(0x30+speed/10%10);
             write_data(0x2e);
             write_data(0x30+speed%10);
             write_data(0x72);
             write_data(0x2f);
             write_data(0x73);
           }
           void main()
           {
             uchar i=1,j;
             EA=1;
             EX0=1;
             IT0=1;
             ET0=1;
             TMOD=0X01;
             TL0=(65536-40)/256;
             TH0=(65536-40)%256;
             TR0=1;
             P1=0X00;
             switch(m)
             {
              case 0x30: speed=0;break;                            //速度选择1234档
              case 0x31: speed=100;break;
              case 0x32: speed=125;break;
              case 0x33: speed=155;break;
              case 0x34: speed=208;break;
              default:break;
             }
             while(1)
             {
               if(m==0)      break;
               else if(m==1)
               {  
                 num = 60;
                 for(;i<9;i++)
                 {
                  P1=tade0[i-1];
            
  • 写回答

1条回答 默认 最新

  • qllaoda 2022-06-16 15:28
    关注

    把warning内容贴出来啊。代码也没贴完。
    不过虽然没有贴完,但是已经看出一个问题。
    for(;i<9;i++) ,这个for循环没有初始条件,也就是说i不会被重置为1,而这句话又在while(1)循环里,所以,这个for循环只能被执行一次,后面就无法满足进入条件了,因为进入的时候i的值是上一次退出时候的值,已经不满足条件了。不知道是你就是这样设计的,还是别的什么原因。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月24日
  • 已采纳回答 6月16日
  • 创建了问题 6月16日

悬赏问题

  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 关于无人驾驶的航向角
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了