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

📄 display.lst

📁 本程序是用51单片机设计的一个时钟程序,对于想了解单片机的C语言和汇编语言的开发人员是一个不错的例程.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   DISPLAY                                                               08/03/2005 11:35:48 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN display.OBJ
COMPILER INVOKED BY: K:\Keil\C51\BIN\C51.EXE display.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS

stmt level    source

   1          /*
   2          *********************************************************************************
   3          *      此模块为显示程序,刷新速率为50Hz,每刷新一次为20ms,每个字段显示5ms      *
   4          *********************************************************************************
   5          */
   6          #include <reg668.h>
   7          #include <constant.h>
   8          
   9          sbit    Disp0   =       P1^0;                   //数位(1)选通位
  10          sbit    Disp1   =       P1^1;                   //数位(2)选通位
  11          sbit    Disp2   =       P1^2;                   //数位(3)选通位
  12          sbit    Disp3   =       P1^3;                   //数位(4)选通位
  13          sbit    Disp4   =       P1^4;                   //数位(5)选通位
  14          sbit    Disp5   =       P1^5;                   //数位(6)选通位
  15          sbit    Disp6   =       P1^6;                   //数位(7)选通位
  16          sbit    Disp7   =       P1^7;                   //数位(8)选通位
  17          
  18          sbit    Speaker =       P3^5;                   //扬声器控制脚
  19          
  20          sbit    Dot     =       P0^7;                   //小数点显示位
  21          
  22          extern bit Dot_Value;
  23          extern unsigned char formflag;
  24          extern unsigned char CountTime2;
  25          extern unsigned char Disp_array[Eight];
  26          unsigned char code Seven_seg[26][2]={
  27                  {0x00,0x0C0},                           //字形0
  28                  {0x01,0x0F9},                           //字形1
  29                  {0x02,0x0A4},                           //字形2
  30                  {0x03,0x0B0},                           //字形3
  31                  {0x04,0x99},                            //字形4
  32                  {0x05,0x92},                            //字形5
  33                  {0x06,0x82},                            //字形6
  34                  {0x07,0x0F8},                           //字形7
  35                  {0x08,0x80},                            //字形8
  36                  {0x09,0x90},                            //字形9
  37                  {0x0A,0x88},                            //字形A
  38                  {0x0b,0x83},                            //字形b
  39                  {0x0C,0x0C6},                           //字形C
  40                  {0x0d,0x0A1},                           //字形d
  41                  {0x0E,0x86},                            //字形E
  42                  {0x0F,0x8E},                            //字形F
  43                  {0x10,0x0FF},                           //无显示
  44                  {0x11,0x0F8},                           //字形T
  45                  {0x12,0x0FE},
  46                  {0x13,0x0C9},                           //字形||
  47                  {0x14,0x0C8},                           //字形n
  48                  {0x15,0x86},                            //字形E
  49                  {0x16,0x0CE},                           //字形r
  50                  {0x17,0x92},                            //字形S
  51                  {0x18,0x89},                            //字形H
  52                  {0x19,0x0C7}                            //字形L
  53          };
  54          
  55          /*
C51 COMPILER V7.07   DISPLAY                                                               08/03/2005 11:35:48 PAGE 2   

  56          共阳极数码管,低电平有效。
  57          **********************************************************************************
  58          *                           (1)       (2)       (3)       (4)                    *
  59          *                  P0.0----$$$$$$    $$$$$$    $$$$$$    $$$$$$-----a            *
  60          *                  P0.1----$    $    $    $    $    $    $    $-----b            *
  61          *                  P0.2----$    $    $    $    $    $    $    $-----c            *
  62          *                  P0.3----$____$    $____$    $____$    $____$-----d            *
  63          *                  P0.4----$    $    $    $    $    $    $    $-----e            *
  64          *                  P0.5----$    $    $    $    $    $    $    $-----f            *
  65          *                  P0.6----$    $    $    $    $    $    $    $-----g            *
  66          *                  P0.7----$$$$$$    $&&&&& *  $$$$$$    $$$$$$-----dp           *
  67          *                             |         |         |         |                    *
  68          *                           P1.0      P1.1      P1.2      P1.3                   *
  69          **********************************************************************************
  70          Disp_array[0]第一位字段值;
  71          Disp_array[1]第二位字段值;
  72          Disp_array[2]第三位字段值;
  73          Disp_array[3]第四位字段值;
  74          P0.7 ------- 对应Dot(小数点);
  75          */
  76          void Display (void) interrupt 1 using 1         //使用Time2产生5ms中断
  77          {
  78   1              unsigned char i;
  79   1              register unsigned char Seg_data;
  80   1              
  81   1              TH0 = 0x0E2;                            //刷新定时常数;
  82   1              TL0 = 0x00;
  83   1              TF0 = 0;
  84   1              i = Disp_array[CountTime2];
  85   1              Seg_data = Seven_seg[i][1];
  86   1              switch (CountTime2)
  87   1              {
  88   2                      case    0:                      //显示第一位
  89   2                              Disp7 = 0;
  90   2                              P0 = ~Seg_data;
  91   2                              Disp0 = 1;
  92   2                              //Disp1 = 0;
  93   2                              //Disp2 = 0;
  94   2                              //Disp3 = 0;
  95   2                              break;
  96   2                      case    1:                      //显示第二位
  97   2                              Disp0 = 0;
  98   2                              P0 = ~Seg_data;
  99   2                              //Dot = Dot_Value;      //显示小数点
 100   2                              Disp1 = 1;
 101   2                              //Disp2 = 0;
 102   2                              //Disp3 = 0;
 103   2                              break;
 104   2                      case    2:                      //显示第三位
 105   2                              //Disp0 = 0;
 106   2                              Disp1 = 0;
 107   2                              P0 = ~Seg_data;
 108   2                              Disp2 = 1;
 109   2                              //Disp3 = 0;
 110   2                              break;
 111   2                      case    3:                      //显示第四位
 112   2                              //Disp0 = 0;
 113   2                              //Disp1 = 0;
 114   2                              Disp2 = 0;
 115   2                              P0 = ~Seg_data;
 116   2                              Disp3 = 1;
 117   2                              //CountTime2 = 0x00;
C51 COMPILER V7.07   DISPLAY                                                               08/03/2005 11:35:48 PAGE 3   

 118   2                              break;
 119   2                      case    4:
 120   2                              //Speaker = ~Speaker;
 121   2                              Disp3 = 0;
 122   2                              P0 = ~Seg_data;
 123   2                              Disp4 = 1;
 124   2                              break;
 125   2                      case    5:
 126   2                              Disp4 = 0;
 127   2                              P0 = ~Seg_data;
 128   2                              if (formflag==0)
 129   2                              {
 130   3                                      Dot = Dot_Value;//显示小数点
 131   3                              }
 132   2                              Disp5 = 1;
 133   2                              //P0=0x0ff;
 134   2                              //while (TRUE);
 135   2                              break;
 136   2                      case    6:
 137   2                              Disp5 = 0;
 138   2                              P0 = ~Seg_data;
 139   2                              Disp6 = 1;
 140   2                              break;
 141   2                      case    7:
 142   2                              Disp6 = 0;
 143   2                              P0 = ~Seg_data;
 144   2                              Disp7 = 1;
 145   2                              //CountTime2=0x00;
 146   2                              break;
 147   2              }
 148   1              CountTime2 = (CountTime2+1)%8;
 149   1      }
