📄 test51.lst
字号:
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 + -