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

📄 led移位显示测试.lst

📁 采用DS12C887做时钟
💻 LST
字号:
C51 COMPILER V8.02   LED_莆幌允_测试                                                       06/02/2007 00:52:55 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LED_莆幌允_测试
OBJECT MODULE PLACED IN LED移位显示测试.OBJ
COMPILER INVOKED BY: G:\8.02\C51\BIN\C51.EXE LED移位显示测试.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1            #include <AT89X52.H>
   2             #include <INTRINS.h> 
   3           unsigned char code Tab[]={0xff,0Xfd,0xff,0xfe,0xff,0xf7,0xff,0xfb,0xff,0xdf,0xff,0xef,0xff,0x7f,0xff,0xbf
             -,
   4                                     0Xfd,0xff,0xfe,0xff,0xf7,0xff,0xfb,0xff,0xdf,0xff,0xef,0xff,0x7f,0xff,0xbf,0xff
             -};
   5           unsigned char code codedisplay[]={0xDF,0xBF,0xDF,0xBF,0xDF,0xBF,0xDC,0x03,0x03,0xBF,0xDF,0xBF,0x88,0x01,0
             -x97,0xFF,
   6                                                                             0x97,0xBF,0x5F,0xBF,0xDC,0x03,0xDF,0xBF,0xDF,0xBF,0xDF,0xBF,0xD0,0x01,0xDF,0xFF,/*"桂",0*/
   7                                                                             0xEF,0xDF,0xEF,0xDF,0xEF,0xDF,0xEF,0xDF,0x02,0x01,0xEF,0xDF,0xEF,0x9F,0xC7,0x8F,
   8                                             0xCB,0x4F,0xAB,0x57,0xAE,0xD7,0x6D,0xD9,0xEB,0xDB,0xEF,0xDF,0xEF,0xDF,0
             -xEF,0xDF,/*"林",1*/
   9                                                                             0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,
  10                                                                             0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xFE,0xFD,0xFE,0xFD,0xFF,0x01,0xFF,0xFF,/*"电",2*/
  11                                                                             0xFF,0xFF,0xC0,0x1F,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,
  12                                                                             0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF};/*"子",3*/
  13            unsigned char  display_buff[8];
  14            unsigned char  m,addr,dat=0;
  15           #ifndef   I2C_H   
  16            #define   I2C_H   
  17            typedef   unsigned   char   uchar;     //重新定义数据类型   
  18            typedef   unsigned   int     uint;       
  19            const    uchar   WR24C02   =   0xa0;     //读写控制命令    //EEPROM地址+写命令   
  20            const    uchar   RD24C02   =   0xA1;                       //EEPROM地址+读命令      
  21            sbit     I2C_SCL   =   P2^4;    //I/O口定义
  22            sbit     I2C_SDA   =   P2^5;
  23            bit      ErrorBit;     //用户变量声明      //读写错误标志       1错误     0   正确   
  24            uchar    idata   ErrorCode;           //错误码    
  25            uchar    da=0;                                                                  
  26            //************************函数声明***************************  
  27            void     Start(void);   
  28            void     Stop(void);   
  29            void     Ack(void);   
  30            void     NoAck(void);   
  31            void     TestAck(void);   
  32            void     Write_I2c(uchar   date);   
  33            uchar    Read_I2c(void);   
  34            void     DelayMs(uchar   time);   
  35            void     Write_Date(uchar   StartAddress,uchar   *date,uchar   bytes);   
  36            void     Read_Date(uchar   StartAddress,uchar   *date,uchar   bytes);   
  37            #endif   
  38           unsigned int result,count=0;
  39           void   Start(void)   
  40            {       I2C_SDA   =   1;           //起始条件的数据信号   
  41   1                _nop_();   
  42   1                I2C_SCL   =   1;           //起始条件时钟信号   
  43   1                _nop_();                   //信号建立时间>4.7us   
  44   1                _nop_();   
  45   1                _nop_();   
  46   1                _nop_();   
  47   1                _nop_();   
  48   1                I2C_SDA   =   0;           //起始信号   
  49   1                _nop_();   
  50   1                _nop_();   
  51   1                _nop_();   
C51 COMPILER V8.02   LED_莆幌允_测试                                                       06/02/2007 00:52:55 PAGE 2   

  52   1                _nop_();                   
  53   1                _nop_();   
  54   1                I2C_SCL   =   0;           //钳住I2C总线,   准备发送或者接受数据   
  55   1                _nop_();   
  56   1                _nop_();   
  57   1        }   
  58            void   Stop(void)   
  59            {      I2C_SDA   =   0;             //结束条件的数据信号   
  60   1                _nop_();   
  61   1                I2C_SCL   =   1;             //结束条件的时钟信号   
  62   1                _nop_();   
  63   1                _nop_();   
  64   1                _nop_();   
  65   1                _nop_();                   
  66   1                _nop_();   
  67   1                I2C_SDA   =   1;             //结束信号   
  68   1                _nop_();   
  69   1                _nop_();   
  70   1                _nop_();   
  71   1                _nop_();                   
  72   1        }   
  73            void   Ack(void)   
  74            {      I2C_SDA   =   0;   
  75   1                _nop_();   
  76   1                _nop_();           
  77   1                I2C_SCL   =   1;   
  78   1                _nop_();   
  79   1                _nop_();   
  80   1                _nop_();   
  81   1                _nop_();   
  82   1                _nop_();           
  83   1                I2C_SCL   =   0;   
  84   1                _nop_();   
  85   1                _nop_(); 
  86   1                        I2C_SDA   =  1;  
  87   1        }   
  88            void   NoAck(void)   
  89            {       I2C_SDA   =   1;   
  90   1                _nop_();   
  91   1                _nop_();   
  92   1                I2C_SCL   =   1;   
  93   1                _nop_();   
  94   1                _nop_();   
  95   1                _nop_();   
  96   1                _nop_();   
  97   1                _nop_();   
  98   1                I2C_SCL   =   0;   
  99   1                _nop_();   
 100   1                _nop_();   
 101   1        }   
 102            void   TestAck(void)   
 103            {        I2C_SDA   =   1;   
 104   1                _nop_();   
 105   1                _nop_();   
 106   1                I2C_SCL   =   1;   
 107   1                _nop_();   
 108   1                _nop_();   
 109   1                _nop_();   
 110   1                ErrorBit   =   I2C_SDA; 
 111   1                I2C_SCL   =   0;   
 112   1                _nop_();   
 113   1                _nop_();           
C51 COMPILER V8.02   LED_莆幌允_测试                                                       06/02/2007 00:52:55 PAGE 3   

 114   1        }   
 115            void   Write_I2c(uchar   date)   
 116            {       uchar   i; 
 117   1                for(i=0;i<8;i++)   
 118   1                {   
 119   2                        I2C_SDA=date&0x80;                 //送数据到数据线上   
 120   2                        date<<=1;   
 121   2                        _nop_();                   
 122   2                        I2C_SCL=1;                                 //置时钟信号为高电平,使数据有效   
 123   2                        _nop_();   
 124   2                        _nop_();   
 125   2                        _nop_();   
 126   2                        _nop_();   
 127   2                        _nop_();           
 128   2                        I2C_SCL=0;   
 129   2                        _nop_(); 
 130   2                        _nop_();                   
 131   2                          
 132   2                }   
 133   1        }   
 134            uchar   Read_I2c(void)   
 135            {      uchar   i;   
 136   1                uchar   byte   =   0;   
 137   1                for(i   =   0;   i   <   8;   i++)   
 138   1                {      I2C_SCL   =   0;                       //置时钟为低电平,准备接受数据   
 139   2                        _nop_();   
 140   2                        _nop_();   
 141   2                        _nop_();   
 142   2                        _nop_();   
 143   2                        _nop_();   
 144   2                        I2C_SCL   =   1;                     //置时钟为高电平,使数据线数据有效   
 145   2                        _nop_();   
 146   2                        _nop_();   
 147   2                        byte   <<=   1;   
 148   2                        byte   |=   I2C_SDA;  
 149   2                       _nop_();   
 150   2                        _nop_();   
 151   2                        I2C_SCL   =   0;   
 152   2                }   
 153   1                return(byte);   
 154   1        }   
 155            void   DelayMs(uchar   time)   
 156            {     uchar   i;   
 157   1              do   
 158   1              {  for(i=0;   i<125 ;   i++);       //*延时   8us   x   125   =   1ms   
 159   2              }   
 160   1              while   (time--);       
 161   1        }   
 162            void   Write_Date(uchar   StartAddress,uchar   *date,uchar   bytes)   
 163            {       uchar   i   =   0; 
 164   1                Start();   
 165   1                Write_I2c(WR24C02);   
 166   1                TestAck();  
 167   1                        Write_I2c(StartAddress);  
 168   1                TestAck();
 169   1                         for(i   =   0;i   <   bytes;   i++)   
 170   1                {   
 171   2                   Write_I2c(*date);   
 172   2                   TestAck(); 
 173   2                           date++;   
 174   2                }   
 175   1                             
C51 COMPILER V8.02   LED_莆幌允_测试                                                       06/02/2007 00:52:55 PAGE 4   

 176   1                Stop();   
 177   1                DelayMs(20);   
 178   1        }   
 179            void   Read_Date(uchar   StartAddress,uchar   *date,uchar   bytes)   
 180            {       uchar   i; 
 181   1                Start();   
 182   1                Write_I2c(WR24C02);   
 183   1                        TestAck();
 184   1                        Write_I2c(StartAddress);      
 185   1                TestAck(); 
 186   1                        Start();  
 187   1                Write_I2c(RD24C02);   
 188   1                TestAck();  
 189   1                         for   (i   =   0;   i<bytes;   i++)   
 190   1                {   
 191   2                   *date=   Read_I2c();
 192   2                                
 193   2                             Ack();   
 194   2                     date++;   
 195   2                }   
 196   1                                           
 197   1                NoAck();   
 198   1                Stop();   
 199   1         
 200   1        }   
 201           
 202           void delay(void)
 203          {  unsigned char        i,j;
 204   1         for(i=0;i<15;i++){   for(j=0;j<50;j++) ;     }
 205   1      } 
 206          
 207          void main(void)
 208            {     SCON=0;         P1=0; SP=0x70;
 209   1               // dat=&display_buff;
 210   1               //for(addr=0;addr<113;addr++)
 211   1                 // { Write_Date(addr,codedisplay+dat,1);dat++;      }
 212   1          Write_Date(0+16,codedisplay,16);Write_Date(16+16,codedisplay+16,16);Write_Date(32+16,codedisplay+32,16
             -);Write_Date(48+16,codedisplay+48,16);
 213   1              Write_Date(64+16,codedisplay+64,16);Write_Date(80+16,codedisplay+80,16);Write_Date(96+16,codedisplay+96,1
             -6);Write_Date(112+16,codedisplay+112,16);
 214   1         while(1)        
 215   1          {           
 216   2                                        for(m=0;m<16;m++)
 217   2                                         {   Read_Date(2*m+16,display_buff,1);Read_Date(2*m+1+16,display_buff+1,1);Read_Date(32+2*m+16,displ
             -ay_buff+2,1);Read_Date(32+2*m+1+16,display_buff+3,1);
 218   3                                             Read_Date(64+2*m+16,display_buff+4,1);Read_Date(64+2*m+1+16,display_buff+5,1);Read_Date(96+2*m+
             -16,display_buff+6,1);Read_Date(16+96+2*m+1,display_buff+7,1);
 219   3                                             SBUF=display_buff[0];    while(!TI) ; TI=0;
 220   3                                     SBUF=display_buff[1];    while(!TI) ; TI=0; 
 221   3                                         SBUF=display_buff[2];   while(!TI) ; TI=0; 
 222   3                                         SBUF=display_buff[3];    while(!TI) ; TI=0;
 223   3                                                 SBUF=display_buff[4];    while(!TI) ; TI=0; 
 224   3                                                 SBUF=display_buff[5];    while(!TI) ; TI=0; 
 225   3                                         SBUF=display_buff[6];    while(!TI) ; TI=0;
 226   3                                                 SBUF=display_buff[7];    while(!TI) ; TI=0;
 227   3                                                 SBUF=Tab[2*m]; while(!TI) ; TI=0;
 228   3                                                 SBUF=Tab[2*m+1];while(!TI) ; TI=0; 
 229   3                                                 
 230   3                                                 P3_4=0;P3_4=1;       P3_4=0;
 231   3                                 //delay();
 232   3                                }
 233   2                 }
C51 COMPILER V8.02   LED_莆幌允_测试                                                       06/02/2007 00:52:55 PAGE 5   

 234   1                 }
 235          
 236          
 237          
 238          
 239          
 240          
 241          
 242          
 243          
 244          
 245                                             
 246                            
 247                                     
 248                                     
 249               


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    656    ----
   CONSTANT SIZE    =    160    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18      10
   IDATA SIZE       =      1    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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