📄 disp.lst
字号:
C51 COMPILER V7.20 DISP 07/09/2008 11:03:12 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN Disp.OBJ
COMPILER INVOKED BY: D:\keilc51\keil\C51\BIN\C51.EXE Disp.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 Disp.c
3 数码管扫描显示驱动程序
4 */
5
6
7 #include "reg51.h"
8 #include "absacc.h"
9 #include <Disp.h>
10
11
12 //定义显示缓冲区(由定时中断程序自动扫描)
13 unsigned char DispBuf[8];
14
15
16 /*
17 函数:T1INTSVC()
18 功能:定时器T1的中断服务函数
19 */
20 void T1INTSVC() interrupt 3
21 {
22 1 code unsigned char com[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
23 1 static unsigned char n = 0;
24 1 TR1 = 0;
25 1 TH1 = 0xFC;
26 1 TL1 = 0x66;
27 1 TR1 = 1;
28 1 P1 = 0xFF; //暂停显示
29 1 XBYTE[0xE800] = ~DispBuf[n]; //更新扫描数据
30 1 P1 = ~com[n]; //重新显示
31 1 n++;
32 1 n &= 0x07;
33 1 }
34
35
36 /*
37 函数:DispClear()
38 功能:清除数码管的所有显示
39 */
40 void DispClear()
41 {
42 1 unsigned char i;
43 1 for ( i=0; i<8; i++ )
44 1 {
45 2 DispBuf[i] = 0x00;
46 2 }
47 1 }
48
49
50 /*
51 函数:DispChar()
52 功能:在数码管上显示字符
53 参数:
54 x:数码管的坐标位置(0~7)
55 c:要显示的字符(仅限十进制数字和减号)
C51 COMPILER V7.20 DISP 07/09/2008 11:03:12 PAGE 2
56 */
57 void DispChar(unsigned char x, unsigned char c)
58 {
59 1 //0123456789的数码管字型数据
60 1 code unsigned char Tab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
61 1 x &= 0x07;
62 1 x = 7 - x;
63 1 if ( c == '-' )
64 1 {
65 2 DispBuf[x] = 0x40;
66 2 }
67 1 else if ( ( c >= '0' ) && ( c <= '9' ) )
68 1 {
69 2 DispBuf[x] = Tab[c-'0'];
70 2 }
71 1 }
72
73
74 /*
75 函数:DispStr()
76 功能:在数码管上显示字符串
77 参数:
78 x:数码管的坐标位置(0~7)
79 *s:要显示的字符串(字符仅限十进制数字和减号)
80 */
81 void DispStr(unsigned char x, unsigned char *s)
82 {
83 1 unsigned char c;
84 1 for (;;)
85 1 {
86 2 c = *s;
87 2 if ( c == '\0' ) break;
88 2 s++;
89 2 DispChar(x,c);
90 2 x++;
91 2 }
92 1 }
93
94
95 /*
96 函数:DispDotOn()
97 功能:显示指定位的小数点
98 参数:x为数码管坐标
99 */
100 void DispDotOn(unsigned char x)
101 {
102 1 DispBuf[7-x] |= 0x80;
103 1 }
104
105
106 /*
107 函数:DispInit()
108 功能:数码管扫描显示初始化
109 */
110 void DispInit()
111 {
112 1 DispClear();
113 1 EA = 0;
114 1 TMOD &= 0x0F;
115 1 TMOD |= 0x10;
116 1 TH1 = 0xFC;
117 1 TL1 = 0x66;
C51 COMPILER V7.20 DISP 07/09/2008 11:03:12 PAGE 3
118 1 TR1 = 1;
119 1 ET1 = 1;
120 1 EA = 1;
121 1 }
122
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 177 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -