📄 led_drv.lst
字号:
C51 COMPILER V7.50 LED_DRV 05/11/2009 22:41:46 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LED_DRV
OBJECT MODULE PLACED IN LED_DRV.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LED_DRV.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "config.h"
2
3 Data_595_Str strData595; //定义一个595输出数据结构体
4
5 uint8 FLASH_Flag;
6 uint8 FLASH_Dis_Flag;
7 uint8 FLASH_Cnt;
8
9 uint8 SegDisTab[CHARLEN] =
10 {
11 SegA|SegB|SegC|SegD|SegE|SegF, //0
12 SegB|SegC, //1
13 SegA|SegB|SegG|SegE|SegD, //2
14 SegA|SegB|SegC|SegD|SegG, //3
15 SegB|SegC|SegF|SegG, //4
16 SegA|SegF|SegG|SegC|SegD, //5
17 SegA|SegF|SegG|SegC|SegD|SegE, //6
18 SegA|SegB|SegC, //7
19 SegA|SegB|SegC|SegD|SegE|SegF|SegG, //8
20 SegA|SegB|SegC|SegD|SegF|SegG, //9
21
22 SegA|SegB|SegC|SegE|SegF|SegG, //A
23 SegC|SegD|SegE|SegF|SegG, //b
24 SegA|SegD|SegE|SegF, //c
25 SegB|SegC|SegD|SegE|SegG, //d
26 SegA|SegD|SegE|SegF|SegG, //E
27 SegA|SegE|SegF|SegG, //F
28 SegB|SegC|SegE|SegF|SegG, //H
29 SegD|SegE|SegF, //L
30 SegA|SegB|SegE|SegF|SegG, //P
31 SegC|SegE|SegG, //n
32 SegG, //-
33 SegC|SegD|SegE, //v
34 0 //灭
35 };
36
37
38
39 void DisplayInit(void)
40 {
41 1 uint8 i;
42 1 for(i=0; i<6; i++)
43 1 {
44 2 strData595.u8DisCode[i] = SegDisTab[Char_0];
45 2 strData595.u8DisNum[i] = Char_0;
46 2 }
47 1 strData595.u8DisChangeFlag = REFRESH_OFF;
48 1 DisRefresh();
49 1 }
50
51 void ModifyLed(uint8 Pos,uint8 ModifyData,uint8 DotFlag,uint8 FlashFlag)
52 {
53 1 uint8 temp;
54 1
55 1 if( DotFlag ) //显示数据到显示码的转换
C51 COMPILER V7.50 LED_DRV 05/11/2009 22:41:46 PAGE 2
56 1 {
57 2 temp = (SegDisTab[ModifyData] | DotFlag);
58 2 }
59 1 else
60 1 {
61 2 temp = SegDisTab[ModifyData];
62 2 }
63 1
64 1 if( strData595.u8DisCode[Pos] != temp ) //是否发生变化的判断和处理
65 1 {
66 2 strData595.u8DisCode[Pos] = temp;
67 2 strData595.u8DisChangeFlag = REFRESH_ON;
68 2 }
69 1 if( FlashFlag != 0 )
70 1 {
71 2 FLASH_Dis_Flag |= (1<<Pos);
72 2 }
73 1 else
74 1 {
75 2 FLASH_Dis_Flag &= ~(1<<Pos);
76 2 }
77 1
78 1 }
79
80 /* 送显 */
81 void DisRefresh(void)
82 {
83 1 uint8 i;
84 1 for(i = 0; i < 6; i++)
85 1 {
86 2 SendByte_595(strData595.u8DisCode[i]);
87 2 }
88 1 D_ENCLK = 0;
89 1 D_ENCLK = 1;
90 1 }
91
92 /* 刷显 */
93 void Display(void)
94 {
95 1 if(strData595.u8DisChangeFlag == REFRESH_ON)
96 1 {
97 2 DisRefresh();
98 2 strData595.u8DisChangeFlag = REFRESH_OFF;
99 2 }
100 1 }
101
102 //闪烁处理
103 void Flash(void)
104 {
105 1 if( FLASH_Flag != 0 )
106 1 {
107 2 if( FLASH_Cnt > 50 )
108 2 {
109 3 switch( FLASH_Flag )
110 3 {
111 4 if ( FLASH_Flag & (1<<0) )
112 4 {
113 5 if( FLASH_Dis_Flag & 0x01 )
114 5 {
115 6 FLASH_Dis_Flag |= 0x00;
116 6 ModifyLed(POSITION_1,strData595.u8DisNum[POSITION_1],0,0);
117 6 }
C51 COMPILER V7.50 LED_DRV 05/11/2009 22:41:46 PAGE 3
118 5 else
119 5 {
120 6 FLASH_Dis_Flag |= 0x01;
121 6 strData595.u8DisCode[0] = SegDisTab[Char_Mie];
122 6 }
123 5
124 5 if ( FLASH_Flag & 0x02 )
125 5 {
126 6 if( FLASH_Dis_Flag & 0x02 )
127 6 {
128 7 FLASH_Dis_Flag |= 0x00;
129 7 ModifyLed(POSITION_2,strData595.u8DisNum[POSITION_2],0,0);
130 7 }
131 6 else
132 6 {
133 7 FLASH_Dis_Flag |= 0x02;
134 7 strData595.u8DisCode[1] = SegDisTab[Char_Mie];
135 7 }
136 6
137 6 if ( FLASH_Flag & 0x04 )
138 6 {
139 7 if( FLASH_Dis_Flag & 0x04 )
140 7 {
141 8 FLASH_Dis_Flag |= 0x00;
142 8 ModifyLed(POSITION_3,strData595.u8DisNum[POSITION_3],0,0);
143 8 }
144 7 else
145 7 {
146 8 FLASH_Dis_Flag |= 0x04;
147 8 strData595.u8DisCode[2] = SegDisTab[Char_Mie];
148 8 }
149 7
150 7 if ( FLASH_Flag & 0x08 )
151 7 {
152 8 if( FLASH_Dis_Flag & 0x08 )
153 8 {
154 9 FLASH_Dis_Flag |= 0x00;
155 9 ModifyLed(POSITION_4,strData595.u8DisNum[POSITION_4],0,0);
156 9 }
157 8 else
158 8 {
159 9 FLASH_Dis_Flag |= 0x08;
160 9 strData595.u8DisCode[3] = SegDisTab[Char_Mie];
161 9 }
162 8
163 8 if ( FLASH_Flag & 0x10 )
164 8 {
165 9 if( FLASH_Dis_Flag & 0x10 )
166 9 {
167 10 FLASH_Dis_Flag |= 0x00;
168 10 ModifyLed(POSITION_5,strData595.u8DisNum[POSITION_5],0,0);
169 10 }
170 9 else
171 9 {
172 10 FLASH_Dis_Flag |= 0x10;
173 10 strData595.u8DisCode[4] = SegDisTab[Char_Mie];
174 10 }
175 9
176 9 if ( FLASH_Flag & 0x20 )
177 9 {
178 10 if( FLASH_Dis_Flag & 0x20 )
179 10 {
C51 COMPILER V7.50 LED_DRV 05/11/2009 22:41:46 PAGE 4
180 11 FLASH_Dis_Flag &= (~0x20);
181 11 ModifyLed(POSITION_6,strData595.u8DisNum[POSITION_6],0,0);
182 11 }
183 10 else
184 10 {
185 11 FLASH_Dis_Flag = 0x20;
186 11 strData595.u8DisCode[5] = SegDisTab[Char_Mie];
187 11 }
188 10 }
189 9 }
190 8 }
191 7 }
192 6 }
193 5 }
194 4 }
195 3 }
196 2 }
197 1 }
198
199
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 138 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 39 5
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 + -