?? 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 + -