?? display.lst
字號(hào):
1 .file "Display.c"
2 .arch atmega8
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
101 .global Refresh_AD
102 .data
105 Refresh_AD:
106 0000 00 .byte 0
107 0001 3200 .word 50
108 .global fDispNow
109 .global fDispNow
110 .section .bss
113 fDispNow:
114 0000 00 .skip 1,0
115 .global LedTab
116 .section .progmem.data,"a",@progbits
119 LedTab:
120 0000 3F .byte 63
121 0001 06 .byte 6
122 0002 5B .byte 91
123 0003 4F .byte 79
124 0004 66 .byte 102
125 0005 6D .byte 109
126 0006 7D .byte 125
127 0007 07 .byte 7
128 0008 7F .byte 127
129 0009 6F .byte 111
130 000a BF .byte -65
131 000b 86 .byte -122
132 000c DB .byte -37
133 000d CF .byte -49
134 000e E6 .byte -26
135 000f ED .byte -19
136 0010 FD .byte -3
137 0011 87 .byte -121
138 0012 FF .byte -1
139 0013 EF .byte -17
140 0014 77 .byte 119
141 0015 7C .byte 124
142 0016 39 .byte 57
143 0017 5E .byte 94
144 0018 79 .byte 121
145 0019 71 .byte 113
146 001a 6F .byte 111
147 001b 74 .byte 116
148 001c 06 .byte 6
149 001d 1E .byte 30
150 001e 00 .byte 0
151 001f 38 .byte 56
152 0020 00 .byte 0
153 0021 37 .byte 55
154 0022 3F .byte 63
155 0023 73 .byte 115
156 0024 BF .byte -65
157 0025 50 .byte 80
158 0026 6D .byte 109
159 0027 78 .byte 120
160 0028 3E .byte 62
161 0029 3E .byte 62
162 002a 00 .byte 0
163 002b 00 .byte 0
164 002c 6E .byte 110
165 002d 5B .byte 91
166 002e 40 .byte 64
167 002f 00 .byte 0
168 .text
170 .global DispPinInit
172 DispPinInit:
1:task/Display.c **** /**********************************************
2:task/Display.c **** 公司名稱(chēng):
3:task/Display.c **** 文 件 名:
4:task/Display.c **** 版 本 號(hào):
5:task/Display.c **** 程序設(shè)計(jì):
6:task/Display.c **** 說(shuō) 明:
7:task/Display.c **** 完成日期:
8:task/Display.c **** 修改日期:
9:task/Display.c **** 功能摘要:
10:task/Display.c **** ***********************************************/
11:task/Display.c **** #define _Display
12:task/Display.c **** #include "includes.h"
13:task/Display.c ****
14:task/Display.c **** const uint8 LedTab[] PROGMEM={
15:task/Display.c **** 0x3F,0x06,0x5B,0x4F,0x66,
16:task/Display.c **** 0x6D,0x7D,0x07,0x7F,0x6F, /*0-9*/
17:task/Display.c ****
18:task/Display.c **** 0xBF,0x86,0xDB,0xCF,0xE6,
19:task/Display.c **** 0xED,0xFD,0x87,0xFF,0xEF, /*0.-9.*/
20:task/Display.c ****
21:task/Display.c **** 0x77,0x7C,0x39,0x5E,0x79, /*A\b \C\d\E*/
22:task/Display.c **** 0x71,0x6f,0x74,0x06,0x1e, /*F\g \h\I\J*/
23:task/Display.c **** 0x00,0x38,0x00,0x37,0x3F, /*K\L \M\N\O*/
24:task/Display.c **** 0x73,0xBF,0x50,0x6D,0x78, /*P\0.\R\S\T*/
25:task/Display.c **** 0x3E,0x3E,0x00,0x00,0x6E, /*U\V\W\X\Y*/
26:task/Display.c **** 0x5B,0x40, /*Z\-\*/
27:task/Display.c **** 0x00, //47
28:task/Display.c **** };
29:task/Display.c ****
30:task/Display.c **** uint8 Led[lighten_size];
31:task/Display.c **** uint8 DispBuf[lighten_size];
32:task/Display.c **** uint8 fDispNow = 0; //要求立刻顯示標(biāo)志
33:task/Display.c **** volatile uint8 fTimer0_1ms;
34:task/Display.c **** WAIT_TIME_STRUCT Refresh_AD = {0,_500MS};
35:task/Display.c **** void DispPinInit(void);
36:task/Display.c **** void DispProcess(void);
37:task/Display.c **** void HC164SendByte(uint8 byte);
38:task/Display.c **** void DispPinInit(void);
39:task/Display.c **** void SETB_IO(uint8 IO_NO); //位選口的控制
40:task/Display.c ****
41:task/Display.c **** //--------------------------------------------
42:task/Display.c ****
43:task/Display.c **** #define bit_shut() \
44:task/Display.c **** do \
45:task/Display.c **** { DIG1=OFF;\
46:task/Display.c **** DIG2=OFF;\
47:task/Display.c **** DIG3=OFF;\
48:task/Display.c **** DIG4=OFF;\
49:task/Display.c **** DIG5=OFF;\
50:task/Display.c **** }while(0)
51:task/Display.c ****
52:task/Display.c **** //------------------------------
53:task/Display.c **** SIGNAL(SIG_OVERFLOW0)
54:task/Display.c **** {
55:task/Display.c **** static uint8 LedNum = 0;
56:task/Display.c ****
57:task/Display.c **** TCNT0 = 0x100 - (uint32)((float)F_CPU * CLOCK_TIME0 / F_N_TIME0 / 1000);
58:task/Display.c ****
59:task/Display.c **** DispPinInit();
60:task/Display.c **** HC164SendByte(Led[LedNum]); //送段碼
61:task/Display.c **** if (LedNum > 4) bit_shut();
62:task/Display.c **** else SETB_IO(LedNum); //送位選
63:task/Display.c **** if (++LedNum == lighten_size) LedNum = 0;
64:task/Display.c **** }
65:task/Display.c **** //---------------------------------------------
66:task/Display.c ****
67:task/Display.c **** void HC164SendByte(uint8 byte)
68:task/Display.c **** {
69:task/Display.c **** unsigned char i;
70:task/Display.c **** HC164_CLK = 0;
71:task/Display.c **** for(i=0;i<8;i++)
72:task/Display.c **** {
73:task/Display.c **** HC164_CLK=0;
74:task/Display.c **** if( byte&0x80 )
75:task/Display.c **** { HC164_Data=1; }
76:task/Display.c **** else
77:task/Display.c **** { HC164_Data=0; }
78:task/Display.c **** byte<<= 1;
79:task/Display.c **** HC164_CLK=1;
80:task/Display.c ****
81:task/Display.c **** }
82:task/Display.c **** }
83:task/Display.c ****
84:task/Display.c **** //----------------------------------------------
85:task/Display.c ****
86:task/Display.c **** void SETB_IO(uint8 IO_NO)
87:task/Display.c **** {
88:task/Display.c **** bit_shut();
89:task/Display.c **** switch (IO_NO)
90:task/Display.c **** {
91:task/Display.c **** case 0: DIG1=ON;break;
92:task/Display.c **** case 1: DIG2=ON;break;
93:task/Display.c **** case 2: DIG3=ON;break;
94:task/Display.c **** case 3: DIG4=ON;break;
95:task/Display.c **** case 4: DIG5=ON;break;
96:task/Display.c **** default: break;
97:task/Display.c **** }
98:task/Display.c **** }
99:task/Display.c ****
100:task/Display.c ****
101:task/Display.c **** //----------------------------------------------
102:task/Display.c **** void DispProcess(void) //顯示段碼轉(zhuǎn)換函數(shù)
103:task/Display.c **** {
104:task/Display.c **** uint8 i;
105:task/Display.c **** static uint8 DispTime = 0;
106:task/Display.c ****
107:task/Display.c **** if ((Refresh_AD.fGetTime) || (fDispNow))
108:task/Display.c **** {
109:task/Display.c **** Refresh_AD.fGetTime = 0;
110:task/Display.c **** Refresh_AD.WaitTime = _500MS;
111:task/Display.c ****
112:task/Display.c **** //----------------------------------------------------------------
113:task/Display.c **** if (TaskID == 0)
114:task/Display.c **** {
115:task/Display.c **** DispBuf[ROW_5] = HIDE;
116:task/Display.c **** DoPot(&DispBuf[ROW_1],Ps);
117:task/Display.c **** if (Ps_Neg == 1) DispBuf[ROW_5] = 46;
118:task/Display.c **** /* DispBuf[ROW_5] = HIDE;
119:task/Display.c **** DispBuf[ROW_4] = HIDE;
120:task/Display.c **** DispBuf[ROW_3] = HIDE;
121:task/Display.c **** DispBuf[ROW_2] = HIDE;
122:task/Display.c **** DispBuf[ROW_1] = HIDE;
123:task/Display.c ****
124:task/Display.c **** if (V_sign_A == 1) DispBuf[ROW_5] = 46;
125:task/Display.c **** if (I_sign_A == 1) DispBuf[ROW_4] = 46;
126:task/Display.c **** if (V_sign_B == 1) DispBuf[ROW_3] = 46;
127:task/Display.c **** if (I_sign_B == 1) DispBuf[ROW_2] = 46;*/
128:task/Display.c **** }
129:task/Display.c **** DispTime++;
130:task/Display.c **** //-----------------------------------------------------------------
131:task/Display.c ****
132:task/Display.c **** for (i=0; i<lighten_size; i++) //進(jìn)行顯示數(shù)據(jù)更新
133:task/Display.c **** { Led[i] = pgm_read_byte(&LedTab[DispBuf[i]]); }
134:task/Display.c **** if (DispTime >= 2) //進(jìn)行閃爍處理
135:task/Display.c **** {
136:task/Display.c **** DispTime = 0;
137:task/Display.c **** if (TaskID == 0)
138:task/Display.c **** {
139:task/Display.c **** if ((!(AlarmSwitch & 0x01)) && fH_Alarm)
140:task/Display.c **** { Dis_info(&DispBuf[ROW_5],"h-alr"); }
141:task/Display.c ****
142:task/Display.c **** if ((!(AlarmSwitch & 0x01)) && fL_Alarm)
143:task/Display.c **** { Dis_info(&DispBuf[ROW_5],"l-alr"); }
144:task/Display.c ****
145:task/Display.c **** for (i=0; i<lighten_size; i++) //進(jìn)行顯示數(shù)據(jù)更新
146:task/Display.c **** { Led[i] = pgm_read_byte(&LedTab[DispBuf[i]]);}
147:task/Display.c **** }
148:task/Display.c **** }
149:task/Display.c **** }
150:task/Display.c **** fDispNow = 0;
151:task/Display.c **** }
152:task/Display.c **** //----------------------------------------------
153:task/Display.c **** void DispPinInit(void)
154:task/Display.c **** {
174 .LM1:
175 /* prologue: frame size=0 */
176 /* prologue end (size=0) */
155:task/Display.c **** PORTB &= 0xF8;
178 .LM2:
179 0000 88B3 in r24,56-0x20
180 0002 887F andi r24,lo8(-8)
181 0004 88BB out 56-0x20,r24
156:task/Display.c **** PORTD &= 0x3f;
183 .LM3:
184 0006 82B3 in r24,50-0x20
185 0008 8F73 andi r24,lo8(63)
186 000a 82BB out 50-0x20,r24
187 /* epilogue: frame size=0 */
188 000c 0895 ret
189 /* epilogue end (size=1) */
190 /* function DispPinInit size 7 (6) */
192 .Lscope0:
195 .global HC164SendByte
197 HC164SendByte:
199 .LM4:
200 /* prologue: frame size=0 */
201 /* prologue end (size=0) */
203 .LM5:
204 000e 9598 cbi 50-0x20,5
205 0010 97E0 ldi r25,lo8(7)
206 .L8:
208 .LM6:
209 0012 9598 cbi 50-0x20,5
211 .LM7:
212 0014 87FF sbrs r24,7
213 0016 02C0 rjmp .L6
215 .LM8:
216 0018 949A sbi 50-0x20,4
217 001a 01C0 rjmp .L7
218 .L6:
220 .LM9:
221 001c 9498 cbi 50-0x20,4
222 .L7:
224 .LM10:
225 001e 880F lsl r24
227 .LM11:
228 0020 959A sbi 50-0x20,5
230 .LM12:
231 0022 9150 subi r25,lo8(-(-1))
232 0024 97FF sbrs r25,7
233 0026 F5CF rjmp .L8
234 /* epilogue: frame size=0 */
235 0028 0895 ret
236 /* epilogue end (size=1) */
237 /* function HC164SendByte size 14 (13) */
242 .Lscope1:
245 .global SETB_IO
247 SETB_IO:
249 .LM13:
250 /* prologue: frame size=0 */
251 /* prologue end (size=0) */
253 .LM14:
254 002a C298 cbi 56-0x20,2
255 002c 9698 cbi 50-0x20,6
256 002e 9798 cbi 50-0x20,7
257 0030 C098 cbi 56-0x20,0
258 0032 C198 cbi 56-0x20,1
260 .LM15:
261 0034 9927 clr r25
262 0036 8230 cpi r24,2
263 0038 9105 cpc r25,__zero_reg__
264 003a 91F0 breq .L16
266 .LM16:
267 003c 8330 cpi r24,3
268 003e 9105 cpc r25,__zero_reg__
269 0040 2CF4 brge .L20
270 0042 0097 sbiw r24,0
271 0044 49F0 breq .L14
272 0046 0197 sbiw r24,1
273 0048 49F0 breq .L15
274 004a 0895 ret
275 .L20:
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -