⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.lst

📁 单片机定时器
💻 LST
📖 第 1 页 / 共 3 页
字号:
 229   1              uchar i;
 230   1              uchar ByteData=0;
 231   1              for(i=0;i<8;i++)
 232   1              {
 233   2                      SCL=1;
 234   2                      I2cWait();
 235   2                      ByteData<<=1;
 236   2                      if(SDA)ByteData++;
 237   2                      SCL=0;
 238   2                      I2cWait();
 239   2              }
 240   1              SDA=1;
 241   1              I2cWait();
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 5   

 242   1              SCL=1;
 243   1              I2cWait();
 244   1              SCL=0;
 245   1              I2cWait();
 246   1              return ByteData;
 247   1      }
 248          //--------------------------声明AT24C02的读写子程序-------------------
 249          void I2cWrite24C02(uchar I2c24C02Addr,uchar I2c24C02Data)//写
 250          {
 251   1              I2cStart();
 252   1              I2cSendByte(AddressWrite24C02);
 253   1              I2cSendByte(I2c24C02Addr);
 254   1              I2cSendByte(I2c24C02Data);
 255   1              I2cStop();
 256   1      }
 257          
 258          uchar I2cRead24C02(uchar I2c24C02Addr)//读
 259          {
 260   1              uchar Data;
 261   1              I2cStart();
 262   1              I2cSendByte(AddressWrite24C02);
 263   1              I2cSendByte(I2c24C02Addr);
 264   1              I2cStart();
 265   1              I2cSendByte(AddressRead24C02);
 266   1              Data=I2cReceiveByte();
 267   1              I2cStop();
 268   1              return Data;
 269   1      }
 270          //-------------------------初始化24C02-----------------------------
 271          void Initializtion(void)
 272          {
 273   1              uchar i,j;
 274   1              uchar StartByte=I2cRead24C02(0);
 275   1              j=1;
 276   1              if(StartByte==I2cStartByte)
 277   1                      for(i=0;i<40;i++)
 278   1                      {
 279   2                              if(I2cRead24C02(j)==I2cEndByte)break;
 280   2                              RingDataH[i]=I2cRead24C02(j++);
 281   2                              RingDataL[i]=I2cRead24C02(j++);
 282   2                              RingCount++;
 283   2                      }
 284   1              else
 285   1                      {
 286   2                              I2cWrite24C02(0,I2cStartByte);
 287   2                              I2cWrite24C02(1,I2cEndByte);
 288   2                      }
 289   1      }
 290          
 291          //-------------------排序的程序------------------------------------
 292          void Taxis(void)
 293          {
 294   1              uchar i,j,t;
 295   1              for(i=0;i<RingCount;i++)
 296   1                      for(j=0;j<RingCount-i-1;j++)
 297   1                              {
 298   2                                      if(RingDataH[j]>RingDataH[j+1])
 299   2                                              {
 300   3                                                      t=RingDataH[j];
 301   3                                                      RingDataH[j]=RingDataH[j+1];
 302   3                                                      RingDataH[j+1]=t;
 303   3                                                      t=RingDataL[j];
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 6   

 304   3                                                      RingDataL[j]=RingDataL[j+1];
 305   3                                                      RingDataL[j+1]=t;
 306   3                                              }
 307   2                                      else if(RingDataH[j]==RingDataH[j+1])
 308   2                                                      if(RingDataL[j]>RingDataL[j+1])
 309   2                                                              {
 310   3                                                                      t=RingDataL[j];
 311   3                                                                      RingDataL[j]=RingDataL[j+1];
 312   3                                                                      RingDataL[j+1]=t;
 313   3                                                              }
 314   2                              }       
 315   1      }
 316          
 317          //---------------------------闹铃设置--------------------------------
 318          void Control_Ring_Set_Key(void)
 319          {
 320   1              uchar Null[]={0x00,0x38,0x38,0x3e,0x37,0x00};//"Null"的字形码
 321   1              uchar ShowRing[3];
 322   1              uchar NowKey;
 323   1              uchar i,j=1;
 324   1              uchar BeforKey=0xff;
 325   1          uchar KeyCount=0;
 326   1              uchar FlagBit=3;
 327   1              uchar ShowRingCount=0;
 328   1              uchar count1=0x40;//无操作时的时间控制
 329   1              uchar count2=0xff;//无操作时的时间控制
 330   1              S_Ray_Flag=1;
 331   1              ShowRing[0]=RingDataL[ShowRingCount];
 332   1              ShowRing[1]=RingDataH[ShowRingCount];
 333   1              ShowRing[2]=ShowRingCount;
 334   1              while(1)
 335   1              {
 336   2                      if(RingCount==0)
 337   2                              Display(Null,5);
 338   2                      else
 339   2                              Display(ShowRing,FlagBit);
 340   2                      if(KeyCount==2)
 341   2                      {
 342   3                              KeyCount=0;
 343   3                              NowKey=GetKey();
 344   3                              if(NowKey!=BeforKey)
 345   3                              {
 346   4                                      count1=0x40;
 347   4                                      count2=0xff;
 348   4                                      switch(NowKey)
 349   4                                      {
 350   5                                              case 1://增加一个闹铃
 351   5                                                              if(RingCount!=40 && FlagBit==4)
 352   5                                                              {
 353   6                                                                      RingDataH[RingCount]=RingDataL[RingCount]=0;    
 354   6                                                                      ShowRingCount=RingCount++;
 355   6                                                              }
 356   5                                                              if(RingCount==0)
 357   5                                                              {
 358   6                                                                      RingDataH[0]=RingDataL[0]=0;
 359   6                                                                      RingCount++;
 360   6                                                              }
 361   5                                                              ShowRing[0]=RingDataL[ShowRingCount];
 362   5                                                              ShowRing[1]=RingDataH[ShowRingCount];
 363   5                                                              ShowRing[2]=ShowRingCount;
 364   5                                                              break;
 365   5                                              case 2://删除一个闹铃
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 7   

 366   5                                                              if(RingCount!=0 && FlagBit==4)
 367   5                                                              {
 368   6                                                                      if(RingCount==1)
 369   6                                                                      {
 370   7                                                                              RingDataH[0]=RingDataL[0]=0;
 371   7                                                                      }
 372   6                                                                      else
 373   6                                                                              {
 374   7                                                                                      for(i=ShowRingCount;i<RingCount;i++)
 375   7                                                                                      {
 376   8                                                                                              RingDataH[i]=RingDataH[i+1];
 377   8                                                                                              RingDataL[i]=RingDataL[i+1];
 378   8                                                                                      }
 379   7                                                                                      RingDataH[i]=RingDataL[i]=0;
 380   7                                                                              }
 381   6                                                                      RingCount--;    
 382   6                                                                      if(RingCount==ShowRingCount)
 383   6                                                                              ShowRingCount--;
 384   6                                                                      ShowRing[0]=RingDataL[ShowRingCount];
 385   6                                                                      ShowRing[1]=RingDataH[ShowRingCount];
 386   6                                                                      ShowRing[2]=ShowRingCount;
 387   6                                                              }
 388   5                                                              break;
 389   5      
 390   5                                              case 3://左移
 391   5                                                              if(RingCount!=0)
 392   5                                                              {
 393   6                                                                      if(FlagBit==4)FlagBit=1;
 394   6                                                                      else FlagBit++;
 395   6                                                              }
 396   5                                                              break;
 397   5                                              case 4://闹铃时间增
 398   5                                                              switch(FlagBit)
 399   5                                                              {
 400   6                                                                      case 1:
 401   6                                                                                      if(ShowRing[0]==59)
 402   6                                                                                              ShowRing[0]=0;
 403   6                                                                                      else
 404   6                                                                                              ShowRing[0]++;
 405   6                                                                                      RingDataL[ShowRingCount]=ShowRing[0];
 406   6                                                                                      break;
 407   6                                                                      case 2:
 408   6                                                                                      if(ShowRing[1]==23)
 409   6                                                                                              ShowRing[1]=0;
 410   6                                                                                      else
 411   6                                                                                              ShowRing[1]++;
 412   6                                                                                      RingDataH[ShowRingCount]=ShowRing[1];
 413   6                                                                                      break;
 414   6                                                                      case 3:
 415   6                                                                                      if(ShowRingCount==RingCount-1)
 416   6                                                                                              ShowRingCount=0;
 417   6                                                                                      else
 418   6                                                                                              ShowRingCount++;
 419   6                                                                                      ShowRing[0]=RingDataL[ShowRingCount];
 420   6                                                                                      ShowRing[1]=RingDataH[ShowRingCount];
 421   6                                                                                      ShowRing[2]=ShowRingCount;
 422   6                                                                                      break;
 423   6                                                              }
 424   5                                                              break;
 425   5                                              case 5://闹铃时间减
 426   5                                                              switch(FlagBit)
 427   5                                                              {
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 8   

 428   6                                                                      case 1:
 429   6                                                                                      if(ShowRing[0]==0)
 430   6                                                                                              ShowRing[0]=59;
 431   6                                                                                      else
 432   6                                                                                              ShowRing[0]--;
 433   6                                                                                      break;
 434   6                                                                      case 2:
 435   6                                                                                      if(ShowRing[1]==0)
 436   6                                                                                              ShowRing[1]=23;
 437   6                                                                                      else
 438   6                                                                                              ShowRing[1]--;
 439   6                                                                                      break;
 440   6                                                                      case 3:
 441   6                                                                                      if(ShowRingCount==0)
 442   6                                                                                              ShowRingCount=RingCount-1;
 443   6                                                                                      else
 444   6                                                                                              ShowRingCount--;
 445   6                                                                                      ShowRing[0]=RingDataL[ShowRingCount];
 446   6                                                                                      ShowRing[1]=RingDataH[ShowRingCount];
 447   6                                                                                      ShowRing[2]=ShowRingCount;
 448   6                                                                                      break;
 449   6                                                              }
 450   5                                                              break;
 451   5                                              case 6://右移
 452   5                                                      if(RingCount!=0)
 453   5                                                              {
 454   6                                                                      if(FlagBit==1)FlagBit=4;
 455   6                                                                      else FlagBit--;
 456   6                                                              }
 457   5                                                              break;
 458   5                                              case 7://取消
 459   5      L3:                                                     j=1;
 460   5                                                              RingCount=0;
 461   5                                                              EA=0;
 462   5                                                              for(i=0;i<40;i++)
 463   5                                                              {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -