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

📄 text8.lst

📁 单片机开发的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   TEXT8                                                                 03/13/2009 09:14:32 PAGE 1   


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

stmt level    source

   1          #include <reg51.h>                              // 引用标准库的头文件
   2          #include <intrins.h>
   3          #include <stdio.h>
   4          #include <math.h>
   5          #include <stdlib.h>
   6          #include <stdio.h>
   7          
   8          #define uchar unsigned char 
   9          #define uint unsigned int 
  10          
  11          sbit DIN = P1^3;                                        // 串行数据输入
  12          sbit CLK = P1^1;                                        // 串行时钟
  13          sbit LOAD = P1^2;                                       // 显示数据锁存控制
  14          
  15          sbit DE_RE =P3^5;
  16          
  17          #define Digit0 0x01                     // 数码管1寄存器
  18          #define Digit1 0x02                     // 数码管2寄存器
  19          #define Digit2 0x03                     // 数码管3寄存器
  20          #define Digit3 0x04                     // 数码管4寄存器
  21          #define DecodeMode 0x09                 // 译码模式寄存器
  22          #define Intensity 0x0a                          // 亮度寄存器
  23          #define ScanLimit 0x0b                  // 扫描位数寄存器
  24          #define ShutDown 0x0c                   // 低功耗模式寄存器
  25          #define DisplayTest 0x0f                // 显示测试寄存器
  26          
  27          #define ShutdownMode 0x00               // 低功耗方式
  28          #define NormalOperation 0x01            // 正常操作方式
  29          
  30          #define ScanDigit 0x03                  // 扫描位数设置,显示8位数码管
  31          #define DecodeDigit 0xff                // 译码设置,8位均为BCD码
  32          #define IntensityGrade 0x0a             // 亮度级别设置
  33          #define TestMode 0x01                   // 显示测试模式
  34          #define TextEnd 0x00                    // 显示测试结束,恢复正常工作模式
  35          void putbyte(char c);   //发送一个字节
  36          //char rand();
  37          uchar instruction_buf[9] = {0xff,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0f } ; // 就收缓存区
  38          uchar dis_buf[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } ;//显示缓存区
  39          uchar device_id;
  40          /* 延时t毫秒 */
  41          void delay(uint t)
  42          {
  43   1              uint i;
  44   1              while(t--)
  45   1              {
  46   2                      /* 对于12M时钟,约延时1ms */
  47   2                      for (i=0;i<125;i++)
  48   2                      {}
  49   2              }
  50   1      }
  51          
  52          /* 向MAX7219写入字节(8位)*/
  53          void SendChar (uchar ch)
  54          {
  55   1              uchar i,temp;
C51 COMPILER V7.06   TEXT8                                                                 03/13/2009 09:14:32 PAGE 2   

  56   1          _nop_();
  57   1          for (i=0;i<8;i++)
  58   1          {
  59   2                      temp=ch&0x80;
  60   2              ch=ch<<1;
  61   2              if(temp)
  62   2              {
  63   3                      DIN=1;
  64   3                      CLK=0;
  65   3                      CLK=1;
  66   3              }
  67   2              else
  68   2              {
  69   3                      DIN=0;
  70   3                      CLK=0;
  71   3                      CLK=1;
  72   3              }
  73   2          }
  74   1      }
  75          
  76          /* 向MAX7219写入字(16位)*/
  77          void WriteWord (uchar addr,uchar num)
  78          {
  79   1          LOAD=0;
  80   1          _nop_();
  81   1          SendChar(addr);
  82   1          _nop_();
  83   1          SendChar(num);
  84   1          _nop_();
  85   1          LOAD=1;                             // 锁存进相应寄存器
  86   1      }
  87          
  88          /* MAX7219初始化 */
  89          void InitDisplay (void)
  90          {
  91   1          WriteWord (ScanLimit,ScanDigit);         // 设置扫描界限
  92   1          WriteWord (DecodeMode,DecodeDigit);      // 设置译码模式
  93   1          WriteWord (Intensity,IntensityGrade);    // 设置亮度
  94   1          WriteWord (ShutDown,NormalOperation);    // 设置为正常工作模式
  95   1              TMOD |= 0x20;
  96   1              TL1 = 0xfd;     TH1 = 0xfd;
  97   1              //SCON = 0x7a;
  98   1          SCON = 0x50;
  99   1              TR1 = 1;
 100   1              //TI = 0;
 101   1              ES = 1;                                                                                                  
             -                                                                                                                        
             -   
 102   1              EA = 1;
 103   1              DE_RE=0;
 104   1              device_id = (P1&0xf0)>>4;
 105   1                  WriteWord (Digit0,0x0a);
 106   1                  WriteWord (Digit1,0x0a);
 107   1                  WriteWord (Digit2,0x0a);
 108   1                  WriteWord (Digit3,0x0a);
 109   1        // instruction_buf[9] = {0xff,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0f } ;
 110   1      }
 111          
 112          
 113          /* 主函数 */
 114          void main(void)
 115          {    uint i,delay_time;
C51 COMPILER V7.06   TEXT8                                                                 03/13/2009 09:14:32 PAGE 3   

 116   1           uchar j;
 117   1               uchar th,hun,ten,one;
 118   1               uint rand_mize,data_1,data_2;
 119   1               uchar th_1,hun_1,ten_1,one_1,tttt,ttt,tt,t;
 120   1               
 121   1              InitDisplay ();                                                 // MAX7219初始化 
 122   1         // serial_init();
 123   1              
 124   1              while(1)
 125   1              {//if(instruction_buf[0]==0x00 && instruction_buf[1]==0x00 && instruction_buf[2]==0x00}
 126   2                 // {InitDisplay ();continue;}
 127   2                if(instruction_buf[8]==0xff)
 128   2                  {   instruction_buf[8] = 0x0f;
 129   3                   if(instruction_buf[0]==device_id)          //接收到新指令                                                           
 130   3                           { //for(i=0;i<7;i++) putbyte(instruction_buf[i]);
 131   4                                  //delay(10);
 132   4                      dis_buf[0]= instruction_buf[0];
 133   4                                      dis_buf[1]= instruction_buf[1];
 134   4                                      dis_buf[2]= instruction_buf[2];
 135   4                                      dis_buf[3]= instruction_buf[3];
 136   4                      dis_buf[4]= instruction_buf[4];
 137   4                      dis_buf[5]= instruction_buf[5];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -