切换到宽版
爱科技/爱创意/爱折腾;电子/数码爱好者的家!欢迎访问新版数码之家网站
  • 2515阅读
  • 12回复

[C51]4路定时开关程序,经过整理,时间设置这里有问题,请高手指点一下 [复制链接]

上一主题 下一主题
离线数码家园
 

发帖
5228
M币
16486
专家
31
粉丝
540
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-03-26
4路定时开关程序,网上抄来的程序,经过整理,时间设置这里有问题,实在没辙了,请高手指点一下。先在此感谢!!!
错误提示



下面有表情符号的地方做了标记

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int /*0~2^16-1*/
#define uchar unsigned char  /*0~2^8-1*/
#define N 46080 /*N=50000*f0/12,定时50ms*/
#define M 20 /* 定时M*0.05s */  uint shi,fen;
#define num3(X2) ((X2)/10)
#define num2(X2) ((X2)%10)
#define num1(X1) ((X1)/10)
#define num0(X1) ((X1)%10)  
sbit W1=P0^3;
sbit W2=P0^2;
sbit W3=P0^1;
sbit W4=P0^0;
sbit led=P3^5;
sbit H1=P3^6;
sbit H2=P3^7;
sbit huiluA=P2^0;
sbit huiluB=P2^1;
sbit huiluC=P2^2;
sbit huiluD=P2^3;  
sfr P1M1=0x91;//和后面的main函数中的    
sfr P1M0=0x92;//P1M1 P1M0合在一起增加亮度
sfr P2M1=0x95;
sfr P2M0=0x96;
uint num/*T0_timer*/,num0/*T0_timer*/,num1,key/*matrixkeyscan*/; //定义全局变量
uchar k2=0,k3=0,k5=1,k6=0;//按键计数
uchar A0_shi=12,A0_fen=30,A1_shi=13,A1_fen=30, B0_shi=12,B0_fen=30,B1_shi=13,B1_fen=30, C0_shi=12,C0_fen=30,C1_shi=13,C1_fen=30, D0_shi=12,D0_fen=30,D1_shi=13,D1_fen=30;//继电器定时起点、终点  
uchar code duanxuan[]={0x3f,/*显示0*/0x06,/*显示1*/0x5b, /*显示2*/0x4f,/*显示3*/0x66,/*显示4*/0x6d,/*显示5*/0x7d, /*显示6*/0x07,/*显示7*/0x7f,/*显示8*/0x6f,/*显示9*/0x77, /*显示A*/0x7c,/*显示B*/0x39,/*显示C*/0x5e,/*显示D*/0x79, /*显示E*/0x71/*显示F*/};  
void delay_ms(uint xms)      //*延时子函数程序*/
{        
uint i,j;  
for(i=xms;i>0;i--)    
for(j=250;j>0;j--); //*该层循环延时约1ms*/
}
/****************************************************/
typedef unsigned char BYTE;
typedef unsigned int  WORD;  
/*Declare SFR associated with the IAP*/
sfr IAP_DATA = 0xC2;  //Flash data register
sfr IAP_ADDRH = 0xC3;  //Flash address HIGH
sfr IAP_ADDRL = 0xC4;  //Flash address LOW
sfr IAP_CMD  = 0xC5;  //Flash command register
sfr IAP_TRIG = 0xC6;  //Flash command trigger
sfr IAP_CONTR = 0xC7;  //Flash control register  
/*Define ISP/IAP/EEPROM command*/
#define CMD_IDLE 0  //Stand-By
#define CMD_READ 1  //Byte-Read
#define CMD_PROGRAM 2  //Byte-Program
#define CMD_ERASE 3  //Sector-Erase  
/*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
//#define ENABLE_IAP 0x80
//SYSCLK<30MHz
//#define ENABLE_IAP 0x81
//SYSCLK<24MHz
//#define ENABLE_IAP 0x82
//SYSCLK<20MHz  
#define ENABLE_IAP 0x83
//SYSCLK<12MHz
//#define ENABLE_IAP 0x84
//SYSCLK< 6MHz
//#define ENABLE_IAP 0x85
//SYSCLK< 3MHz
//#define ENABLE_IAP 0x86
//SYSCLK< 2MHz
//#define ENABLE_IAP 0x87
//SYSCLK< 1MHz  
/*Start address for STC10F08XE series EEPROM */
#define IAP_ADDRESS 0x0000  
/*---------------------
Disable ISP/IAP/EEPROM function Make MCU in a safe state
----------------------*/
void IapIdle()
{
IAP_CMD  = 0;  
//Clear command register  IAP_TRIG = 0;
//Clear command trigger  IAP_CONTR = 0;  
//Close IAP function  IAP_ADDRH = 0x80;  
//Data ptr point to non-EEPROM area  IAP_ADDRL = 0;  
//Clear IAP address to prevent misuse
}  
/*--------------------- Read one byte from ISP/IAP/EEPROM area Input:addr (ISP/IAP/EEPROM address) Output: Flash data ----------------------*/
BYTE IapReadByte(WORD addr)
{
       BYTE dat;                           //Data buffer
       IAP_CONTR = ENABLE_IAP;   //Open IAP function, and set wait time
       IAP_CMD = CMD_READ;         //Set ISP/IAP/EEPROM READ command
       IAP_ADDRL = addr;                  //Set ISP/IAP/EEPROM address low
       IAP_ADDRH = addr >> 8;        //Set ISP/IAP/EEPROM address high
       IAP_TRIG = 0x5a;                  //Send trigger command 1 (0x5a)
       IAP_TRIG = 0xa5;                    //Send trigger command2 (0xa5)
       _nop_();                            //MCU will hold here until ISP/IAP/EEPROM
           //operation complete
       dat = IAP_DATA;              //Read ISP/IAP/EEPROM data
       IapIdle();                          //Close ISP/IAP/EEPROM function
       return dat;                          //Return Flash data
}
/*---------------------------- Programe one byte to ISP/IAP/EEPROM area Input: addr(ISP/IAP/EEPROM address)  dat(ISP/IAP/EEPROM data)

Output:-
-----------------------------*/
void IapProgramByte(WORD addr, BYTE dat)
{  
IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time  
IAP_CMD = CMD_PROGRAM;  //Set ISP/IAP/EEPROM PROGRAM command  
IAP_ADDRL = addr;  //Set ISP/IAP/EEPROM address low  
IAP_ADDRH = addr>>8; //Set ISP/IAP/EEPROM address high  
IAP_DATA = dat;   //Write ISP/IAP/EEPROM data  
IAP_TRIG = 0x5a;  //Send trigger command1 (0x5a)  
IAP_TRIG = 0xa5;  //Send trigger command2 (0xa5)  
_nop_();    //MCU will hold here until ISP/IAP/EEPROM        
//operation complete  
IapIdle();    
}  
/*----------------------------
Erase one sector area Input: addr (ISP/IAP/EEPROM address)
Output:-
-----------------------------*/
void IapEraseSector(WORD addr)
{
IAP_CONTR = ENABLE_IAP; //Open IAP function,and set wait time  
IAP_CMD = CMD_ERASE; //Set ISP/IAP/EEPROM ERASE command  
IAP_ADDRL = addr;  //Set ISP/IAP/EEPROM address low  
IAP_ADDRH = addr>>8; //Set ISP/IAP/EEPROM address high  
IAP_TRIG = 0x5a;  //Send trigger command1 (0x5a)  
IAP_TRIG = 0xa5;  //Send trigger command2 (0xa5)  _nop_();    //MCU will hold here until ISP/IAP/EEPROM //operation complete  
IapIdle();
}  
/************数码管显示函数******************/
void displays(uchar X2,X1)
{  
W1=0;P1=duanxuan[num0(X1)];delay_ms(5);W1=1;P1=0x00;//消影  
W2=0;P1=duanxuan[num1(X1)];delay_ms(5);W2=1;P1=0x00;    
W3=0;P1=duanxuan[num2(X2)]|0x80;delay_ms(5);W3=1;P1=0x00;    
W4=0;P1=duanxuan[num3(X2)];delay_ms(5);W4=1;P1=0x00; }  
/**************定时器初始化*****************/  
void T_initialize()
{  
EA=1;   //开放ALL中断允许Enable  
ET0=1;     //开放T0中断允许Enable*/  
TMOD=0x11; //定时器0、1,工作方式1,仅受TCON中TR控制*/  
TH0=(65536-N)/256;  
TL0=(65536-N)%256;  
ET1=1;     //开放T1中断允许Enable*/  
TH1=(65536-N)/256;  
TL1=(65536-N)%256;  
TR0=1;     //定时器计时开始
}  
/****************************************************/  /************时钟实时时间、定时段设置(显示放后边)****************/
void clk_weixuan()//
{
switch(k5)
{
case 1:
{
switch(k2)
{case 0:;break;    
case 1:
{
if(key==1)
{
A0_shi++;if(A0_shi==24)A0_shi=0;/*shi=0~23*/
}            
if(key==4)
{
if(A0_shi==0)A0_shi=24;A0_shi--;/*shi=23~0*/
}
}
break;            
case 2:
{
if(key==1)
{
A0_fen++;if(A0_fen==60)A0_fen=0;/*fen=0~59*/
}
if(key==4)
{
if(A0_fen==0)A0_fen=60;A0_fen--;/*fen=0~59*/
}
}
break;  
  case 3:
  {
  if(key==1)
  {
  A1_shi++;if(A1_shi==24)A1_shi=0;/*shi=0~23*/
  }        
  if(key==4)
  {
  if(A1_shi==0)A1_shi=24;A1_shi--;/*shi=23~0*/
  }
  }
  break;  
  case 4:
  {
  if(key==1)
  {
  A1_fen++;if(A1_fen==60)A1_fen=0;/*fen=0~59*/
  }        
  if(key==4)
  {
  if(A1_fen==0)A1_fen=60;A1_fen--;/*fen=0~59*/
  }
  }
  break;  
  case 5:
  {
IapEraseSector(0x0000);IapProgramByte(0x0000,A0_shi);      
IapProgramByte(0x0001,A0_fen);
IapProgramByte(0x0002,A1_shi);      
IapProgramByte(0x0003,A1_fen);
k2=0;
}
break;
}
}
break; case 2:
{
switch(k2){case 0:;break;
   case 1:
   {
   if(key==1)
   {
   B0_shi++;if(B0_shi==24)B0_shi=0;/*shi=0~23*/
   }          
   if(key==4)
   {
   if(B0_shi==0)B0_shi=24;B0_shi--;/*shi=23~0*/
   }
   }
   break;      
      case 2:
      {
      if(key==1)
      {
      B0_fen++;if(B0_fen==60)B0_fen=0;/*fen=0~59*/
      }        
      if(key==4)
      {
      if(B0_fen==0)B0_fen=60;B0_fen--;/*fen=59~0*/
      }
      }
      break;  
  case 3:
  {
  if(key==1)
  {
  B1_shi++;if(B1_shi==24)B1_shi=0;/*shi=0~23*/
  }            
  if(key==4)
  {
  if(B1_shi==0)B1_shi=24;B1_shi--;/*shi=23~0*/
  }
  }
  break;  
  case 4:
  {
  if(key==1)
  {
  B1_fen++;if(B1_fen==60)B1_fen=0;/*fen=0~59*/
  }            
  if(key==4)
  {
  if(B1_fen==0)B1_fen=60;B1_fen--;/*fen=0~59*/
  }
  }
  break;  
  case 5:
  {
  IapEraseSector(0x0200);
  IapProgramByte(0x0200,B0_shi);      
  IapProgramByte(0x0201,B0_fen);
  IapProgramByte(0x0202,B1_shi);      
  IapProgramByte(0x0203,B1_fen);
  k2=0;}break;}}break;
case 3:
{
switch(k2)
{
case 0:;break;  
  case 1:
  {
  if(key==1)
  {
  C0_shi++;if(C0_shi==24)C0_shi=0;/*shi=0~23*/
  }        
  if(key==4)
  {
  if(C0_shi==0)C0_shi=24;C0_shi--;/*shi=23~0*/
  }
  }
  break;      
       case 2:
    {
       if(key==1)
       {
       C0_fen++;if(C0_fen==60)C0_fen=0;/*fen=0~59*/
       }        
       if(key==4)
       {
       if(C0_fen==0)C0_fen=60;C0_fen--;/*fen=59~0*/
       }
       }
       break;  
  case 3:
  {
  if(key==1)
  {
  C1_shi++;if(C1_shi==24)C1_shi=0;/*shi=0~23*/
  }            
  if(key==4)
  {
  if(C1_shi==0)C1_shi=24;C1_shi--;/*shi=23~0*/
  }
  }
  break;  
  case 4:
  {
  if(key==1)
  {
  C1_fen++;if(C1_fen==60)C1_fen=0;/*fen=0~59*/
  }            
  if(key==4)
  {
  if(C1_fen==0)C1_fen=60;C1_fen--;/*fen=0~59*/
  }
  }
  break;  
  case 5:
  {
  IapEraseSector(0x0400);
  IapProgramByte(0x0400,C0_shi);      
  IapProgramByte(0x0401,C0_fen);
  IapProgramByte(0x0402,C1_shi);    
  IapProgramByte(0x0403,C1_fen);
  k2=0;
  }
  break;
  }
}
break;
case 4:
{
switch(k2)
{
case 0:;break;  
case 1:
{
if(key==1)
{
D0_shi++;if(D0_shi==24)D0_shi=0;/*shi=0~23*/
}        
if(key==4)
{
if(D0_shi==0)D0_shi=24;D0_shi--;/*shi=23~0*/
}
}
break;      
       case 2:
       {
       if(key==1)
       {
       D0_fen++;if(D0_fen==60)D0_fen=0;/*fen=0~59*/
       }          
       if(key==4)
       {
       if(D0_fen==0)D0_fen=60;D0_fen--;/*fen=59~0*/
       }
       }
       break;
   case 3:
   {
   if(key==1)
   {
   D1_shi++;if(D1_shi==24)D1_shi=0;/*shi=0~23*/
   }        
   if(key==4)
   {
   if(D1_shi==0)D1_shi=24;D1_shi--;/*shi=23~0*/
   }
   }
   break;  
  case 4:
  {
  if(key==1)
  {
  D1_fen++;if(D1_fen==60)D1_fen=0;/*fen=0~59*/
  }        
  if(key==4)
  {
  if(D1_fen==0)D1_fen=60;D1_fen--;/*fen=0~59*/
  }
  }
  break;  
case 5:
{
IapEraseSector(0x0600);
IapProgramByte(0x0600,D0_shi);      
IapProgramByte(0x0601,D0_fen);
IapProgramByte(0x0602,D1_shi);      
IapProgramByte(0x0603,D1_fen);
k2=0;
}
break;
}
}
break;
}
if(k2==0)
{
switch(k3)
{
case 0:{TR0=1;
};
break;  
  case 1:
  {
  if(key==1)
  {
  shi++;    
  if(shi==24)shi=0;/*shi=0~23*/
  }              
  if(key==4)
  {
  if(shi==0)shi=24;
  shi--;/*shi=23~0*/
  }
  }
  break;  
  case 2:
  {
  if(key==1)
  {
  fen++;if(fen==60)fen=0;/*fen=0~59*/
  }        
  if(key==4)
  {
  if(fen==0)fen=60;fen--;/*fen=59~0*/
  }
  }
  break;
    }
  }
}
/************矩阵键盘扫描,同时可进行数码管各位的+- ******************/
void matrixkeyscan() //如何确定时间设定时数码管显示的数字是否会自动+1  
{
/*当两行H1、H2重新赋值时存在冲突, 解决办法为:H1=1时H2=0,H2=1时H1=0 或者对P3口进行整体赋值*/  
uchar temp;  /***扫描第一行**/  
H1=0;H2=1;//扫描第一行  
temp=P0;  
temp=temp|0x1f; //读取L1、L2、L3的状态
/***判断哪个键摁下***/  
if(temp!=0xff) //判断是否有键摁下  
{    
delay_ms(10); //延时    
H1=0;H2=1; //扫描第一行//重新读取    
temp=P0;    
temp=temp|0x1f; //读取L1、L2、L3的状态    
if(temp!=0xff) //消抖    
{  
switch(temp) //判断哪个键摁下  
{  
case 0x7f:{key=3;k3++;k3=k3%3/*k=0~2*/;              
TR0=0/*时间设定时定时器停止*/;
}
break;
  case
0xbf:{key=2;k3=0;k2++;if(k2==1){num1=0;TR1=1;
}
}
break;  
case
0xdf:key=1;
break;  
}
//键1 2 3  分别摁下  
clk_weixuan();  
while(temp!=0xff)  //按键释放才会跳出循环  
{      
H1=0;H2=1; //扫描第一行//重新读取      
temp=P0;      
temp=temp|0x1f;//读取L1、L2、L3的状态  
}    
}  
}    
/***扫描第二行**/  
H2=0;H1=1; //扫描第二行  
temp=P0;  
temp=temp|0x1f; //读取L1、L2、L3的状态
/***判断哪个键摁下***/  
if(temp!=0xff)//判断是否有键摁下  
{    
delay_ms(10);//延时    
H2=0;H1=1;//扫描第二行//重新读取    
temp=P0;    
temp=temp|0x1f;//读取L1、L2、L3的状态  
if(temp!=0xff)//消抖    
{  
switch(temp)//判断哪个键摁下  
{  
case 0x7f:{key=6;k6++;if(k6==2)k6=0;}break;  
case 0xbf:{key=5;k5++;/*1 2 3 4 */if(k5==5)k5=1;num1=0;TR1=1;
/*内次按下K5 都会显示2s的回路(A/B/C/D),故需要打开定时器且计数清零
*/}break;  
case 0xdf:key=4;break;  } //键 4 5 6  分别摁下  
clk_weixuan();  
while(temp!=0xff)//按键释放才会跳出循环  
{      
H2=0;H1=1;//扫描第二行//重新读取      
temp=P0;      
temp=temp|0x1f;//读取L1、L2、L3的状态
   }    
}  
}
}
void displays_hui()
{  
W1=0;P1=duanxuan[k5+9];delay_ms(5);W1=1;P1=0x00;//消影  
W2=0;P1=duanxuan[k5+9];delay_ms(5);W2=1;P1=0x00;    
W3=0;P1=duanxuan[k5+9];delay_ms(5);W3=1;P1=0x00;    
W4=0;P1=duanxuan[k5+9];delay_ms(5);W4=1;P1=0x00;
}
void displays_set()
{  
W1=0;P1=0x40;delay_ms(5);W1=1;P1=0x00;//消影  
W2=0;P1=0x40;delay_ms(5);W2=1;P1=0x00;  
W3=0;P1=duanxuan[k5+9];delay_ms(5);W3=1;P1=0x00;    
W4=0;P1=duanxuan[k5+9];delay_ms(5);W4=1;P1=0x00;
}
void displays_all()//先优先处理K5 K2按下时的显示问题,再进行正常显示
{  
if(key==5)    
{
while(num1<40)
{
displays_hui();}TR1=0;/*只显示2s的回路,然后恢复正常时钟显示*/
}  
if((k2!=0))//正常调时k3!=0,此时按下K2不能调整定时的时间段  
{
if(k3==0){while(num1<40){displays_set()/*A0-- 2s*/;}TR1=0;}   switch(k5)  
{
case 1:
{
if(k2<=2)displays(A0_shi,A0_fen);else displays(A1_shi,A1_fen);
}
break;    
case 2:
{
if(k2<=2)displays(B0_shi,B0_fen);else displays(B1_shi,B1_fen);
}
break;    
case 3:
{
if(k2<=2)displays(C0_shi,C0_fen);else displays(C1_shi,C1_fen);
}
break;  
case 4:
{
if(k2<=2)displays(D0_shi,D0_fen);else displays(D1_shi,D1_fen);
}
break;  
}
}
/*只显示2s的定时起终点,然后恢复正常时钟显示,k2*//**/  
if(k2==0)displays(shi,fen);   //正常显示时钟
switch(k5){case 1:{huiluD=1;if(k6==0)//对K6按下的处理          
{
if(((shi*100+fen)>(A0_shi*100+A0_fen))&((shi*100+fen)<(A1_shi*100+A1_fen)))      
huiluA=1;
}
else
{
huiluA=0;
}
}
break;      
case 2:
{
huiluA=1;if(k6==0)    
{
if(((shi*100+fen)>(B0_shi*100+B0_fen))&((shi*100+fen)<(B1_shi*100+B1_fen)))    
huiluB=0;
}else
{
huiluB=1;
}
}
break;      
case 3:{huiluB=1;if(k6==0)      
{
if(((shi*100+fen)>(C0_shi*100+C0_fen))&((shi*100+fen)<(C1_shi*100+C1_fen)))      
huiluC=0;
}
else
{
huiluC=1;
}
}
break;            
case 4:{huiluC=1;if(k6==0)      
{
if(((shi*100+fen)>(D0_shi*100+D0_fen))&((shi*100+fen)<(D1_shi*100+D1_fen)))     
huiluD=0;
}
else
{
huiluD=1;
}
}
break;
}                          
}
void main()
{  
P1M1=0X00;     P1M0=0XFF;  P2M1=0X00;  P2M0=0XFF;   T_initialize();    //定时器T0、T1初始化  
A0_shi=IapReadByte(0x0000);//读取EEPROM中存储的参数
A0_fen=IapReadByte(0x0001);  
A1_shi=IapReadByte(0x0002);  
A1_fen=IapReadByte(0x0003);  
B0_shi=IapReadByte(0x0200);  
B0_fen=IapReadByte(0x0201);  
B1_shi=IapReadByte(0x0202);  
B1_fen=IapReadByte(0x0203);  
C0_shi=IapReadByte(0x0400);  
C0_fen=IapReadByte(0x0401);  
C1_shi=IapReadByte(0x0402);  
C1_fen=IapReadByte(0x0403);  
D0_shi=IapReadByte(0x0600);  
D0_fen=IapReadByte(0x0601);  
D1_shi=IapReadByte(0x0602);
D1_fen=IapReadByte(0x0603);  
while(1)              //开始行走  
{  
matrixkeyscan();//进行一次键盘检测,可进行数码管各位的+-设置  
displays_all();  
}
}  
void T0_timer()interrupt 1
{  
TH0=(65536-N)/256;/**/  
TL0=(65536-N)%256;  
num++;   //*全局变量,不赋初值时,默认初值为0*/  
if(num==10){led=~led;num=0;num0++;/*0.5s改变一次状态,闪烁一次1s*/  
if(num0==120)
{
num0=0;fen++;    
if(fen==60)
{
fen=0;shi++;if(shi==24)shi=0;
}
} /*每60s即每1min
fen+1*/}
}
void T1_timer()interrupt 3
{  
TH0=(65536-N)/256;/**/  
TL0=(65536-N)%256;
num1++;
}  
[ 此帖被数码家园在2018-03-27 15:14重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共1条打赏M币+13
hfsp M币 +13 謝謝分享 2018-08-28
离线青色风机

发帖
19010
M币
3513
专家
24
粉丝
1565
只看该作者 1楼 发表于: 2018-03-26
可以根据程序设计一个电路吗?
离线jjbboox

发帖
808
M币
4210
专家
13
粉丝
48
只看该作者 2楼 发表于: 2018-03-26
楼主似乎应该把代码根据不同功能分成不同的C文件,堆在一本里面,估计2个星期以后你就不认识它们了。
离线2545889167

发帖
13268
M币
20804
专家
302
粉丝
4852
只看该作者 3楼 发表于: 2018-03-27
代码人家都给你了还让帮忙整理?
喂饭总不能还帮你嚼好了吧?
离线数码家园

发帖
5228
M币
16486
专家
31
粉丝
540
只看该作者 4楼 发表于: 2018-03-27
回 青色风机 的帖子
青色风机:可以根据程序设计一个电路吗? (2018-03-26 17:25) 回 青色风机 的帖子

电路图有是有的,就是不清楚
离线数码家园

发帖
5228
M币
16486
专家
31
粉丝
540
只看该作者 5楼 发表于: 2018-03-27
回 jjbboox 的帖子
jjbboox:楼主似乎应该把代码根据不同功能分成不同的C文件,堆在一本里面,估计2个星期以后你就不认识它们了。 (2018-03-26 17:49) 回 jjbboox 的帖子

这玩意对于我来说,现在就是他认识我我不认识他的
离线数码家园

发帖
5228
M币
16486
专家
31
粉丝
540
只看该作者 6楼 发表于: 2018-03-27
回 2545889167 的帖子
2545889167:代码人家都给你了还让帮忙整理?
喂饭总不能还帮你嚼好了吧? (2018-03-27 01:07) 回 2545889167 的帖子

朋友:没有强求你的。
愿意帮忙的帮,不愿意帮的路过就可以
离线elecfunwb

发帖
1539
M币
4506
专家
8
粉丝
16
只看该作者 7楼 发表于: 2018-04-06
第6行 #define M 20 /* 定时M*0.05s */  uint shi,fen;
把后面的uint shi,fen; 换到下行写就可以编译过了

Program Size: data=42.0 xdata=0 const=0 code=2902
LX51 RUN COMPLETE.  0 WARNING(S),  0 ERROR(S)
本帖最近打赏记录:共5条打赏M币+45专家+2
okout2003 M币 +20 - 2018-04-12
ynqjzzh 专家 +1 熱心助人 2018-04-11
ynqjzzh M币 +5 熱心助人 2018-04-11
数码家园 专家 +1 行家一出手就好了。 非常感谢! 2018-04-07
数码家园 M币 +20 行家一出手就好了。 非常感谢! 2018-04-07
离线数码家园

发帖
5228
M币
16486
专家
31
粉丝
540
只看该作者 8楼 发表于: 2018-04-07
行家一出手就好了。
非常感谢!
本帖最近打赏记录:共1条打赏M币+13
小李飞拆修 M币 +13 精彩回帖 2018-04-12
离线1591719419

发帖
63
M币
13
专家
0
粉丝
3
只看该作者 9楼 发表于: 2018-04-15
楼主把电路图传上来,不清楚也可以参考下,独乐乐不如众乐乐呀!
快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个