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

📄 yaoyao.lst

📁 摇摇棒10.1.14.rar
💻 LST
字号:
C51 COMPILER V8.18   YAOYAO                                                                03/17/2010 16:04:46 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE YAOYAO
OBJECT MODULE PLACED IN yaoyao.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE yaoyao.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************************
   2          程序名称:LED摇摇棒显示64*16像素
   3          简要说明:外部中断方式INT0显示;取模方式:纵向取模、字节倒序,从上到下从左到右,纵向8点下高位
   4          
   5          **********************************************************/
   6          #include <AT89X52.h>
   7          #define uchar unsigned char
   8          #define uint unsigned int    //宏定义
   9          #define KEY P3_0      //定义画面切换按键
  10          uchar KY;      //KY作用在后面说明     
  11          uchar disp;     //显示汉字指针
  12          uchar pic=0,num=0,num1=0;     //pic为按键次数;num为中断次数
  13          void delay(uint z);//声明延时函数
  14          uint a;//定义循环用变量
  15          uchar code table[]={0xff,//全灭
  16          0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,
  17          0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//依次逐个点亮
  18          0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//依次逐个叠加
  19          0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐个递减
  20          0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//两边靠拢后分开
  21          0x7e,0x3c,0x18,0x00,0x00,0x18,0x3c,0x7e,//两边叠加后递减
  22          0x00,//全亮
  23          };//定义循环用数据表格/*亮的现象:先是全灭,然后依次逐个点亮,然后依次逐个叠加,然后依次逐个递减,然后两边
             -靠拢后分开,然后两边叠加后递减,最后全亮。循环!*/
  24          
  25          void delay(uint z)//1ms延时子程序,通过z值改变延时时间
  26          { uint x,y;       
  27   1          for(x=z;x>0;x--)                  
  28   1               for(y=110;y>0;y--);
  29   1               }
  30          
  31          
  32          uchar code love[] = {
  33          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  34          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,
  35          0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,
  36          0x04,0x10,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F,0x00,0x00,
  37          0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x10,
  38          0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x82,0x20,0x82,0x20,
  39          0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
  40          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*LOVE*/
  41          };
  42          
  43          uchar code loveyou[] = {
  44          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  45          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  46          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  47          0x78,0x00,0xFC,0x00,0xFE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFC,0x3F,
  48          0xF8,0x7F,0xFC,0x3F,0xFE,0x1F,0xFE,0x0F,0xFE,0x07,0xFE,0x03,0xFE,0x01,0xFC,0x00,
  49          0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  50          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  51          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*心形图案*/
  52          };
  53          
  54          /*uchar code hehe[] = {
C51 COMPILER V8.18   YAOYAO                                                                03/17/2010 16:04:46 PAGE 2   

  55          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  56          0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,
  57          0xF0,0x0F,0x08,0x10,0x04,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0x00,
  58          0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,
  59          0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0x00,
  60          0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x04,0x20,0x08,0x10,
  61          0xF0,0x0F,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,
  62          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*呵呵o(∩_∩)o图案*/
  63          //};
  64          //*/
  65          unsigned char code hanzi[] = {
  66          
  67          //"徐",
  68                0x00,0x02,0x10,0x01,0x88,0x00,0xC4,0xFF,
  69                0x23,0x00,0x20,0x22,0x50,0x12,0x48,0x4A,
  70                0x44,0x82,0xC3,0x7F,0x44,0x02,0x48,0x0A,
  71                0x50,0x13,0x30,0x32,0x10,0x00,0x00,0x00,
  72          
  73          //"红", 
  74                0x20,0x22,0x30,0x67,0xAC,0x22,0x63,0x12,
  75                0x20,0x12,0x10,0x52,0x04,0x40,0x04,0x40,
  76                0x04,0x40,0x04,0x40,0xFC,0x7F,0x04,0x40,
  77                0x06,0x40,0x04,0x60,0x00,0x40,0x00,0x00,
  78          
  79          //"霞",
  80                0x10,0x00,0x0C,0x00,0xC4,0xFF,0x6D,0x15,
  81                0x55,0x15,0x55,0x15,0xC5,0x95,0x3F,0x80,
  82                0x45,0x4D,0x55,0x55,0x55,0x25,0x6D,0x55,
  83                0xC4,0x4D,0x14,0xC0,0x0C,0x40,0x00,0x00,
  84          
  85          //"我", 
  86                0x20,0x00,0x24,0x08,0x24,0x48,0x24,0x84,
  87                0xFE,0x7F,0x23,0x02,0x22,0x21,0x20,0x10,
  88                0xFF,0x09,0x20,0x06,0x22,0x1A,0xAC,0x61,
  89                0x20,0x80,0x30,0xE0,0x20,0x00,0x00,0x00,
  90          
  91          //"好",
  92                0x10,0x40,0x10,0x22,0xF0,0x15,0x1F,0x08,
  93                0x10,0x14,0xF0,0x63,0x80,0x00,0x82,0x00,
  94                0x82,0x40,0x82,0x80,0xE2,0x7F,0x92,0x00,
  95                0x8A,0x00,0xC6,0x00,0x80,0x00,0x00,0x00,
  96          
  97          //"喜",
  98                0x00,0x02,0x02,0x02,0x0A,0x02,0xEA,0xFA,
  99                0xAA,0x4A,0xAA,0x4B,0xAA,0x4A,0xAF,0x4A,
 100                0xAA,0x4A,0xAA,0x4B,0xAA,0x4A,0xEA,0xFE,
 101                0x0B,0x0A,0x02,0x03,0x00,0x02,0x00,0x00,
 102          
 103          //"欢", 
 104                0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,
 105                0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,
 106                0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,
 107                0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,
 108          
 109          //"你",
 110                0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,
 111                0x40,0x00,0x20,0x08,0x18,0x04,0x0F,0x43,
 112                0x08,0x80,0xC8,0x7F,0x08,0x00,0x08,0x01,
 113                0x28,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,
 114          
 115          //"!",
 116                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V8.18   YAOYAO                                                                03/17/2010 16:04:46 PAGE 3   

 117                0x00,0x00,0x00,0x00,0x7C,0x10,0xFE,0x3B,
 118                0xFE,0x3B,0x7C,0x10,0x00,0x00,0x00,0x00,
 119                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 120          };
 121          
 122          /*****函数声明*****/
 123          void display1(void);
 124          void display2(void);
 125          void display3(void);
 126          void display4(void);
 127          
 128          /*****n(us)延时子程序*****/
 129          void DelayUs(uint N)
 130          {
 131   1       uint x;
 132   1       for(x=0; x<=N;x++);
 133   1      }
 134          
 135          /*****中断服务程序*****/
 136          void intersvr0(void) interrupt 0 using 1
 137          {
 138   1       KY=~KY;      //每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示)
 139   1       if(KY==0)
 140   1       {if(num==120) num=0;
 141   2        num++;     //计算中断次数
 142   2        num1++;
 143   2      
 144   2        switch(pic)      //选择画面
 145   2        {
 146   3         case 0:{display1();}break;
 147   3         case 1:{display2();}break;
 148   3         case 2:{display3();}break;
 149   3        // case 3:{display4();}break;
 150   3         default:{display1();}  
 151   3        }
 152   2          }
 153   1      }
 154          
 155          /*****显示子程序1(汉字)*****/
 156          void display1(void)
 157          {
 158   1       uchar i;
 159   1       if(num1>15){disp++;num1=0;}     //12个汉字分为3次显示完(每次显示4个),每中断10次切换
 160   1       if(disp>2)disp=0;
 161   1        DelayUs(3500);     //此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可
 162   1       for(i=0;i<64;i++)
 163   1       {
 164   2           P0=~hanzi[disp*128+i*2];
 165   2           P1=~hanzi[disp*128+i*2+1];
 166   2          // P0=~hanzi[i*2];
 167   2           //P1=~hanzi[i*2+1];
 168   2           DelayUs(100);
 169   2       }
 170   1      }
 171          
 172          /*****显示子程序2(LOVE)*****/
 173          void display2(void)
 174          {
 175   1       uchar i;
 176   1       DelayUs(3000);
 177   1       for(i=0;i<64;i++)
 178   1       {
C51 COMPILER V8.18   YAOYAO                                                                03/17/2010 16:04:46 PAGE 4   

 179   2           P0=~love[i*2];
 180   2           P1=~love[i*2+1];
 181   2           DelayUs(120);
 182   2       }
 183   1      }
 184          
 185          /*****显示子程序3(心形图案)*****/
 186          void display3(void)
 187          {
 188   1       uchar i;
 189   1        DelayUs(3000);
 190   1       for(i=0;i<64;i++)
 191   1       {
 192   2           P0=~loveyou[i*2];
 193   2           P1=~loveyou[i*2+1];
 194   2           DelayUs(120);
 195   2       }
 196   1      }
 197          
 198          /*****显示子程序4(呵呵o(∩_∩)o图案)*****/
 199          /*void display4(void)
 200          {
 201           uchar i;
 202           DelayUs(2000);
 203           for(i=0;i<64;i++)
 204           {
 205               P0=~hehe[i*2];
 206               P1=~hehe[i*2+1];
 207               DelayUs(120);
 208           }
 209          }*/
 210          
 211          
 212          void ceshi()
 213          {
 214   1               P1=table[a];//将a所在的table中的值赋给P1口 
 215   1           P0=table[a];             
 216   1                      delay(200);//1S延时子程序              
 217   1                       a++;//a的值加一               
 218   1                       if(a==50)//测试a是否等于42                    
 219   1                         a=0;//给a赋值 
 220   1      }
 221          
 222          /*****主函数*****/
 223          void main(void)
 224          {
 225   1       IT0=1;
 226   1       EX0=1; 
 227   1       EA=1;      //开中断,下降沿中断
 228   1       KY=0;
 229   1       while(1)     //主程序中只检测按键
 230   1      
 231   1       { ceshi();
 232   2         if(num<50)  pic=0;
 233   2         else if(50<num&&num<100) pic=1;    //画面切换键按下
 234   2         else if(100<num&&num<150) pic=2;
 235   2         //else if(90<num&&num<120) pic=3;
 236   2        
 237   2        
 238   2      }
 239   1      }
 240          /*****END*****/
C51 COMPILER V8.18   YAOYAO                                                                03/17/2010 16:04:46 PAGE 5   

 241          
 242          


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