📄 led7disp.lst
字号:
C51 COMPILER V7.20 LED7DISP 03/23/2007 23:06:24 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LED7DISP
OBJECT MODULE PLACED IN LED7DISP.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LED7DISP.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************************************************
2 MCU8051学习板演示程序
3
4 (c) Copyright 2007-2007,广州恒芯电子
5 All Rights Reserved
6 *****************************************************************************/
7
8 /*****************************************************************************
9 程序说明
10 名称: MCU8051学习板演示程序(数码管显示)
11 功能: 实现数码管显示,并实现数值递增
12 版本:2007-03-01
13 *****************************************************************************/
14
15 /*****************************************************************************
16 硬件说明
17 单片机: 兼容MCS-51单片机/STC89C51
18 晶振频率: 12MHz
19 *****************************************************************************/
20
21 #include "regx52.h"
22
23 /****************************************************************************
24 说明: 程序预定义
25 *****************************************************************************/
26 #define LED7A_STATUS P1_0/*数码管第一位控制引脚(0为有效,1为无效)*/
27 #define LED7B_STATUS P1_1/*数码管第二位控制引脚(0为有效,1为无效)*/
28 #define LED7C_STATUS P1_2/*数码管第三位控制引脚(0为有效,1为无效)*/
29 #define LED7D_STATUS P1_3/*数码管第四位控制引脚(0为有效,1为无效)*/
30
31 #define LED7_STATUS P0/*数码管状态引脚(0为有效,1为无效)*/
32
33 /****************************************************************************
34 说明: 变量定义
35 *****************************************************************************/
36 code unsigned char m_ucLedTab[]=
37 {
38 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,
39 0x88, 0x83, 0xC6, 0xa1 ,0x86 ,0x8e, 0xff
40 };/*数码管十六进制编码表*/
41
42 unsigned char m_ucLedBuf[4];/*七段数码管显示值缓存*/
43
44 /****************************************************************************
45 名称: Delay
46 说明: 程序延时
47 参数: 无
48 返回: 无
49 *****************************************************************************/
50 void Delay();
51
52 /****************************************************************************
53 名称: Led7Scan()
54 说明: 数码管动态扫描处理程序
55 参数: 无
C51 COMPILER V7.20 LED7DISP 03/23/2007 23:06:24 PAGE 2
56 返回: 无
57 *****************************************************************************/
58 void Led7Scan();
59
60 /*****************************************************************************
61 程序开始
62 *****************************************************************************/
63 void main()
64 {
65 1 unsigned int uiNumber=0;/*计数值置0*/
66 1
67 1 /*T0中断设定*/
68 1 TMOD=0x01;/*使用T0:GATE=0,C/T=0(定时),M1 M0=01(工作方式1)*/
69 1 TH0=0xec;/*定时时间5毫秒*/
70 1 TL0=0x78;
71 1 ET0=1;/*允许T0中断*/
72 1 TR0=1;/*使T0工作*/
73 1 EA=1;/*总中断开启*/
74 1
75 1 while(1)
76 1 {
77 2 if(uiNumber>9999)/*若数值大于9999,则置为0*/
78 2 {
79 3 uiNumber=0;
80 3 }
81 2
82 2 m_ucLedBuf[0]=uiNumber/1000;/*取出千位数*/
83 2 m_ucLedBuf[1]=(uiNumber%1000)/100;/*取出百位数*/
84 2 m_ucLedBuf[2]=(uiNumber%100)/10;/*取出十位数*/
85 2 m_ucLedBuf[3]=uiNumber%10;/*取出个位数*/
86 2
87 2 uiNumber++;/*数值加1*/
88 2
89 2 Delay();/*延时*/
90 2 }
91 1 }
92
93 /*****************************************************************************
94 名称: Interrupt1Handler
95 说明: T0中断入口
96 参数: 无
97 返回 :无
98 *****************************************************************************/
99 void Interrupt1Handler() interrupt 1
100 {
101 1 Led7Scan();/*数码管动态扫描处理程序*/
102 1 TH0=0xec;/*重新设置T0定时值*/
103 1 TL0=0x78;
104 1 }
105
106
107 /****************************************************************************
108 名称: Delay
109 说明: 程序延时
110 参数: 无
111 返回: 无
112 *****************************************************************************/
113 void Delay()
114 {
115 1 unsigned char a,b;
116 1
117 1 for(a=0;a<255;a++)
C51 COMPILER V7.20 LED7DISP 03/23/2007 23:06:24 PAGE 3
118 1 for(b=0;b<255;b++);
119 1 }
120
121 /****************************************************************************
122 名称: Led7Scan()
123 说明: 数码管动态扫描处理程序
124 参数: 无
125 返回: 无
126 *****************************************************************************/
127 void Led7Scan()
128 {
129 1 static unsigned char a=0;
130 1
131 1 switch(a)/*判断数码管动态扫描值*/
132 1 {
133 2 case 0:/*处理数码管第一位*/
134 2 LED7D_STATUS=1;/*设置数码管第四位为无效*/
135 2 LED7A_STATUS=0;/*设置数码管第一位位有效*/
136 2 break;
137 2
138 2 case 1:/*处理数码管第二位*/
139 2 LED7A_STATUS=1;/*设置数码管第一位为无效*/
140 2 LED7B_STATUS=0;/*设置数码管第二位位有效*/
141 2 break;
142 2
143 2 case 2:/*处理数码管第三位*/
144 2 LED7B_STATUS=1;/*设置数码管第二位为无效*/
145 2 LED7C_STATUS=0;/*设置数码管第三位位有效*/
146 2 break;
147 2
148 2 case 3:/*处理数码管第四位*/
149 2 LED7C_STATUS=1;/*设置数码管第三位为无效*/
150 2 LED7D_STATUS=0;/*设置数码管第四位位有效*/
151 2 break;
152 2 }
153 1
154 1 LED7_STATUS=m_ucLedTab[m_ucLedBuf[a]];/*将显示码送数码管状态引脚*/
155 1
156 1 a++;/*数码管动态扫描值加1,若该值4则置为0*/
157 1 if(a>3)
158 1 a=0;
159 1 }
160
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 267 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 2
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 + -