📄 display.lst
字号:
C51 COMPILER V7.06 DISPLAY 12/06/2007 09:43:12 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN display.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE display.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*****************************************************
2 激情创造,精彩无限-------欢迎进入单片机的世界
3 *****************************************************/
4 /*****************************************************
5 程序说明:本程序是总线上扩展I/O口,完成动态扫描显示程序
6 硬件连接:总线连接方式,四联共阳数码管段码端573地址为
7 0xd000,位选端573地址为0xc000。
8 程序版本:
9 作者:ZJ
10 编写时间:2007年12月5日
11 修改记录:
12 备注:
13 *****************************************************/
14
15 /*包含头文件*/
16 #include <reg52.h>
17 #include <absacc.h>
18
19 /*定义数码管段码和位选码*/
20 code unsigned char LedCode[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
21 code unsigned char Posit[] = {0x08,0x04,0x02,0x01};
22
23 unsigned char DisBuf[4]; //定义显存空间
24 unsigned char sts,loopnum = 4;
25
26 /**********************************************
27 函数名称:Delay()
28 函数功能:实现一短暂的延时,时间长短由入口参数决定
29 入口参数:unsigned char
30 出口参数:void
31 备注:
32 **********************************************/
33 void Delay (unsigned int Dat)
34 {
35 1 unsigned int i;
36 1 for(i=0;i<Dat;i++);
37 1 }
38
39 /**********************************************
40 函数名称:Disbufchange()
41 函数功能:实现移位显存的功能,将入口参数送入显存最后一位,其余的显存内容依次左移一位
42 入口参数:unsigned char
43 出口参数:void
44 备注:
45 **********************************************/
46 void Disbufchange (unsigned char Da)
47 {
48 1 DisBuf[0] = DisBuf[1];
49 1 DisBuf[1] = DisBuf[2];
50 1 DisBuf[2] = DisBuf[3];
51 1 DisBuf[3] = Da;
52 1 }
53
54 /*********************************************
55 函数名称:Display()
C51 COMPILER V7.06 DISPLAY 12/06/2007 09:43:12 PAGE 2
56 函数功能:显示显存中的四个数据
57 入口参数:void
58 出口参数:void
59 备注:
60 *********************************************/
61 void Display (void)
62 {
63 1 unsigned char n;
64 1 for (n=0;n<4;n++) //显示4个数据
65 1 {
66 2 XBYTE[0xd000] = LedCode[DisBuf[n]]; //将显存中的数据送入数码管段码端
67 2 XBYTE[0xc000] = Posit[n]; //将对应该显存的数码管点亮
68 2 Delay(200); //显示延时
69 2 XBYTE[0xc000] = 0x00; //消隐
70 2 }
71 1 }
72
73 /*********************************************
74 函数名称:main()
75 函数功能:
76 入口参数:void
77 出口参数:void
78 备注:
79 *********************************************/
80 void main (void)
81 {
82 1 unsigned char i;
83 1 TMOD = (TMOD & 0xf0) | 0x10; //设置定时/计数器T1工作于方式1
84 1 TL1 = (-50000); //设定定时/计数器初值
85 1 TH1 = (-50000) >> 8; //定时50ms
86 1 TR1 = 1; //启动定时器
87 1 ET1 = 1; //开启定时器T1中断
88 1 EA = 1; //开启总的中断
89 1 for (i=1;i<5;i++) //预置数1234入显存
90 1 {
91 2 Disbufchange(i);
92 2 }
93 1 while(1)
94 1 {
95 2 Display(); //循环显示
96 2 }
97 1 }
98
99 /*********************************************
100 函数名称:定时/计数器T1中断服务程序
101 函数功能:实现每一秒移位一次
102 入口参数:void
103 出口参数:void
104 备注:
105 *********************************************/
106 void T1_int (void) interrupt 3
107 {
108 1 TL1 = (-50000); //重新赋初值
109 1 TH1 = (-50000) >> 8;
110 1 if (++sts >= 20) //判断一秒时间是否到达
111 1 {
112 2 if (++loopnum >= 10) //判断移位数据是否超过10
113 2 loopnum = 0;
114 2 Disbufchange(loopnum); //移位显存空间里的内容
115 2 sts = 0;
116 2 }
117 1 }
C51 COMPILER V7.06 DISPLAY 12/06/2007 09:43:12 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 154 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
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 + -