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

📄 test51.lst

📁 弹片机与18b20通讯,显示温度,2位数码管与P0口相连.用扫描方式显示.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.00  TEST51                                                                 05/08/2005 14:40:38 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE TEST51
OBJECT MODULE PLACED IN test51.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE test51.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <test51.h>
   2          /**********************************************************************
   3          函数功能:       定时器中断函数(扫描键盘)(10ms 16位定时)
   4          入口参数:       无
   5          出口参数:       无
   6          ***********************************************************************/
   7          void Time0_Func() interrupt 1
   8          {
   9   1              TH0=(0xffff-9259)/256;
  10   1              TL0=(0xffff-9259)%256;
  11   1              if (g_wTime)
  12   1              {
  13   2                      g_wTime--;
  14   2              }
  15   1              Disp_Func();
  16   1      }
  17          /**********************************************************************
  18          函数功能:       显示刷新函数
  19          入口参数:       无
  20          出口参数:       无
  21          ***********************************************************************/
  22          void Disp_Func(void)
  23          {
  24   1              P0=0xff;        /*清除显示*/
  25   1              P0=g_bpDisp[g_bCurrent_Local];/*显示段码*/
  26   1              if (g_bCurrent_Local)/*刷新DS2*/
  27   1              {
  28   2                      Setb_Func(DS1_CS);
  29   2                      Clr_Func(DS2_CS);
  30   2                      g_bCurrent_Local=0;
  31   2              }
  32   1              else/*刷新DS1*/
  33   1              {
  34   2                      Setb_Func(DS2_CS);
  35   2                      Clr_Func(DS1_CS);
  36   2                      g_bCurrent_Local=1;
  37   2              }
  38   1              P2=g_bP2_Io;/*更新P2口状态*/
  39   1      }
  40          /**********************************************************************
  41          函数功能:       清相应IO口函数(仅限中断服务函数使用)
  42          入口参数:       bPort:相应IO口
  43          出口参数:       无
  44          ***********************************************************************/
  45          void Clr_Func(byte bPort)
  46          {
  47   1              bit btEa_Bak;
  48   1      
  49   1              btEa_Bak=EA;
  50   1              EA=0;
  51   1              bPort =~ bPort;
  52   1              g_bP2_Io &= bPort;
  53   1              EA=btEa_Bak;
  54   1      }
  55          /**********************************************************************
C51 COMPILER V7.00  TEST51                                                                 05/08/2005 14:40:38 PAGE 2   

  56          函数功能:       置相应IO口函数(仅限中断服务函数使用)
  57          入口参数:       bPort:相应IO口
  58          出口参数:       无
  59          ***********************************************************************/
  60          void Setb_Func(byte bPort)
  61          {
  62   1              bit btEa_Bak;
  63   1      
  64   1              btEa_Bak=EA;
  65   1              EA=0;
  66   1              g_bP2_Io |= bPort;
  67   1              EA=btEa_Bak;
  68   1      }
  69          /**********************************************************************
  70          函数功能:       转换显示数据函数
  71          入口参数:       bDisp_Data      显示数据0~99
  72                                  bDisp_Break     闪烁位数0~2
  73          出口参数:       无
  74          ***********************************************************************/
  75          void Hex_To_Disp(byte bDisp_Data)
  76          {
  77   1              byte bI,bJ,bpDisp[2];
  78   1      
  79   1              if (bDisp_Data<100)
  80   1              {
  81   2                      bI=Bin_Bcd_Func((dword)bDisp_Data,bpDisp);/*二进制转十进制*/
  82   2                      for (bJ=0; bJ<bI; bJ++)/*查找显示段码*/
  83   2                      {
  84   3                              bpDisp[bJ]=g_bpDisp_Seg[bpDisp[bJ]];
  85   3                      }
  86   2                      if (bI==1)
  87   2                      {       /*如果转换十进制结果为一位,则将此位移到个位*/
  88   3                              Right_Move(bpDisp,1,1,g_bpDisp_Seg[0]);
  89   3                      }
  90   2                      while (g_bCurrent_Local);/*等待上次数据显示完*/
  91   2                      ET0=0;
  92   2                      Init_Array_Func(2,g_bpDisp,0xff);
  93   2                      for ( bJ=0; bJ<2; bJ++)/*更新显示数据*/
  94   2                              g_bpDisp[bJ]=bpDisp[bJ];
  95   2                      ET0=1;
  96   2              }
  97   1      }
  98          /**********************************************************************
  99          函数功能:       上电初始化函数
 100          入口参数:       无
 101          出口参数:       无
 102          ***********************************************************************/
 103          void Power_Up(void)
 104          {
 105   1              TMOD = 0x01;                    /*Time0为16位定时器*/
 106   1              TH0=(0xffff-9259)/256;
 107   1              TL0=(0xffff-9259)%256;
 108   1              IE=0x82;                                /*开启定时器0中断*/
 109   1              TR0=1;                                  /*运行定时器0*/
 110   1              g_bP2_Io=0xff;                  /*将P2的IO口状态数据复位*/
 111   1      }
 112          /**********************************************************************
 113          函数功能:       主函数
 114          入口参数:       无
 115          出口参数:       无
 116          ***********************************************************************/
 117          void main()
C51 COMPILER V7.00  TEST51                                                                 05/08/2005 14:40:38 PAGE 3   

 118          {
 119   1              byte bTemp_L;/*DS18B20低8位数据*/
 120   1              byte bTemp_H;/*DS18B20高8位数据*/
 121   1      
 122   1              Power_Up();
 123   1              while (1)
 124   1              {
 125   2                      EA=0;
 126   2                      RW_TEMP();
 127   2                      EA=1;
 128   2                      bTemp_H=TEMPER_H;
 129   2                      bTemp_L=TEMPER_L;
 130   2                      bTemp_L &= 0xf0;
 131   2                      bTemp_H &= 0x07;
 132   2                      bTemp_L >>=4;
 133   2                      bTemp_H <<=4;
 134   2                      bTemp_L |= bTemp_H;
 135   2                      Hex_To_Disp(bTemp_L);/*显示温度*/
 136   2                      g_wTime=50;/*500毫秒延时*/
 137   2                      while (g_wTime);
 138   2              }
 139   1      }
 140          
C51 COMPILER V7.00  TEST51                                                                 05/08/2005 14:40:38 PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION Time0_Func (BEGIN)
0000 C0E0              PUSH    ACC
0002 C0F0              PUSH    B
0004 C083              PUSH    DPH
0006 C082              PUSH    DPL
0008 C0D0              PUSH    PSW
000A 75D000            MOV     PSW,#00H
000D C000              PUSH    AR0
000F C001              PUSH    AR1
0011 C002              PUSH    AR2
0013 C003              PUSH    AR3
0015 C004              PUSH    AR4
0017 C005              PUSH    AR5
0019 C006              PUSH    AR6
001B C007              PUSH    AR7
                                           ; SOURCE LINE # 7
                                           ; SOURCE LINE # 9
001D 758CDB            MOV     TH0,#0DBH
                                           ; SOURCE LINE # 10
0020 758AD4            MOV     TL0,#0D4H
                                           ; SOURCE LINE # 11
0023 E500        R     MOV     A,g_wTime+01H
0025 4500        R     ORL     A,g_wTime
0027 6008              JZ      ?C0001
                                           ; SOURCE LINE # 12
                                           ; SOURCE LINE # 13
0029 E500        R     MOV     A,g_wTime+01H
002B 1500        R     DEC     g_wTime+01H
002D 7002              JNZ     ?C0025
002F 1500        R     DEC     g_wTime
0031         ?C0025:
                                           ; SOURCE LINE # 14
0031         ?C0001:
                                           ; SOURCE LINE # 15
0031 120000      R     LCALL   Disp_Func
                                           ; SOURCE LINE # 16
