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

📄 ds2438.lst

📁 自己写的测试程序,调试已通过,可以直接使用, 而且有的还有详细的注释.红外采集器软件
💻 LST
字号:
C51 COMPILER V7.08   DS2438                                                                06/13/2007 16:48:13 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE DS2438
OBJECT MODULE PLACED IN ds2438.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds2438.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<w78e58b.h>
   2          #include <intrins.h>
   3          
   4          sbit dq=P1^2;
   5          sbit dq_find=P1^0;
   6          
   7          void ds2438_write(unsigned char dst);
   8          void ds2438_reset(void);
   9          bit ds2438_wait(void);
  10          /************* delay time  ******************************/  
  11          void ds2438_delay(char t)
  12          {
  13   1       for(;t>0;t--)
  14   1        {}
  15   1       }
  16          
  17          /************** wait *****************************/
  18          bit ds2438_wait(void)
  19           {
  20   1       unsigned char i;
  21   1        bit x;
  22   1        x=0;  
  23   1        for(i=0;i<100;i++)
  24   1        {
  25   2         if(~dq)
  26   2           { 
  27   3            if(dq)
  28   3                  {x=1;return x;}
  29   3                 }    }  
  30   1          return x;        
  31   1                
  32   1                }  
  33          
  34          /**************  reset ds2438  ************************/
  35          void ds2438_reset(void)       // reset ds2438
  36           {
  37   1       dq_find=0;
  38   1       dq=0;
  39   1       ds2438_delay(50);
  40   1       dq=1;
  41   1       dq_find=1;
  42   1       }
  43          /***************  wait responsion ***********************/
  44          
  45          /***************  read a bit data ******************************/
  46          bit ds2438_readbit(void)
  47           { 
  48   1        bit x;
  49   1        dq=0;
  50   1                                      _nop_();
  51   1                                      _nop_();
  52   1                                     _nop_();
  53   1                                      _nop_();
  54   1        dq=1;
  55   1        x=dq;
C51 COMPILER V7.08   DS2438                                                                06/13/2007 16:48:13 PAGE 2   

  56   1      return(x);
  57   1       }
  58          /**************** read a byte data *****************************/
  59           unsigned char ds2438_readbyte(void)
  60           {
  61   1         unsigned char i,dat,x;
  62   1         dat=0x00;
  63   1        for(i=0;i<8;i++)
  64   1        { 
  65   2          x=ds2438_readbit();                                             
  66   2          dat=(x<<7)|(dat>>1);              
  67   2          }
  68   1         return(dat);
  69   1       }
  70          /*******************  write a byte data *******************************/
  71          void ds2438_write(unsigned char dat)
  72           {
  73   1         unsigned char i,x;
  74   1         for(i=0;i<8;i++)
  75   1          {
  76   2           x=dat&1;
  77   2           dat>>=1;
  78   2           if(x==1)
  79   2            {  
  80   3             dq=0;
  81   3             ds2438_delay(0);
  82   3                                                 _nop_();
  83   3                                               _nop_();
  84   3                                               _nop_();
  85   3                                               _nop_();
  86   3                                                _nop_();
  87   3                                               _nop_();
  88   3             dq=1;
  89   3           }
  90   2         else {
  91   3                dq=0;
  92   3                ds2438_delay(5);
  93   3                dq=1;
  94   3                }
  95   2           }
  96   1        }
  97          /************  starting ds2438  ********************/
  98          void ds2438_start(void)
  99          {   EA=0;
 100   1           ds2438_reset();
 101   1           ds2438_wait();
 102   1           ds2438_write(0xcc);             
 103   1           ds2438_write(0x44); 
 104   1      
 105   1            ds2438_reset();
 106   1           ds2438_wait();
 107   1           ds2438_write(0xcc);             
 108   1           ds2438_write(0xb4);  
 109   1             ds2438_reset();
 110   1        ds2438_wait();
 111   1        ds2438_write(0xcc);
 112   1        ds2438_write(0xb8);
 113   1         ds2438_write(0x00);
 114   1           
 115   1                                  
 116   1         EA=1;                            
 117   1        }
C51 COMPILER V7.08   DS2438                                                                06/13/2007 16:48:13 PAGE 3   

 118          
 119          
 120             
 121          /*   bit ds2438_readbit_find(void)
 122           { 
 123            bit x;
 124            dq_find=0;
 125            ds2438_delay(1);                     
 126            dq_find=1;
 127            x=dq_find;
 128          return(x);
 129           }  
 130                
 131             /**************** read a byte data *****************************
 132           unsigned char ds2438_readbyte_find(void)
 133           {
 134             unsigned char i,dat,x;
 135             dat=0x00;
 136            for(i=0;i<8;i++)
 137            { 
 138              x=ds2438_readbit_find();                 
 139              ds2438_delay(1);
 140              dat=(x<<7)|(dat>>1);
 141              }
 142             return(dat);
 143           }
 144          
 145          
 146          /************** wait *****************************
 147          bit ds2438_wait_find(void)
 148           {
 149           unsigned char i;
 150            bit x;
 151           x=0;  
 152            for(i=0;i<100;i++)
 153            {
 154             if(~dq_find)
 155               { 
 156                    ds2438_delay(0);
 157                if(dq_find)
 158                      {x=1;return x;}
 159                     }    }  
 160              return x;         
 161             
 162                    
 163                    }
 164          
 165          /*******************  dq_find ***************************
 166          void ds2438_write_find(unsigned char dat)
 167           {  
 168             unsigned char i,x;
 169             for(i=0;i<8;i++)
 170              {
 171               x=dat&1;
 172               dat>>=1;
 173               if(x==1)
 174                {  
 175                 dq_find=0;
 176                  ds2438_delay(0);
 177                 dq_find=1;
 178               }
 179             else {
C51 COMPILER V7.08   DS2438                                                                06/13/2007 16:48:13 PAGE 4   

 180                    dq_find=0;
 181                    ds2438_delay(5);
 182                    dq_find=1;
 183                    }
 184               }
 185            }
 186          /***********  read number   ********************************
 187          void ds2438_number(unsigned char xxxxx[8])
 188          {
 189           unsigned char *p;
 190           unsigned char i; 
 191            
 192            p=xxxxx;
 193            EA=0;
 194            ds2438_reset();
 195            ds2438_wait_find();              
 196            ds2438_write_find(0x33);
 197            for(i=0;i<8;i++)
 198            {
 199              *p=ds2438_readbyte_find();
 200               p++;
 201               
 202                   }
 203             EA=1;
 204           }         */
 205          
 206          
 207          void ds2438_read_integrated_page(unsigned char x,unsigned char d[8],unsigned char dat[8])
 208          {
 209   1       unsigned char *p;
 210   1       unsigned char i; 
 211   1        
 212   1        p=d;
 213   1        EA=0;  
 214   1       
 215   1        ds2438_reset();
 216   1        ds2438_wait();                     
 217   1         ds2438_write(0x55);
 218   1         for(i=0;i<8;i++)
 219   1          {
 220   2                ds2438_write(*p);
 221   2                p++;
 222   2                                                
 223   2                }
 224   1         p=dat;     
 225   1        ds2438_write(0xbe);
 226   1        ds2438_write(x);
 227   1        
 228   1        for(i=0;i<8;i++)
 229   1        {
 230   2          *p=ds2438_readbyte();
 231   2           p++;
 232   2           
 233   2               }
 234   1         EA=1;
 235   1       }
 236          
 237          /*void ds2438_write_integrated_page(unsigned char x,unsigned char d[8],unsigned char dat[8])
 238          {
 239           unsigned char *p;
 240           unsigned char i; 
 241            
C51 COMPILER V7.08   DS2438                                                                06/13/2007 16:48:13 PAGE 5   

 242            p=d;
 243            EA=0;
 244             ds2438_reset();
 245             ds2438_wait();                     
 246             ds2438_write(0x55);
 247             for(i=0;i<8;i++)
 248              {
 249                    ds2438_write(*p);
 250                    p++;
 251                                                    
 252                    }
 253             p=dat;        
 254            ds2438_write(0x4e);
 255            ds2438_write(x);
 256            
 257            for(i=0;i<8;i++)
 258            {
 259              ds2438_write(*dat);
 260               dat++;
 261               
 262                   }
 263             ds2438_reset();
 264            ds2438_wait();
 265            ds2438_write(0xcc);
 266             ds2438_write(0x48);
 267             ds2438_write(x);
 268           
 269             EA=1;
 270           }                   */
 271          
 272          


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


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

⌨️ 快捷键说明

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