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

📄 main.lst

📁 周立功单片机上的源程序
💻 LST
字号:
C51 COMPILER V7.09   MAIN                                                                  07/01/2006 11:24:09 PAGE 1   


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

line level    source

   1          /*
   2                  main.c
   3                  16×16 LED点阵的扫描显示:滚动显示文字
   4          */
   5          
   6          
   7          #include "Zimo.h"
   8          #include <reg51.h>
   9          #include <ctype.h>
  10          
  11          
  12          //设置屏幕滚动速度(单位:×10ms)
  13          #define SCROLL_SPEED    15
  14          
  15          
  16          //定义I/O端口
  17          sbit STR = P1^3;        //74HC595存储寄存器时钟(Storage register clock)
  18          sbit SI = P1^4;         //74HC595串行输入信号(Serial Input)
  19          sbit SCK = P1^5;        //74HC595移位寄存器时钟(Shift register clock)
  20          
  21          
  22          //定义显示缓冲区(在T1定时中断里扫描)
  23          unsigned char data DispBuf[32];
  24          
  25          
  26          /*
  27          函数:SysInit()
  28          功能:系统初始化
  29          */
  30          void SysInit()
  31          {
  32   1              unsigned char i;
  33   1              for ( i=0; i<32; i++ )
  34   1              {
  35   2                      DispBuf[i] = 0x00;
  36   2              }
  37   1              STR = 1;
  38   1              SI = 0;
  39   1              SCK = 0;
  40   1              TMOD &= 0xF0;
  41   1              TMOD |= 0x01;
  42   1              TMOD &= 0x0F;
  43   1              TMOD |= 0x10;
  44   1              TH1 = 0xFC;
  45   1              TL1 = 0x66;
  46   1              TR1 = 1;
  47   1              ET1 = 1;
  48   1              EA = 1;
  49   1      }
  50          
  51          
  52          /*
  53          函数:Delay()
  54          功能:延时10ms~2.56s
  55          参数:
C51 COMPILER V7.09   MAIN                                                                  07/01/2006 11:24:09 PAGE 2   

  56                  t>0时,延时(t*10)ms
  57                  t=0时,延时2.56s
  58          */
  59          void Delay(unsigned char t)
  60          {
  61   1              do
  62   1              {
  63   2                      TH0 = 0xDC;
  64   2                      TL0 = 0x66;
  65   2                      TR0 = 1;
  66   2                      while ( !TF0 );
  67   2                      TR0 = 0;
  68   2                      TF0 = 0;
  69   2              }while ( --t != 0 );
  70   1      }
  71          
  72          
  73          /*
  74          函数:PutChar()
  75          功能:滚动显示一个字母或汉字
  76          参数:
  77                  c:字母或汉字的编码
  78                  当c>=0x80时,视为一个汉字
  79          */
  80          void PutChar(unsigned char c)
  81          {
  82   1              unsigned int a;         //地址变量
  83   1              unsigned char i,j;      //循环变量
  84   1              unsigned char t;        //临时变量
  85   1              unsigned char code *Tab;        //指针,用于查表
  86   1              t = 8;
  87   1              if ( c >= 0x80 )        //如果c是汉字
  88   1              {
  89   2                      t = 16;
  90   2                      a = 32 * ( c - 0x80 );
  91   2                      Tab = HanziTab;
  92   2              }
  93   1              else if ( isupper(c) )  //如果c是大写字母
  94   1              {
  95   2                      a = 16 * ( c - 'A' );
  96   2                      Tab = UpperTab;
  97   2              }
  98   1              else if ( islower(c) )  //如果c是小写字母
  99   1              {
 100   2                      a = 16 * ( c - 'a' );
 101   2                      Tab = LowerTab;
 102   2              }
 103   1              else    //如果是其它字符
 104   1              {
 105   2                      return;
 106   2              }
 107   1              for ( j=0; j<t; j++ )
 108   1              {
 109   2                      for ( i=0; i<15; i++ )
 110   2                      {
 111   3                              DispBuf[i] = DispBuf[i+1];
 112   3                              DispBuf[16+i] = DispBuf[17+i];
 113   3                      }
 114   2                      DispBuf[i] = Tab[a+j];
 115   2                      DispBuf[16+i] = Tab[a+j+t];
 116   2                      Delay(SCROLL_SPEED);
 117   2              }
C51 COMPILER V7.09   MAIN                                                                  07/01/2006 11:24:09 PAGE 3   

 118   1      }
 119          
 120          
 121          /*
 122          函数:PutStr()
 123          功能:滚动显示一个文字串
 124          参数:
 125                  *str:以'\0'结尾的文字串
 126                  *str可以同时包含字母和汉字,其中汉字必须是小汉字库内的汉字
 127          */
 128          void PutStr(unsigned char code *str)
 129          {
 130   1              unsigned char c;
 131   1              for (;;)
 132   1              {
 133   2                      c = *str++;
 134   2                      if ( c == '\0' ) break;
 135   2                      PutChar(c);
 136   2              }
 137   1      }
 138          
 139          
 140          
 141          /*
 142          函数:T1INTSVC()
 143          功能:T1中断服务函数
 144          */
 145          void T1INTSVC() interrupt 3 using 2
 146          {
 147   1              code unsigned char Tab[] =
 148   1              {//定义扫描数据表
 149   1                      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,
 150   1                      0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 151   1              };
 152   1              static unsigned char n = 0;             //局部静态变量,用于查表
 153   1              unsigned char i,j;              //循环变量
 154   1              unsigned char d;                //临时变量
 155   1              unsigned char data buf[4];      //临时数组,用于向74HC595发送数据
 156   1      //处理定时器T1
 157   1              TR1 = 0;
 158   1              TH1 = 0xFC;
 159   1              TL1 = 0x66;
 160   1              TR1 = 1;
 161   1      //查表,取得要发送的数据
 162   1              buf[0] = Tab[n];
 163   1              buf[1] = Tab[16+n];
 164   1              buf[2] = DispBuf[16+n];
 165   1              buf[3] = DispBuf[n];
 166   1              n++;
 167   1              n &= 0x0F;
 168   1      //向74HC595发送数据
 169   1              STR = 0;
 170   1              for ( i=0; i<4; i++ )
 171   1              {
 172   2                      d = buf[i];
 173   2                      j = 8;
 174   2                      do
 175   2                      {
 176   3                              SI = (bit)(d & 0x01);
 177   3                              SCK = 1;
 178   3                              d >>= 1;
 179   3                              SCK = 0;
C51 COMPILER V7.09   MAIN                                                                  07/01/2006 11:24:09 PAGE 4   

 180   3                      } while ( --j != 0 );
 181   2              }
 182   1              STR = 1;
 183   1      }
 184          
 185          
 186          void main()
 187          {
 188   1              //定义文字串
 189   1              code unsigned char s[] =
 190   1              {
 191   1                      0x81,   //欢
 192   1                      0x82,   //迎
 193   1                      0x83,   //使
 194   1                      0x84,   //用
 195   1                      'S','m','a','r','t','S','O','P','C',
 196   1                      0x85,   //教
 197   1                      0x86,   //学
 198   1                      0x87,   //实
 199   1                      0x88,   //验
 200   1                      0x89,   //开
 201   1                      0x8A,   //发
 202   1                      0x8B,   //平
 203   1                      0x8C,   //台
 204   1                      0x80,   // (全角空白)
 205   1                      '\0'
 206   1              };
 207   1              SysInit();
 208   1              for (;;)
 209   1              {
 210   2                      PutStr(s);
 211   2              }
 212   1      }
 213          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    452    ----
   CONSTANT SIZE    =   1303    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33      14
   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 + -