C51 COMPILER V7.07   DISPLAY                                                               08/03/2005 11:35:48 PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION Display (BEGIN)
0000 C0E0              PUSH    ACC
0002 C083              PUSH    DPH
0004 C082              PUSH    DPL
0006 C0D0              PUSH    PSW
0008 75D008            MOV     PSW,#08H
                                           ; SOURCE LINE # 76
                                           ; SOURCE LINE # 81
000B 758CE2            MOV     TH0,#0E2H
                                           ; SOURCE LINE # 82
000E 758A00            MOV     TL0,#00H
                                           ; SOURCE LINE # 83
0011 C28D              CLR     TF0
                                           ; SOURCE LINE # 84
0013 7400        E     MOV     A,#LOW Disp_array
0015 2500        E     ADD     A,CountTime2
0017 F8                MOV     R0,A
0018 E6                MOV     A,@R0
;---- Variable 'i' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 85
0019 25E0              ADD     A,ACC
001B 2400        R     ADD     A,#LOW Seven_seg+01H
001D F582              MOV     DPL,A
001F E4                CLR     A
0020 3400        R     ADDC    A,#HIGH Seven_seg+01H
0022 F583              MOV     DPH,A
0024 E4                CLR     A
0025 93                MOVC    A,@A+DPTR
0026 FF                MOV     R7,A

⌨️ 快捷键说明

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