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

📄 main_uart.lst

📁 这是一个读取ID卡的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 188          ***********************************************************************/
 189          uchar uc_R1302(uchar ucAddr)
 190          {
 191   1              uchar ucDa;
 192   1              T_RST = 0;
 193   1              T_CLK = 0;
 194   1              T_RST = 1;
 195   1              v_RTInputByte(ucAddr); /* 地址,命令 */
 196   1              ucDa = uc_RTOutputByte(); /* 读1Byte数据 */
 197   1              T_CLK = 1;
 198   1              T_RST =0;
 199   1              return(ucDa);
 200   1      }
 201          
 202          /******************************************************************** 
 203          *
 204          * 名称: v_BurstW1302T
 205          * 说明: 先写地址,后写数据(时钟多字节方式)
 206          * 功能: 往DS1302写入时钟数据(多字节方式)
 207          * 调用: v_RTInputByte() 
 208          * 输入: pSecDa: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 控制
 209          * 8Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B 1B
 210          * 返回值: 无
 211          ***********************************************************************/
 212          /*
 213          void v_BurstW1302T(uchar *pSecDa)
 214          {
 215                  uchar i;
 216                  v_W1302(0x8e,0x00); // 控制命令,WP=0,写操作?
 217                  T_RST = 0;
 218                  T_CLK = 0;
 219                  T_RST = 1;
 220                  v_RTInputByte(0xbe); // 0xbe:时钟多字节写命令 
 221                  for (i=8;i>0;i--) //8Byte = 7Byte 时钟数据 + 1Byte 控制
 222                  {
 223                          v_RTInputByte(*pSecDa);// 写1Byte数据
 224                          pSecDa++;
 225                  }
 226                  T_CLK = 1;
 227                  T_RST =0;
 228          } 
 229          */
 230          /******************************************************************** 
 231          *
 232          * 名称: v_BurstR1302T
 233          * 说明: 先写地址,后读命令/数据(时钟多字节方式)
 234          * 功能: 读取DS1302时钟数据
 235          * 调用: v_RTInputByte() , uc_RTOutputByte()
 236          * 输入: pSecDa: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 
 237          * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
 238          * 返回值: ucDa :读取的数据
 239          ***********************************************************************/
 240          /*
 241          void v_BurstR1302T(uchar *pSecDa)
C51 COMPILER V7.06   MAIN_UART                                                             07/29/2005 22:35:14 PAGE 5   

 242          {
 243                  uchar i;
 244                  T_RST = 0;
 245                  T_CLK = 0;
 246                  T_RST = 1;
 247                  v_RTInputByte(0xbf); // 0xbf:时钟多字节读命令 
 248                  for (i=8; i>0; i--) 
 249                  {
 250                          *pSecDa = uc_RTOutputByte(); // 读1Byte数据 
 251                          pSecDa++;
 252                  }
 253                  T_CLK = 1;
 254                  T_RST =0;
 255          }
 256          */
 257          /******************************************************************** 
 258          *
 259          * 名称: v_BurstW1302R
 260          * 说明: 先写地址,后写数据(寄存器多字节方式)
 261          * 功能: 往DS1302寄存器数写入数据(多字节方式)
 262          * 调用: v_RTInputByte() 
 263          * 输入: pReDa: 寄存器数据地址
 264          * 返回值: 无
 265          ***********************************************************************/
 266          /*
 267          void v_BurstW1302R(uchar *pReDa)
 268          {
 269                  uchar i;
 270                  v_W1302(0x8e,0x00); // 控制命令,WP=0,写操作?
 271                  T_RST = 0;
 272                  T_CLK = 0;
 273                  T_RST = 1;
 274                  v_RTInputByte(0xfe); // 0xbe:时钟多字节写命令 
 275                  for (i=31;i>0;i--) //31Byte 寄存器数据 
 276                  {
 277                          v_RTInputByte(*pReDa); // 写1Byte数据
 278                          pReDa++;
 279                  }
 280                  T_CLK = 1;
 281                  T_RST =0;
 282          } 
 283          */
 284          /******************************************************************** 
 285          *
 286          * 名称: uc_BurstR1302R
 287          * 说明: 先写地址,后读命令/数据(寄存器多字节方式)
 288          * 功能: 读取DS1302寄存器数据
 289          * 调用: v_RTInputByte() , uc_RTOutputByte()
 290          * 输入: pReDa: 寄存器数据地址
 291          * 返回值: 无
 292          ***********************************************************************/
 293          /*
 294          void v_BurstR1302R(uchar *pReDa)
 295          {
 296                  uchar i;
 297                  T_RST = 0;
 298                  T_CLK = 0;
 299                  T_RST = 1;
 300                  v_RTInputByte(0xff); // 0xbf:时钟多字节读命令 
 301                  for (i=31; i>0; i--) //31Byte 寄存器数据 
 302                  {
 303                          *pReDa = uc_RTOutputByte(); // 读1Byte数据 
C51 COMPILER V7.06   MAIN_UART                                                             07/29/2005 22:35:14 PAGE 6   

 304                          pReDa++;
 305                  }
 306                  T_CLK = 1;
 307                  T_RST =0;
 308          }
 309          */
 310          
 311          /******************************************************************** 
 312          *
 313          * 名称: v_Set1302
 314          * 说明: 
 315          * 功能: 设置初始时间
 316          * 调用: v_W1302() 
 317          * 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年 
 318          * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
 319          * 返回值: 无
 320          ***********************************************************************/
 321          void v_Set1302(uchar *pSecDa) 
 322          {
 323   1              uchar i;
 324   1              uchar ucAddr = 0x80; 
 325   1              v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 326   1              for(i =7;i>0;i--)
 327   1              { 
 328   2                      v_W1302(ucAddr,*pSecDa); /* 秒 分 时 日 月 星期 年 */
 329   2      
 330   2                      pSecDa++;
 331   2                      ucAddr +=2;
 332   2              }
 333   1              v_W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
 334   1      }
 335          
 336          
 337          /******************************************************************** 
 338          *
 339          * 名称: v_Get1302
 340          * 说明: 
 341          * 功能: 读取DS1302当前时间
 342          * 调用: uc_R1302() 
 343          * 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年 
 344          * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
 345          * 返回值: 无
 346          ***********************************************************************/
 347          void v_Get1302(uchar ucCurtime[]) 
 348          {
 349   1              uchar i;
 350   1              uchar ucAddr = 0x81;
 351   1              for (i=0;i<7;i++)
 352   1              {
 353   2                      ucCurtime[i] = uc_R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
 354   2                      ucAddr += 2;
 355   2              }
 356   1      }
 357          void Set_ReadAddress(uchar pSecDa[]) 
 358          {
 359   1              uchar i;
 360   1      
 361   1              uchar ucAddr = 0xC0;   //写在时钟RAM的头部
 362   1              v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 363   1              for(i = 0;i<4;i++)
 364   1              { 
 365   2                      v_W1302(ucAddr,pSecDa[i]); 
C51 COMPILER V7.06   MAIN_UART                                                             07/29/2005 22:35:14 PAGE 7   

 366   2                      ucAddr +=2;
 367   2              }
 368   1      
 369   1              ucAddr = 0xEE;    //写在时钟RAM的尾部
 370   1              for( i = 0 ; i < 4 ; i ++ )
 371   1              {
 372   2                      v_W1302(ucAddr,pSecDa[i]); 
 373   2                      ucAddr +=2;     
 374   2              }
 375   1              v_W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
 376   1      }
 377          
 378          void Get_ReadAddress(uchar pSecDa[] ) 
 379          {
 380   1              uchar i;
 381   1              uchar Temp[2];
 382   1              uchar ucAddr = 0xC1; //读取时钟RAM的头部

⌨️ 快捷键说明

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