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

📄 47hc595.lst

📁 LED显示屏的实验
💻 LST
字号:
C51 COMPILER V6.23a  47HC595                                                               11/21/2008 16:25:58 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE 47HC595
OBJECT MODULE PLACED IN 47HC595.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 47HC595.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3           
   4          sbit sdi = P3^2;
   5          sbit shcp = P3^1;
   6          sbit stcp = P3^0;
   7          sbit eo = P3^7;
   8          #define hang P1
   9           
  10          unsigned char aa;
  11           
  12          unsigned char g_data[16][2*3];
  13          unsigned char F=0;
  14           
  15          code unsigned char character_state[16][2*7]=
  16          {
  17           {0x01,0x00,0x08,0x08,0x01,0x04,0x02,0x00,0x00,0x08,0x00,0x00,0x00,0x08,},
  18           {0x11,0x00,0x0B,0xFC,0x07,0x84,0x02,0x04,0x7D,0xFC,0x00,0x80,0x3F,0xFC,},
  19           {0x11,0x10,0x12,0x08,0x7C,0x04,0xFF,0xFE,0x45,0x08,0x04,0x80,0x00,0x08,},
  20           {0x1F,0xF8,0x13,0xF8,0x04,0x24,0x04,0x00,0x49,0x08,0x04,0x40,0x00,0x48,},
  21           {0x11,0x00,0x22,0x08,0x04,0x24,0x04,0x10,0x49,0xF8,0x08,0x40,0xFF,0xE8,},
  22           {0x21,0x00,0x4B,0xF8,0x05,0x24,0x0F,0xF8,0x51,0x08,0x08,0x20,0x00,0x08,},
  23           {0x01,0x04,0x88,0x00,0xFF,0xA4,0x08,0x10,0x49,0x08,0x11,0x10,0x00,0x88,},
  24           {0xFF,0xFE,0x17,0xFC,0x0C,0x24,0x18,0x10,0x49,0xF8,0x21,0x0E,0x3F,0xC8,},
  25           {0x04,0x80,0x30,0x10,0x0E,0x24,0x2F,0xF0,0x45,0x04,0xC2,0x04,0x20,0x88,},
  26           {0x04,0x80,0x50,0x14,0x15,0xA4,0x48,0x10,0x45,0x88,0x02,0x00,0x20,0x88,},
  27           {0x04,0x80,0x9F,0xFE,0x14,0xA4,0x88,0x10,0x45,0x50,0x04,0x00,0x20,0x88,},
  28           {0x08,0x80,0x12,0x10,0x24,0x24,0x0F,0xF0,0x69,0x20,0x08,0x40,0x20,0x88,},
  29           {0x08,0x82,0x11,0x10,0x44,0x04,0x08,0x10,0x51,0x10,0x10,0x20,0x3F,0x88,},
  30           {0x10,0x82,0x11,0x10,0x04,0x04,0x08,0x10,0x41,0x4E,0x1F,0xF0,0x20,0x88,},
  31           {0x20,0x7E,0x10,0x50,0x04,0x14,0x08,0x50,0x41,0x84,0x00,0x10,0x00,0x28,},
  32           {0x40,0x00,0x10,0x20,0x04,0x08,0x08,0x20,0x41,0x00,0x00,0x00,0x00,0x10,},
  33          };  
  34           
  35          void dleay(unsigned char t)
  36          {
  37   1              unsigned char i,j;
  38   1              for(i=0;i<t;i++)
  39   1                      for(j=0;j<255;j++);
  40   1      }
  41          
  42          void sendbyte(unsigned char dat)
  43          {
  44   1       unsigned char j;
  45   1       for(j=0;j<8;j++)
  46   1       {
  47   2        shcp = 0;
  48   2        if(dat&0x80)
  49   2         sdi = 1;
  50   2        else
  51   2         sdi = 0;
  52   2        shcp = 1;
  53   2        dat = dat<<1;
  54   2       }
  55   1      }
