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

📄 sd2k3drv.lst

📁 压缩包中包括多个常用的汇编
💻 LST
📖 第 1 页 / 共 2 页
字号:
 175          /* 函数名:sd2300_receive_byte                                              */
 176          /* 功  能:MCU从sd2300设备接收一个字节                                      */
 177          /* 作  者:spot                                                             */
 178          /* 输  入:无                                                               */
 179          /* 输  出:ddata   接收数据                                                 */
C51 COMPILER V7.09   SD2K3DRV                                                              10/07/2005 16:00:25 PAGE 4   

 180          /*                                                                          */
 181          /* 历史记录:                                                               */
 182          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
 183          /****************************************************************************/
 184          u_char sd2300_receive_byte(void)
 185          {
 186   1          u_char i=8;
 187   1          u_char ddata=0;
 188   1      
 189   1          SDA=1;
 190   1          while(i--)
 191   1          {
 192   2              ddata <<= 1;
 193   2              SCL=0;
 194   2              sd2300_wait();
 195   2              SCL=1;
 196   2              sd2300_wait();
 197   2              if(SDA)
 198   2              {
 199   3                  ddata |= 0x01;
 200   3              }
 201   2      
 202   2          }
 203   1          SCL=0;
 204   1          return ddata;
 205   1      }
 206          
 207          /****************************************************************************/
 208          /* 函数名:sd2300_read_date                                                 */
 209          /* 功  能:读取sd2300时钟数据                                               */
 210          /* 作  者:spot                                                             */
 211          /* 输  入:无                                                               */
 212          /* 输  出:无                                                               */
 213          /*                                                                          */
 214          /* 历史记录:                                                               */
 215          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
 216          /****************************************************************************/
 217          void sd2300_read_date(void)
 218          {
 219   1          u_char i;
 220   1      
 221   1          sd2300_start();
 222   1          sd2300_send_byte(0x64);
 223   1          sd2300_wait_ack();
 224   1          sd2300_send_byte(0x00); /* 从秒开始读取数据   */
 225   1          sd2300_wait_ack();
 226   1      
 227   1          sd2300_start();
 228   1          sd2300_send_byte(0x65); 
 229   1          sd2300_wait_ack();
 230   1      
 231   1          for (i=0; i<7; i++)
 232   1          {
 233   2              date[6-i] = sd2300_receive_byte();
 234   2      
 235   2              if (i != 6)         /* 最后一个数据不应答 */
 236   2              {
 237   3                  sd2300_ack();
 238   3              }
 239   2          }
 240   1          
 241   1          sd2300_no_ack();
C51 COMPILER V7.09   SD2K3DRV                                                              10/07/2005 16:00:25 PAGE 5   

 242   1          sd2300_stop();
 243   1      }
 244          
 245          /****************************************************************************/
 246          /* 函数名:sd2300_write_config                                              */
 247          /* 功  能:写sd2300控制寄存器                                               */
 248          /* 作  者:spot                                                             */
 249          /* 输  入:无                                                               */
 250          /* 输  出:无                                                               */
 251          /*                                                                          */
 252          /* 历史记录:                                                               */
 253          /*  spot          2005-10-05     Creat Inital version. (Version 1.0)        */
 254          /****************************************************************************/
 255          void sd2300_write_config(void)
 256          {
 257   1          sd2300_start();
 258   1          sd2300_send_byte(0x64);  
 259   1          sd2300_wait_ack();
 260   1          sd2300_send_byte(0xf0);  /* 写控制寄存器2    */
 261   1          sd2300_wait_ack();
 262   1          sd2300_send_byte(0x20);  /* 24小时制,关中断 */
 263   1          sd2300_wait_ack();
 264   1          sd2300_stop();
 265   1      }
 266          
 267          /* 在数码管上显示当前湿度 */
 268          void display_time(u_char current_time[2])
 269          {
 270   1          u_char second = 0;
 271   1          u_char hour   = 0;
 272   1      
 273   1          hour   = ( ((current_time[0] & 0xf0) >> 4) * 10) + (current_time[0] & 0x0f);
 274   1          second = ( ((current_time[1] & 0xf0) >> 4) * 10) + (current_time[1] & 0x0f);
 275   1      
 276   1          load_number( (second %10), 0);
 277   1          load_number( (second /10), 0);
 278   1      
 279   1          load_number( (hour %10), 1);
 280   1          load_number( (hour /10), 0);
 281   1          send_latch_clock();
 282   1      }
 283          
 284          main()
 285          {
 286   1      
 287   1          sd2300_write_config();
 288   1      
 289   1          while(1)
 290   1          {
 291   2              sd2300_read_date();
 292   2              clear_led();
 293   2              display_time(&date[4]);
 294   2          }
 295   1      }
C51 COMPILER V7.09   SD2K3DRV                                                              10/07/2005 16:00:25 PAGE 6   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
sd2300_write_config. . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
u_long . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_LONG   -----  4
u_short. . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
send_latch_clock . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
sd2300_read_date . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
date . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  7
clear_led. . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_sd2300_send_byte. . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  demand . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
u_int. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
sd2300_ack . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
sd2300_start . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
sd2300_wait. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0009H  -----
sd2300_wait_ack. . . . . . . . . . . .  PUBLIC   CODE   PROC     0008H  -----
  errtime. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
sd2300_stop. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SDA. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0086H  1
SCL. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0087H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
_display_time. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  current_time . . . . . . . . . . . .  * REG *  DATA   PTR      0001H  3
  second . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  hour . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
sd2300_no_ack. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_load_number . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
u_char . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
sd2300_receive_byte. . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  ddata. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    331    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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