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

📄 shumaguan.lst

📁 51单片机与MAX 7219连接
💻 LST
字号:
C51 COMPILER V7.06   SHUMAGUAN                                                             09/10/2008 17:00:58 PAGE 1   


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

stmt level    source

   1          #include<reg51.h>
   2          #include<absacc.h>
   3          #include<intrins.h>
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          sbit  DIN=P1^0;                 //串行数据输入
   7          sbit  CLK=P1^1;                  //串行时钟
   8          sbit  LOAD=P1^2;                 //显示数据锁存控制
   9          #define NoOp   0x00               //空操作寄存器
  10          #define  Digit0  0x01      //数码管1寄存器
  11                  
  12          #define  DecodeMode  0x09          //译码模式寄存器
  13          #define  Intensity   0x0a         //亮度寄存器
  14          #define  ScanLimit   0x0b          //扫描位数寄存器
  15          #define  ShutDown    0x0c               //低功耗模式寄存器
  16          #define  DisplayTest 0x0f               //显示测试寄存器
  17          
  18          #define  ShutDownMode  0x00                //低功耗方式
  19          #define  NormalOperation  0x01     //正常操作方式
  20          
  21          #define  ScanDigit   0x00                  //扫描位数设置,显示8位数码管
  22          #define  DecodeDigit 0xff                  //译码设置8位均为BCD码
  23          #define  IntensityGrade 0x01            //亮度级别设置
  24          
  25          #define  TestMode  0x01                    //显示测试模式
  26          #define  TestEnd 0x00                      //显示测试结束,恢复正常工作模式
  27          
  28          uchar  DisBuffer[8]={0,0,0,0,0,0,0,0};   //显示缓存区
  29          
  30          void delay(uint  t)
  31          {
  32   1         uint i;
  33   1         while(t--)
  34   1         {
  35   2              for(i=0;i<125;i++)
  36   2              {}
  37   2         
  38   2         }
  39   1      
  40   1      }
  41          
  42          //向MAX7219写入字节(8位)
  43          void  SendChar  (uchar ch)
  44          {
  45   1         uchar i,temp;
  46   1         _nop_();
  47   1         for (i=0;i<8;i++)
  48   1         {
  49   2               temp=ch & 0x80;
  50   2               ch=ch<<1;
  51   2               if(temp)
  52   2               {
  53   3                DIN=1;
  54   3                CLK=0;
  55   3                CLK=1;
C51 COMPILER V7.06   SHUMAGUAN                                                             09/10/2008 17:00:58 PAGE 2   

  56   3               }
  57   2              else
  58   2              {
  59   3               DIN=0;
  60   3               CLK=0;
  61   3               CLK=1;
  62   3              }
  63   2         
  64   2         }
  65   1      
  66   1      }
  67          
  68          //向MAX7219写入字节
  69          void WriteWord  (uchar addr,uchar  num)
  70          {
  71   1       LOAD=0;
  72   1       _nop_();
  73   1       SendChar(addr);
  74   1       _nop_();
  75   1       SendChar(num);
  76   1       _nop_();
  77   1        LOAD=1;          //锁存进相应的寄存器
  78   1      }
  79          
  80           //     MAX7219初始化
  81           void  InitDisplay (void)
  82           {
  83   1        WriteWord(ScanLimit,ScanDigit);               //设置扫描界限
  84   1        WriteWord(DecodeMode,DecodeDigit);      //设置译码模式
  85   1        WriteWord(Intensity,IntensityGrade);    //设置亮度
  86   1        WriteWord(ShutDown,NormalOperation);   //设置正常工作模式
  87   1       
  88   1       }
  89          
  90          
  91          void main (void)
  92          {
  93   1        InitDisplay();                //初始化MAX7219
  94   1        WriteWord(DisplayTest,TestMode);               //开始显示测试,点亮所有LED
  95   1        delay(3000);                                                   //延时约3秒
  96   1        WriteWord (DisplayTest,TestEnd);                 //退出显示测试模式
  97   1      
  98   1      
  99   1        while(1)
 100   1        {
 101   2         uchar i;
 102   2      
 103   2      //8个数码管以相同时间间隔2S同时变化显示0~9的数字
 104   2          for(i=0;i<=9;i++)
 105   2              {
 106   3               delay(2000);                           //间隔约两秒
 107   3               InitDisplay();
 108   3               
 109   3                 DisBuffer[0]=i;
 110   3      
 111   3                WriteWord(Digit0,DisBuffer[0]);
 112   3                
 113   3              
 114   3              } 
 115   2        
 116   2        }
 117   1      
C51 COMPILER V7.06   SHUMAGUAN                                                             09/10/2008 17:00:58 PAGE 3   

 118   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    163    ----
   CONSTANT SIZE    =   ----    ----
   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 + -