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

📄 demo.lst

📁 C51演示代码,专用于LPD6803显示芯片的灯光系统,基于STC12系列高速单片机
💻 LST
字号:
C51 COMPILER V7.00  DEMO                                                                   10/14/2007 19:39:01 PAGE 1   


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

stmt level    source

   1          #include "STC12C2052.H"
   2          #include <absacc.h>
   3          
   4          typedef unsigned char BYTE;
   5          
   6          sbit SDO=P1^5;
   7          sbit SCLK=P1^7;
   8          
   9          sbit M0=P1^1;
  10          sbit M1=P3^3;
  11          
  12          
  13          void BrushOut(BYTE nDots,BYTE dr,BYTE dg,BYTE db)
  14          {   BYTE i,j,mask;
  15   1      
  16   1      // SDO,SCLK为数据和移位输出口,位变量,nDots为灯的个数   
  17   1      // 本程序仅适用于GMODE=1,CMODE=1的情况     
  18   1      // 首先输出32个'0'的起始帧        
  19   1          SCLK=0;
  20   1          SDO=0;
  21   1          for(i=0;i<32;i++) { SCLK=1;SCLK=0; }
  22   1      
  23   1      // 再输出nDots点的数据,这里假设各点的颜色都是(dr,dg,db)
  24   1      // dr,db,dg为红绿兰的灰度值0-31
  25   1          for(i=0;i<nDots;i++)
  26   1          {   //首先输出1个'1'起始位
  27   2          SDO=1;SCLK=1;SCLK=0;
  28   2              
  29   2          //输出5位红色数据             
  30   2          mask=0x10;
  31   2          for(j=0;j<5;j++)
  32   2          {    if(mask & dr)    SDO=1;
  33   3               else             SDO=0;
  34   3               SCLK=1;SCLK=0;
  35   3               mask>>=1;      }
  36   2      
  37   2          //输出5位绿色数据            
  38   2          mask=0x10;
  39   2          for(j=0;j<5;j++)
  40   2          {   if(mask & dg)   SDO=1;
  41   3              else            SDO=0;
  42   3              SCLK=1;SCLK=0;
  43   3              mask>>=1;       }
  44   2      
  45   2              //输出5位兰色数据         
  46   2          mask=0x10;
  47   2          for(j=0;j<5;j++)
  48   2          {   if(mask & db)   SDO=1;
  49   3              else            SDO=0;
  50   3              SCLK=1;SCLK=0;
  51   3              mask>>=1;       }
  52   2          }
  53   1      
  54   1          //输出完nDots的数据后,还要补nDots个脉冲   
  55   1          SDO=0;
C51 COMPILER V7.00  DEMO                                                                   10/14/2007 19:39:01 PAGE 2   

  56   1          for(i=0;i<nDots;i++) { SCLK=1;SCLK=0; }
  57   1          
  58   1          //传输结束     
  59   1      }
  60          
  61          void delay(unsigned int n)
  62          {   BYTE t;
  63   1          for(;n>0;n--)
  64   1              for(t=0;t<250;t++) ;
  65   1      }
  66          
  67          main()
  68          {   BYTE i,v,n;
  69   1          int x;
  70   1      
  71   1              AUXR=0x01;
  72   1              v=0;n=0;
  73   1              do 
  74   1              {
  75   2                      XBYTE[0xFA00]=v;
  76   2                  XBYTE[0xc000]=0;
  77   2                      for(x=0;x<512;x++)  XBYTE[0xd000+x]=x;
  78   2              } while((++v)<254);
  79   1      
  80   1              XBYTE[0xF800]=0;
  81   1              XBYTE[0xF800]=1;
  82   1              for(x=0;x<4096;x++) 
  83   1              { while(M1==0) ;while(M1==1) ;
  84   2                XBYTE[0xF800+(x & 0xff)]=0;  }
  85   1      
  86   1      
  87   1      while(1)
  88   1      {
  89   2      
  90   2              v=4;n++;
  91   2              do 
  92   2              {
  93   3                      XBYTE[0xFA00]=v;
  94   3                  XBYTE[0xc000]=0;
  95   3                      for(x=0;x<512;x++) { XBYTE[0xd000+x]=x+n; }
  96   3      
  97   3              } while((++v)<128);
  98   2      }
  99   1              AUXR=0x00;
 100   1          while(1)
 101   1          {
 102   2              //红色渐亮                
 103   2              for(i=0;i<32;i++)
 104   2              {
 105   3                  BrushOut(20,i,0,0);
 106   3                  delay(600);   }
 107   2                      
 108   2              //红色渐暗同时绿色渐亮           
 109   2              for(i=0;i<32;i++)
 110   2              {
 111   3                  BrushOut(20,31-i,i,0);
 112   3                  delay(600);   }
 113   2                  
 114   2              //绿色渐暗同时兰色渐亮     
 115   2              for(i=0;i<32;i++)
 116   2              {
 117   3                  BrushOut(20,0,31-i,i);
C51 COMPILER V7.00  DEMO                                                                   10/14/2007 19:39:01 PAGE 3   

 118   3                  delay(600);   }
 119   2                  
 120   2              //兰色渐暗          
 121   2              for(i=0;i<32;i++)
 122   2              {
 123   3                  BrushOut(20,0,0,31-i);
 124   3                  delay(600);   }
 125   2                  
 126   2              //白色渐亮          
 127   2              for(i=0;i<32;i++)
 128   2              {
 129   3                  BrushOut(20,i,i,i);
 130   3                  delay(600);   }
 131   2      
 132   2              //七彩演示 
 133   2              BrushOut(20,31,0,0);delay(10000);
 134   2              BrushOut(20,31,31,0);delay(10000);
 135   2              BrushOut(20,0,31,0);delay(10000);
 136   2              BrushOut(20,0,31,31);delay(10000);    
 137   2                      BrushOut(20,0,0,31);delay(10000);
 138   2                      BrushOut(20,31,0,31);delay(10000);
 139   2                      BrushOut(20,31,31,31);delay(10000);
 140   2          }
 141   1          
 142   1      }    


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    521    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   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 + -