0034 D007              POP     AR7
0036 D006              POP     AR6
0038 D005              POP     AR5
003A D004              POP     AR4
003C D003              POP     AR3
003E D002              POP     AR2
0040 D001              POP     AR1
0042 D000              POP     AR0
0044 D0D0              POP     PSW
0046 D082              POP     DPL
0048 D083              POP     DPH
004A D0F0              POP     B
004C D0E0              POP     ACC
004E 32                RETI    
             ; FUNCTION Time0_Func (END)

             ; FUNCTION Disp_Func (BEGIN)
                                           ; SOURCE LINE # 22
                                           ; SOURCE LINE # 23
                                           ; SOURCE LINE # 24
0000 7580FF            MOV     P0,#0FFH
                                           ; SOURCE LINE # 25
0003 7400        R     MOV     A,#LOW g_bpDisp
C51 COMPILER V7.00  TEST51                                                                 05/08/2005 14:40:38 PAGE 5   

0005 2500        R     ADD     A,g_bCurrent_Local
0007 F8                MOV     R0,A
0008 E6                MOV     A,@R0
0009 F580              MOV     P0,A
                                           ; SOURCE LINE # 26
000B E500        R     MOV     A,g_bCurrent_Local
000D 600F              JZ      ?C0003
                                           ; SOURCE LINE # 27
                                           ; SOURCE LINE # 28
000F 7F80              MOV     R7,#080H
0011 120000      R     LCALL   _Setb_Func
                                           ; SOURCE LINE # 29
0014 7F40              MOV     R7,#040H
0016 120000      R     LCALL   _Clr_Func
                                           ; SOURCE LINE # 30
0019 E4                CLR     A
001A F500        R     MOV     g_bCurrent_Local,A
                                           ; SOURCE LINE # 31
001C 800D              SJMP    ?C0004
001E         ?C0003:
                                           ; SOURCE LINE # 33
                                           ; SOURCE LINE # 34
001E 7F40              MOV     R7,#040H
0020 120000      R     LCALL   _Setb_Func
                                           ; SOURCE LINE # 35
0023 7F80              MOV     R7,#080H
0025 120000      R     LCALL   _Clr_Func
                                           ; SOURCE LINE # 36
0028 750001      R     MOV     g_bCurrent_Local,#01H
                                           ; SOURCE LINE # 37
002B         ?C0004:
                                           ; SOURCE LINE # 38
002B 8500A0      R     MOV     P2,g_bP2_Io
                                           ; SOURCE LINE # 39
002E 22                RET     
             ; FUNCTION Disp_Func (END)

             ; FUNCTION _Clr_Func (BEGIN)
                                           ; SOURCE LINE # 45
;---- Variable 'bPort' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 46
                                           ; SOURCE LINE # 49
0000 A2AF              MOV     C,EA
0002 9200        R     MOV     btEa_Bak,C
                                           ; SOURCE LINE # 50
0004 C2AF              CLR     EA
                                           ; SOURCE LINE # 51
0006 6307FF            XRL     AR7,#0FFH
                                           ; SOURCE LINE # 52
0009 EF                MOV     A,R7
000A 5200        R     ANL     g_bP2_Io,A
                                           ; SOURCE LINE # 53
000C A200        R     MOV     C,btEa_Bak
000E 92AF              MOV     EA,C
                                           ; SOURCE LINE # 54
0010 22                RET     
             ; FUNCTION _Clr_Func (END)

             ; FUNCTION _Setb_Func (BEGIN)
                                           ; SOURCE LINE # 60
;---- Variable 'bPort' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 61
C51 COMPILER V7.00  TEST51                                                                 05/08/2005 14:40:38 PAGE 6   

                                           ; SOURCE LINE # 64
0000 A2AF              MOV     C,EA
0002 9200        R     MOV     btEa_Bak,C
                                           ; SOURCE LINE # 65
0004 C2AF              CLR     EA
                                           ; SOURCE LINE # 66
0006 EF                MOV     A,R7
0007 4200        R     ORL     g_bP2_Io,A
                                           ; SOURCE LINE # 67
0009 A200        R     MOV     C,btEa_Bak
000B 92AF              MOV     EA,C
                                           ; SOURCE LINE # 68
000D 22                RET     
             ; FUNCTION _Setb_Func (END)

⌨️ 快捷键说明

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