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

📄 main.lst

📁 这是一个读取ID卡的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 249   2                              case 6: d=0Xbe;break;
 250   2                              case 7: d=0Xe0;break;
 251   2                              case 8: d=0Xfe;break;
 252   2                              case 9: d=0Xf6;break;
 253   2                      }
 254   1                return(d);
 255   1                      
 256   1      }
 257          
 258          
 259          
 260          writetime1(uchar ucTime[],uchar flag)
 261          { 
 262   1              
 263   1      /*
 264   1               h0=changdata(ucTime[1]>>4);
 265   1               h1=changdata(ucTime[1]&0xF);
 266   1               m0=changdata(ucTime[0]>>4);
 267   1               m1=changdata(ucTime[0]&0xF);   
 268   1               */ 
 269   1               //*
 270   1               m0=changdata(ucTime[1]>>4);
 271   1               m1=changdata(ucTime[1]&0xF);
 272   1               h0=changdata(ucTime[2]>>4);
 273   1               h1=changdata(ucTime[2]&0xF);    
 274   1              //*/
 275   1      
 276   1               if(ucTime[0]&0x01)
 277   1                      h1=h1+flag;
 278   1      }
 279          
 280                  
 281          writetime2( )           
 282          {
 283   1      //       WriteIO(0X6000,0X00); 
 284   1                      //P1_7=0;
 285   1              show++;
 286   1      
 287   1              //if( show >= 16 )
 288   1              //      show = 0;
 289   1              P1_7=1; 
 290   1                      
 291   1              //if( show & 0x03 == 0 )
 292   1                      //WriteIO(0X6000,0X00);
 293   1                      
 294   1              
 295   1              //if((show>>2) == 0)
 296   1              if( show == 1 )
 297   1              {
 298   2                      WriteIO(0X6000,0X00);
 299   2                      
 300   2                      P1_0=0;
 301   2                      P1_1=0;
 302   2                      
 303   2              WriteIO(0X6000,h0);
C51 COMPILER V7.06   MAIN                                                                  08/05/2005 21:41:52 PAGE 6   

 304   2              
 305   2          }
 306   1         
 307   1          //else if((show>>2) == 1)
 308   1          else if( show == 2 )
 309   1          {
 310   2              WriteIO(0X6000,0X00);
 311   2              
 312   2                      P1_0=1;
 313   2                      P1_1=0;
 314   2                      
 315   2                      WriteIO(0X6000,h1);
 316   2                      
 317   2              }
 318   1              
 319   1              //else if((show>>2) == 2)
 320   1              else if( show == 3 )
 321   1          {
 322   2                      WriteIO(0X6000,0X00);
 323   2                      
 324   2                      P1_0=0;
 325   2                      P1_1=1;
 326   2                      
 327   2                      WriteIO(0X6000,m0);
 328   2                      
 329   2              }
 330   1              //else if( (show>>2) == 3 )
 331   1              else if( show == 4 )
 332   1              {
 333   2                      WriteIO(0X6000,0X00);
 334   2                      
 335   2                      P1_0=1;
 336   2                      P1_1=1;
 337   2                      
 338   2                      WriteIO(0X6000,m1);
 339   2                      show = 0;
 340   2                      
 341   2           }
 342   1            
 343   1              //WriteIO(0X6000,0X00);
 344   1              P1_7=0;
 345   1                      
 346   1       }
 347          
 348          
 349          /******************************************************************** 
 350          *
 351          * 名称: v_RTInputByte
 352          * 说明: 
 353          * 功能: 往DS1302写入1Byte数据
 354          * 调用:
 355          * 输入: ucDa 写入的数据 
 356          * 返回值: 无
 357          ***********************************************************************/
 358          void v_RTInputByte(uchar ucDa) 
 359          { 
 360   1              uchar i;
 361   1              ACC = ucDa;
 362   1              for(i=8; i>0; i--)
 363   1              {
 364   2                      T_IO = ACC0; /*相当于汇编中的 RRC */ 
 365   2                      T_CLK = 1;
C51 COMPILER V7.06   MAIN                                                                  08/05/2005 21:41:52 PAGE 7   

 366   2                      T_CLK = 0;
 367   2                      ACC = ACC >> 1; 
 368   2              } 
 369   1      }
 370          /******************************************************************** 
 371          *
 372          * 名称: uchar uc_RTOutputByte
 373          * 说明: 
 374          * 功能: 从DS1302读取1Byte数据
 375          * 调用: 
 376          * 输入: 
 377          * 返回值: ACC
 378          ***********************************************************************/
 379          uchar uc_RTOutputByte(void) 
 380          { 
 381   1              uchar i;
 382   1              for(i=8; i>0; i--)
 383   1              {
 384   2                      ACC = ACC >>1; /*相当于汇编中的 RRC */
 385   2                      ACC7 = T_IO;
 386   2                      T_CLK = 1;
 387   2                      T_CLK = 0;
 388   2              } 
 389   1              return(ACC); 
 390   1      }
 391          /******************************************************************** 
 392          *
 393          * 名称: v_W1302
 394          * 说明: 先写地址,后写命令/数据
 395          * 功能: 往DS1302写入数据
 396          * 调用: v_RTInputByte() 
 397          * 输入: ucAddr: DS1302地址, ucDa: 要写的数据
 398          * 返回值: 无
 399          ***********************************************************************/
 400          void v_W1302(uchar ucAddr, uchar ucDa)
 401          {
 402   1              T_RST = 0;
 403   1              T_CLK = 0;
 404   1              T_RST = 1;
 405   1              v_RTInputByte(ucAddr); /* 地址,命令 */
 406   1              v_RTInputByte(ucDa); /* 写1Byte数据*/
 407   1              T_CLK = 1;
 408   1              T_RST =0;
 409   1      } 
 410          /******************************************************************** 
 411          *
 412          * 名称: uc_R1302
 413          * 说明: 先写地址,后读命令/数据
 414          * 功能: 读取DS1302某地址的数据
 415          * 调用: v_RTInputByte() , uc_RTOutputByte()
 416          * 输入: ucAddr: DS1302地址
 417          * 返回值: ucDa :读取的数据
 418          ***********************************************************************/
 419          uchar uc_R1302(uchar ucAddr)
 420          {
 421   1              uchar ucDa;
 422   1              T_RST = 0;
 423   1              T_CLK = 0;
 424   1              T_RST = 1;
 425   1              v_RTInputByte(ucAddr); /* 地址,命令 */
 426   1              ucDa = uc_RTOutputByte(); /* 读1Byte数据 */
 427   1              T_CLK = 1;
C51 COMPILER V7.06   MAIN                                                                  08/05/2005 21:41:52 PAGE 8   

 428   1              T_RST =0;
 429   1              return(ucDa);
 430   1      }
 431          
 432          
 433          /******************************************************************** 
 434          *
 435          * 名称: v_Set1302
 436          * 说明: 
 437          * 功能: 设置初始时间
 438          * 调用: v_W1302() 
 439          * 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年 
 440          * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
 441          * 返回值: 无
 442          ***********************************************************************/
 443          void v_Set1302(uchar *pSecDa) 
 444          {
 445   1              uchar i;
 446   1              uchar ucAddr = 0x80; 
 447   1              v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 448   1              for(i =7;i>0;i--)
 449   1              { 
 450   2                      v_W1302(ucAddr,*pSecDa); /* 秒 分 时 日 月 星期 年 */
 451   2      
 452   2                      pSecDa++;
 453   2                      ucAddr +=2;
 454   2              }
 455   1              v_W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
 456   1      }
 457          
 458          
 459          /******************************************************************** 
 460          *
 461          * 名称: v_Get1302
 462          * 说明: 
 463          * 功能: 读取DS1302当前时间
 464          * 调用: uc_R1302() 
 465          * 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年 
 466          * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
 467          * 返回值: 无
 468          ***********************************************************************/
 469          void v_Get1302(uchar ucCurtime[]) 
 470          {
 471   1              uchar i;
 472   1              uchar ucAddr = 0x81;
 473   1              for (i=0;i<7;i++)
 474   1              {
 475   2                      ucCurtime[i] = uc_R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
 476   2                      ucAddr += 2;
 477   2              }
 478   1      }
 479          
 480          void Set_ReadAddress(uchar pSecDa[]) 
 481          {
 482   1              uchar i;
 483   1      
 484   1              uchar ucAddr = 0xC0;   //写在时钟RAM的头部
 485   1              v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 486   1              for(i = 0;i<4;i++)
 487   1              { 
 488   2                      v_W1302(ucAddr,pSecDa[i]); 
 489   2                      ucAddr +=2;
C51 COMPILER V7.06   MAIN                                                                  08/05/2005 21:41:52 PAGE 9   

 490   2              }
 491   1      
 492   1              ucAddr = 0xEE;    //写在时钟RAM的尾部
 493   1              for( i = 0 ; i < 4 ; i ++ )
 494   1              {
 495   2                      v_W1302(ucAddr,pSecDa[i]); 
 496   2                      ucAddr +=2;     
 497   2              }
 498   1              v_W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
 499   1      }
 500          
 501          void Get_ReadAddress(uchar pSecDa[] ) 
 502          {
 503   1              uchar i;
 504   1              uchar Temp;
 505   1              uchar ucAddr = 0xC1; //读取时钟RAM的头部

⌨️ 快捷键说明

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