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

📄 main.lst

📁 此测试程序使数码管显示0-9,不断循环,可用来检查数码管及7219的好坏.
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  04/23/2009 10:31:10 PAGE 1   


C51 COMPILER V8.08, 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          #include <includes.h>
   2          
   3          /*----------------------------------------------------------*/
   4          
   5          
   6          #include <intrins.h>
   7          
   8          /*--------------------------------------------------*/
   9          sbit dis_DIN=P3^0;           /*显示串行数据输入端*/
  10          sbit dis_LOAD=P1^0;          /*显示数据锁存端*/
  11          sbit dis_CLK=P3^1;           /*显示时钟输入端*/
  12          
  13          #define NoOp   0x00         /*空操作*/
  14          #define Digit0 0x01         /*数码管1*/
  15          #define Digit1 0x02         /*数码管2*/
  16          #define Digit2 0x03         /*数码管3*/
  17          #define Digit3 0x04         /*数码管4*/
  18          #define Digit4 0x05         /*数码管5*/
  19          #define Digit5 0x06         /*数码管6*/
  20          #define Digit6 0x07         /*数码管7*/
  21          #define Digit7 0x08         /*数码管8*/
  22          #define DecodeMode 0x09     /*译码模式*/
  23          #define Intensity 0x0a     /*亮度*/
  24          #define ScanLimit 0x0b      /*扫描界限*/
  25          #define ShutDown 0x0c       /*掉电模式*/
  26          #define DisplayTest 0x0f    /*显示测试*/
  27          
  28          #define ShutdownMode 0x00      /*掉电方式工作*/
  29          #define NormalOperation 0x01   /*正常操作方式*/
  30          
  31          #define DecodeDigit 0xff       /*译码位数设置*/
  32          
  33          #define IntensityGrade 0x0f7    /*显示亮度级别设置*/
  34          
  35          #define ScanDigit 0x07         /*扫描位数设置*/
  36          
  37          #define TestMode 0x01          /*显示测试方式*/
  38          #define TextEnd 0x00           /*显示测试结束,正常工作*/
  39          
  40          
  41          unsigned char data DisBuffer[8]={0,0,0,0,0,0,0,0};    /*显示缓存区*/
  42          
  43           
  44          unsigned char code dispaly_list[]=
  45              { 
  46          0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,    /*0,1,2,3,4,5,6,7,8,9*/
  47                0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff,0x00};   /*A,B,C,D,E,F,P,U,全
  48          亮,全灭*/
  49          
  50          
  51          
  52          /*--------------------------------------------------------
  53                             10ms延时子程序
  54          ---------------------------------------------------------*/
  55          
C51 COMPILER V8.08   MAIN                                                                  04/23/2009 10:31:10 PAGE 2   

  56          void delayX10ms(unsigned char count)
  57               {
  58   1            unsigned char j,k;
  59   1            while(count--!=0)
  60   1              {
  61   2               for(j=0;j<43;j++)
  62   2                 for(k=0;k<73;k++)
  63   2                 ;
  64   2              }
  65   1           }
  66          
  67          /*-------------------------------------------------
  68                          向MAX7219写入字节(8位)
  69          --------------------------------------------------*/
  70          void SendChar (unsigned char ch)
  71             {
  72   1          unsigned char i,temp;
  73   1          _nop_();
  74   1          for (i=0;i<8;i++)
  75   1             {
  76   2                 temp=ch&0x80;
  77   2                 ch=ch<<1;
  78   2                 if(temp)
  79   2                {
  80   3                 dis_DIN=1;
  81   3                 dis_CLK=0;
  82   3                 dis_CLK=1;
  83   3                }
  84   2              else
  85   2                {
  86   3                 dis_DIN=0;
  87   3                 dis_CLK=0;
  88   3                 dis_CLK=1;
  89   3                }
  90   2             }
  91   1         }
  92          
  93          /*-------------------------------------------------
  94                         向MAX7219写入字(16位)
  95          -------------------------------------------------*/
  96          void WriteWord (unsigned char addr,unsigned char num)
  97             {
  98   1          dis_LOAD=0;
  99   1          _nop_();
 100   1          SendChar (addr);
 101   1          _nop_();
 102   1          SendChar (num);
 103   1          _nop_();
 104   1          dis_LOAD=1;
 105   1         }
 106          
 107          /*-------------------------------------------------
 108                           MAX7219初始化
 109          -------------------------------------------------*/
 110          void InitDis (void)
 111             {
 112   1          WriteWord (ScanLimit,ScanDigit);         /*设置扫描界限*/
 113   1          WriteWord (DecodeMode,DecodeDigit);      /*设置译码模式*/
 114   1          WriteWord (Intensity,IntensityGrade);    /*设置亮度*/
 115   1          WriteWord (ShutDown,NormalOperation);    /*设置电源工作模式*/
 116   1         }
 117          
C51 COMPILER V8.08   MAIN                                                                  04/23/2009 10:31:10 PAGE 3   

 118          /*-------------------------------------------------
 119                              系统上电初始化
 120          -------------------------------------------------*/
 121          void InitMain (void)
 122             {
 123   1          IE=0x00;    /*设置中断允许寄存器*/
 124   1          IP=0x00;    /*设置中断优先级管理寄存器*/
 125   1          TH0=0xd8;   /*设定时器初值,10ms*/
 126   1          TL0=0xf0;
 127   1          TMOD=0x01;  /*T1 定时器模式2,波特率发生器,T0 定时器模式1*/
 128   1          TCON=0x11;  /*设置定时器控制寄存器,INT0设置为边沿触发方式*/
 129   1          PSW=0x00;
 130   1         }
 131          
 132          /*-------------------------------------------------
 133                              显示函数
 134          -------------------------------------------------*/
 135           void main(void)
 136           {
 137   1       InitMain ();
 138   1         InitDis ();
 139   1         
 140   1       WriteWord (DisplayTest,TestMode);
 141   1            delayX10ms(0x64);
 142   1             
 143   1         WriteWord (DisplayTest,TextEnd);
 144   1      
 145   1         
 146   1        while(1)
 147   1                  {
 148   2                   unsigned char i;
 149   2                   for (i=9;i<=9;i--)
 150   2                      {
 151   3                     delayX10ms(0x64);
 152   3                  
 153   3                       InitDis ();
 154   3                     DisBuffer[0]=i;
 155   3                     DisBuffer[1]=i;
 156   3                     DisBuffer[2]=i;
 157   3                     DisBuffer[3]=i;
 158   3                     DisBuffer[4]=i;
 159   3                     DisBuffer[5]=i;
 160   3                     DisBuffer[6]=i;
 161   3                     DisBuffer[7]=i;
 162   3                     
 163   3                     WriteWord (Digit0,DisBuffer[0]);
 164   3                     WriteWord (Digit1,DisBuffer[1]);
 165   3                     WriteWord (Digit2,DisBuffer[2]);
 166   3                     WriteWord (Digit3,DisBuffer[3]);
 167   3                     WriteWord (Digit4,DisBuffer[4]);
 168   3                     WriteWord (Digit5,DisBuffer[5]);
 169   3                     WriteWord (Digit6,DisBuffer[6]);
 170   3                     WriteWord (Digit7,DisBuffer[7]);
 171   3                    }
 172   2      
 173   2                }
 174   1      
 175   1      
 176   1      
 177   1               }


C51 COMPILER V8.08   MAIN                                                                  04/23/2009 10:31:10 PAGE 4   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    246    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       1
   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 + -