C51 COMPILER V6.23a  47HC595                                                               11/21/2008 16:25:58 PAGE 2   

  56           
  57          void display()
  58          {
  59   1       unsigned char i;
  60   1       for(i=0;i<16;i++)//g_data
  61   1       {
  62   2        sendbyte(g_data[i][0]);
  63   2        sendbyte(g_data[i][1]); sendbyte(g_data[i][2]);
  64   2        sendbyte(g_data[i][3]); sendbyte(g_data[i][4]);sendbyte(g_data[i][5]);
  65   2        stcp = 0;
  66   2        hang = ~i;
  67   2        stcp = 1;
  68   2        //dleay(1);
  69   2       }
  70   1      }
  71           
  72          void updat (void) interrupt 1
  73          {
  74   1          TH0 = -50000/255;
  75   1          TL0 = -50000%255;
  76   1           aa++;     
  77   1      }
  78           
  79          void ledinit(void)
  80          {
  81   1       unsigned char s;
  82   1          TMOD=0x01;
  83   1          TH0 = -50000/255;
  84   1          TL0 = -50000%255;
  85   1          TR0=1;
  86   1          ET0=1;
  87   1          EA=1;
  88   1       for(s=0;s<16;s++)
  89   1       {
  90   2        g_data[s][0]=character_state[s][0];
  91   2        g_data[s][1]=character_state[s][1];
  92   2        g_data[s][2]=character_state[s][2];
  93   2        g_data[s][3]=character_state[s][3];
  94   2        g_data[s][4]=character_state[s][4];
  95   2        g_data[s][5]=character_state[s][5];
  96   2       } 
  97   1      }
  98          /*
  99          void left(unsigned char *s,unsigned char length)
 100          {
 101           unsigned char cur=s[0];
 102           unsigned char m;
 103           unsigned char c;
 104           for( m=0;m<length-1;m++ )
 105           {
 106            c=s[m+1];
 107            c=c>>7;
 108            s[m]=(s[m]<<1);
 109            s[m]=s[m]|c;
 110           }
 111           s[m]=(s[m]<<1);
 112           cur=cur>>7;
 113           s[m]=s[m]|cur;
 114          }*/
 115          void left(unsigned char *s,unsigned char length,unsigned char n)
 116          {
 117   1       unsigned char cur=s[0];
C51 COMPILER V6.23a  47HC595                                                               11/21/2008 16:25:58 PAGE 3   

 118   1       unsigned char m;
 119   1       unsigned char c;           
 120   1       for( m=0;m<length-1;m++ )
 121   1       {
 122   2        c=s[m+1];
 123   2        c=c>>(8-n);
 124   2        s[m]=(s[m]<<n);
 125   2        s[m]=s[m]|c;
 126   2       }
 127   1       s[m]=(s[m]<<n);
 128   1       cur=cur>>(8-n);
 129   1       s[m]=s[m]|cur;
 130   1      }  
 131          
 132          void convert(void)
 133          { 
 134   1       unsigned char s; 
 135   1       unsigned char g_line[8];
 136   1       unsigned char s1,s2,s3;
 137   1       aa=0;
 138   1       eo=1;
 139   1       
 140   1      /*
 141   1       for(s=0;s<16;s++)
 142   1       {
 143   1        left(&(g_data[s][0]),6);
 144   1       } 
 145   1      */
 146   1       F++;
 147   1       if( F== 14*8 ) F=0;
 148   1       //F=F%(14*8);
 149   1       
 150   1       s1=F/8;
 151   1       s2=F%8;
 152   1       
 153   1       for(s=0;s<16;s++)
 154   1       {
 155   2        for( s3=0;s3<7;s3++)
 156   2         g_line[s3]=character_state[s][(s1+s3)%14]; 
 157   2        
 158   2        left(&(g_line[0]),7,s2);
 159   2        for( s3=0;s3<6;s3++)
 160   2         g_data[s][s3]=g_line[s3];
 161   2       }
 162   1       eo=0;
 163   1      }
 164           
 165          void main(void)
 166          {   
 167   1       F=0;
 168   1       ledinit();
 169   1       while(1)
 170   1       {
 171   2       if(aa>0)
 172   2        {   
 173   3          convert();
 174   3        }
 175   2        display();
 176   2       }
 177   1      }


C51 COMPILER V6.23a  47HC595                                                               11/21/2008 16:25:58 PAGE 4   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    624    ----
   CONSTANT SIZE    =    224    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     98      17
   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 + -