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