📄 led.lst
字号:
C51 COMPILER V7.06 LED 09/14/2012 23:36:51 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN .\obj\led.obj
COMPILER INVOKED BY: D:\Program Files (x86)\keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lis\led.lst) OB
-JECT(.\obj\led.obj)
stmt level source
1 //
2 // 名称:
3 // 编写:niechao
4 // 日期:2012.08
5 // 修改:无
6 // 内容:数码管显示程序
7
8 #include<reg52.h>
9 #include"timer0_1ms.h"
10 #include"key.h"
11
12 //------------------------------------------------
13 // led显示基础函数
14 //------------------------------------------------
15
16 #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
17
18 sbit LATCH1=P2^2;//定义锁存使能端口 段锁存
19 sbit LATCH2=P2^3;// 位锁存
20
21 unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
22
23 unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //分别对应相应的数码管点亮,即位码
24
25 unsigned char TempData[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //存储显示值的全局变量
26
27 void led_show(void)
28 {
29 1 static unsigned char num=0;
30 1
31 1 if(KeyScan()==30) //如果加按键按下
32 1 {
33 2 if( a>0 ) //如果达到短按键标准
34 2 //则进入短按键动作
35 2 {
36 3 if( b>0 )
37 3
38 3 {
39 4 // 防止累加造成错误识别
40 4 if(num<99) //加操作
41 4
42 4 {
43 5 num++; //通过增加个数调节长按循环增加速度
44 5
45 5 //分解显示信息,如要显示68,则68/10=6 68%10=8
46 5
47 5 TempData[6] = DuanMa[num/10];
48 5 TempData[7] = DuanMa[num%10];
49 5
50 5 }
51 4
52 4 }
53 3
54 3
C51 COMPILER V7.06 LED 09/14/2012 23:36:51 PAGE 2
55 3 if(num<99)
56 3
57 3 {
58 4
59 4 num++;
60 4 TempData[6] = DuanMa[num/10];
61 4 TempData[7] = DuanMa[num%10];
62 4 }
63 3
64 3 }
65 2
66 2
67 2 }
68 1
69 1
70 1
71 1 if(KeyScan()==40) //如果加按键按下
72 1
73 1 {
74 2 if( a>0 ) //如果达到短按键标准
75 2 //则进入短按键动作
76 2 {
77 3 if( b>0 )
78 3
79 3 {
80 4
81 4 num--;
82 4
83 4 //分解显示信息,如要显示68,则68/10=6 68%10=8
84 4
85 4 TempData[6] = DuanMa[num/10];
86 4 TempData[7] = DuanMa[num%10];
87 4
88 4
89 4
90 4 if(T1 == 2);//用于调节长按循环操作的速度,
91 4 //可以自行调整此值以便达到最佳效果
92 4
93 4 {
94 5 if(num>0) //加操作
95 5
96 5 num--;
97 5
98 5 }
99 4 }
100 3 }
101 2
102 2
103 2 //防止累加造成错误识别
104 2 if(num>0) //加操作
105 2
106 2 {
107 3
108 3 num--;
109 3 }
110 2
111 2 }
112 1
113 1 //分解显示信息,如要显示68,则68/10=6 68%10=8
114 1 TempData[6]=DuanMa[num/10];
115 1 TempData[7]=DuanMa[num%10];
116 1 //Display(0,8); //显示全部8位
C51 COMPILER V7.06 LED 09/14/2012 23:36:51 PAGE 3
117 1 //主循环中添加其他需要一直工作的程序
118 1
119 1 }
120
121
122
123 /*------------------------------------------------
124 显示函数,用于动态扫描数码管
125 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
126 如输入0表示从第一个显示。
127 Num表示需要显示的位数,如需要显示99两位数值则该值输入2
128 ------------------------------------------------*/
129 void Display(unsigned char FirstBit,unsigned char Num)
130 {
131 1 static unsigned char i=0;
132 1
133 1
134 1 DataPort=0; //清空数据,防止有交替重影
135 1 LATCH1=1; //段锁存
136 1 LATCH1=0;
137 1
138 1 DataPort=WeiMa[i+FirstBit]; //取位码
139 1 LATCH2=1; //位锁存
140 1 LATCH2=0;
141 1
142 1 DataPort=TempData[i]; //取显示数据,段码
143 1 LATCH1=1; //段锁存
144 1 LATCH1=0;
145 1
146 1 i++;
147 1 if(i==Num)
148 1 i=0;
149 1
150 1
151 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 217 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
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 + -