📄 main.lst
字号:
64:main.c **** uint8_t alarm_time;
65:main.c **** uint8_t alarm_enable;
66:main.c ****
67:main.c **** // ==================================================================
68:main.c **** // global function declaration;
69:main.c **** void UARTIni( void ); // initialization of UART
70:main.c **** void avr_ini( void );
71:main.c **** void Beep( uint8_t times );
72:main.c **** void Beep_Long( void );
73:main.c **** void Delayms( uint16_t count );
74:main.c **** void Delayus( uint16_t count );
75:main.c **** void Parse_Command( uint8_t cmd , uint8_t param );
76:main.c **** void main_receiver( void );
77:main.c **** int main( void );
78:main.c **** uint8_t Check_EEPROM( void );
79:main.c **** void Reset_To_Default( void );
80:main.c **** void WatchDog_Feed( void );
81:main.c **** //uint8_t Compare_Weigan_Data( void );
82:main.c **** void Send_Card_ID( uint8_t format , uint8_t *data );
83:main.c **** void Alarm_Check_And_Process( void );
84:main.c ****
85:main.c ****
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccygaaaa.s page 6
86:main.c **** // ********************************************************************************************
87:main.c **** // Description : UART initialize routinue.
88:main.c **** // Return value: None.
89:main.c **** // parameter : None.
90:main.c **** // ********************************************************************************************
91:main.c ****
92:main.c **** void UARTIni( void )
93:main.c **** {
201 .stabn 68,0,93,.LM1-UARTIni
202 .LM1:
203 /* prologue: frame size=0 */
204 /* prologue end (size=0) */
94:main.c **** // UCSRA is not necessary to set up, using initial valuses
95:main.c **** // no double transmission speed, no multi-processor mode
96:main.c **** //UCSRA: RXC , TXC , UDRE , FE , DOR , PE , U2X , MPCM ;
97:main.c **** //UCSRB: RXCIE, TXCIE, UDRIE, RXEN, TXEN, UCSZ2, RXB8,TXB8 ;
98:main.c **** // UCSRB = ( 1 << RXCIE ) | ( 0 << UDRIE ) | ( 1 << RXEN ) | ( 1 << TXEN );
99:main.c **** UCSRB = ( 1 << RXCIE ) | ( 0 << TXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN );
205 .stabn 68,0,99,.LM2-UARTIni
206 .LM2:
207 0000 88E9 ldi r24,lo8(-104)
208 0002 8AB9 out 42-0x20,r24
100:main.c **** // set up : RXCIE, UDRIE, RXEN, TXEN
101:main.c **** // (interrupt enable from receiver,
102:main.c **** // UART receiver enable, UART transmit enable)
103:main.c **** // UCSRC: URSEL, UMSEL, UPM1, UPM0, USBS, UCSZ1, UCSZ0, UCPOL ;
104:main.c **** UCSRC = ( 1 << URSEL ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 );
209 .stabn 68,0,104,.LM3-UARTIni
210 .LM3:
211 0004 86E8 ldi r24,lo8(-122)
212 0006 80BD out 64-0x20,r24
105:main.c **** // asynchronous operation, 8 data bits,
106:main.c **** // no parity, 1 stop bit
107:main.c **** // UCSRC = ( 1 << URSEL ) | ( 1 << UPM1 ) | ( 1 << UPM0 ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 );
108:main.c **** // asynchronous operation, 8 data bits, odd parity, 1 stop bit;
109:main.c **** UBRRL = 103; // baud rate - see UBRR register setting table
213 .stabn 68,0,109,.LM4-UARTIni
214 .LM4:
215 0008 87E6 ldi r24,lo8(103)
216 000a 89B9 out 41-0x20,r24
110:main.c **** // in AVR ATmega8 specification
111:main.c **** // UBRRH - using initial values
112:main.c **** // UBRRL - 103 for 9.6Kbps and frequency f=16 MHz
113:main.c **** // (using SINGLE transmission speed)
114:main.c **** // UBRRL = 51; // baud rate - 19200;
115:main.c ****
116:main.c **** rx_number = 0;
217 .stabn 68,0,116,.LM5-UARTIni
218 .LM5:
219 000c 1092 0000 sts rx_number,__zero_reg__
117:main.c **** tx_number = 0;
220 .stabn 68,0,117,.LM6-UARTIni
221 .LM6:
222 0010 1092 0000 sts tx_number,__zero_reg__
118:main.c **** valid_data_flag = 0; //This sign indicate if there is a valid command received;
223 .stabn 68,0,118,.LM7-UARTIni
224 .LM7:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccygaaaa.s page 7
225 0014 1092 0000 sts valid_data_flag,__zero_reg__
119:main.c ****
120:main.c **** }
226 .stabn 68,0,120,.LM8-UARTIni
227 .LM8:
228 /* epilogue: frame size=0 */
229 0018 0895 ret
230 /* epilogue end (size=1) */
231 /* function UARTIni size 13 (12) */
232 .size UARTIni, .-UARTIni
233 .Lscope0:
234 .stabs "",36,0,0,.Lscope0-UARTIni
235 .stabs "avr_ini:F(0,20)",36,0,129,avr_ini
236 .global avr_ini
237 .type avr_ini, @function
238 avr_ini:
121:main.c ****
122:main.c **** // ********************************************************************************************
123:main.c **** // Description : Atmega8 device initialize.
124:main.c **** // Return value: None.
125:main.c **** // parameter : None.
126:main.c **** // ********************************************************************************************
127:main.c ****
128:main.c **** void avr_ini( void )
129:main.c **** {
239 .stabn 68,0,129,.LM9-avr_ini
240 .LM9:
241 /* prologue: frame size=0 */
242 001a 1F93 push r17
243 /* prologue end (size=1) */
130:main.c ****
131:main.c **** UARTIni();
244 .stabn 68,0,131,.LM10-avr_ini
245 .LM10:
246 001c F1DF rcall UARTIni
132:main.c ****
133:main.c **** // ---------------------------------------------------------------
134:main.c **** // 16-bit Timer/Counter1 initialization
135:main.c **** // ---------------------------------------------------------------
136:main.c ****
137:main.c **** TCCR1A = 0; // no compare otuput, no PWM mode ...
247 .stabn 68,0,137,.LM11-avr_ini
248 .LM11:
249 001e 1FBC out 79-0x20,__zero_reg__
138:main.c **** TCCR1B = 0; // stopped on startup
250 .stabn 68,0,138,.LM12-avr_ini
251 .LM12:
252 0020 1EBC out 78-0x20,__zero_reg__
139:main.c ****
140:main.c **** // ---------------------------------------------------------------
141:main.c **** // I/O Ports initialization
142:main.c **** // ---------------------------------------------------------------
143:main.c ****
144:main.c **** DDRB = 0x06;
253 .stabn 68,0,144,.LM13-avr_ini
254 .LM13:
255 0022 86E0 ldi r24,lo8(6)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccygaaaa.s page 8
256 0024 87BB out 55-0x20,r24
145:main.c **** DDRC = 0x37;
257 .stabn 68,0,145,.LM14-avr_ini
258 .LM14:
259 0026 87E3 ldi r24,lo8(55)
260 0028 84BB out 52-0x20,r24
146:main.c **** DDRD = 0xC2;
261 .stabn 68,0,146,.LM15-avr_ini
262 .LM15:
263 002a 82EC ldi r24,lo8(-62)
264 002c 81BB out 49-0x20,r24
147:main.c ****
148:main.c **** PORTB = 0x00; //如果weigan0和weigan1不置低,则wd0和wd1第一次输出会有问题;
265 .stabn 68,0,148,.LM16-avr_ini
266 .LM16:
267 002e 18BA out 56-0x20,__zero_reg__
149:main.c **** PORTC = 0x01;
268 .stabn 68,0,149,.LM17-avr_ini
269 .LM17:
270 0030 81E0 ldi r24,lo8(1)
271 0032 85BB out 53-0x20,r24
150:main.c **** PORTD = 0xC0;
272 .stabn 68,0,150,.LM18-avr_ini
273 .LM18:
274 0034 80EC ldi r24,lo8(-64)
275 0036 82BB out 50-0x20,r24
151:main.c ****
152:main.c **** // ---------------------------------------------------------------
153:main.c **** // Watch Dog Setup
154:main.c **** // ---------------------------------------------------------------
155:main.c **** cbi( MCUCSR , WDRF ); //clear watchdog reset flag
276 .stabn 68,0,155,.LM19-avr_ini
277 .LM19:
278 0038 84B7 in r24,84-0x20
279 003a 877F andi r24,lo8(-9)
280 003c 84BF out 84-0x20,r24
156:main.c **** wdt_enable( 0x07 ); //set timeout of Watchdog is 2.1s;
281 .stabn 68,0,156,.LM20-avr_ini
282 .LM20:
283 003e 88E1 ldi r24,lo8(24)
284 0040 90E0 ldi r25,hi8(24)
285 0042 2FE0 ldi r18,lo8(15)
286 /* #APP */
287 0044 0FB6 in __tmp_reg__,__SREG__
288 0046 F894 cli
289 0048 A895 wdr
290 004a 81BD out 33,r24
291 004c 0FBE out __SREG__,__tmp_reg__
292 004e 21BD out 33,r18
157:main.c ****
158:main.c **** while ( Check_EEPROM( ) == 0x00 ) //Ensure EEPROM is ok;
293 .stabn 68,0,158,.LM21-avr_ini
294 .LM21:
295 /* #NOAPP */
296 .L3:
297 0050 71D1 rcall Check_EEPROM
298 0052 8823 tst r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccygaaaa.s page 9
299 0054 11F4 brne .L19
159:main.c **** Reset_To_Default( );
300 .stabn 68,0,159,.LM22-avr_ini
301 .LM22:
302 0056 C9D1 rcall Reset_To_Default
303 0058 FBCF rjmp .L3
160:main.c ****
161:main.c **** watchdog_feed_flag = 0 ; //feed dog sign,0 for not feed dog , other value for has feed dog;
304 .stabn 68,0,161,.LM23-avr_ini
305 .LM23:
306 .L19:
307 005a 1092 0000 sts watchdog_feed_flag,__zero_reg__
162:main.c **** // weigan_format = 1 ; //1--Weigan26 , 2--Weigan34 , 3--Weigan36 , 4--Weigan44 , 5--9600bps;
163:main.c **** if( eeprom_rb( &WEIGAN_FORMAT ) == eeprom_rb( &WEIGAN_FORMAT_CHK ) )
308 .stabn 68,0,163,.LM24-avr_ini
309 .LM24:
310 005e 80E0 ldi r24,lo8(WEIGAN_FORMAT)
311 0060 90E0 ldi r25,hi8(WEIGAN_FORMAT)
312 0062 00D0 rcall eeprom_read_byte
313 0064 182F mov r17,r24
314 0066 80E0 ldi r24,lo8(WEIGAN_FORMAT_CHK)
315 0068 90E0 ldi r25,hi8(WEIGAN_FORMAT_CHK)
316 006a 00D0 rcall eeprom_read_byte
317 006c 1817 cp r17,r24
318 006e 91F1 breq .L20
164:main.c **** {
165:main.c **** weigan_format = eeprom_rb( &WEIGAN_FORMAT );
166:main.c **** }
167:main.c **** else
168:main.c **** weigan_format = 0x01;
319 .stabn 68,0,168,.LM25-avr_ini
320 .LM25:
321 0070 81E0 ldi r24,lo8(1)
322 .L15:
323 0072 8093 0000 sts weigan_format,r24
169:main.c ****
170:main.c **** if( eeprom_rb( &ALARM_LEVEL ) == eeprom_rb( &ALARM_LEVEL_CHK ) )
324 .stabn 68,0,170,.LM26-avr_ini
325 .LM26:
326 0076 80E0 ldi r24,lo8(ALARM_LEVEL)
327 0078 90E0 ldi r25,hi8(ALARM_LEVEL)
328 007a 00D0 rcall eeprom_read_byte
329 007c 182F mov r17,r24
330 007e 80E0 ldi r24,lo8(ALARM_LEVEL_CHK)
331 0080 90E0 ldi r25,hi8(ALARM_LEVEL_CHK)
332 0082 00D0 rcall eeprom_read_byte
333 0084 1817 cp r17,r24
334 0086 11F1 breq .L21
171:main.c **** alarm_level = eeprom_rb( &ALARM_LEVEL );
172:main.c **** else
173:main.c **** alarm_level = 0x01;
335 .stabn 68,0,173,.LM27-avr_ini
336 .LM27:
337 0088 81E0 ldi r24,lo8(1)
338 .L16:
339 008a 8093 0000 sts alarm_level,r24
174:main.c ****
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccygaaaa.s page 10
175:main.c **** if( eeprom_rb( &ALARM_TIME ) == eeprom_rb( &ALARM_TIME_CHK ) )
340 .stabn 68,0,175,.LM28-avr_ini
341 .LM28:
342 008e 80E0 ldi r24,lo8(ALARM_TIME)
343 0090 90E0 ldi r25,hi8(ALARM_TIME)
344 0092 00D0 rcall eeprom_read_byte
345 0094 182F mov r17,r24
346 0096 80E0 ldi r24,lo8(ALARM_TIME_CHK)
347 0098 90E0 ldi r25,hi8(ALARM_TIME_CHK)
348 009a 00D0 rcall eeprom_read_byte
349 009c 1817 cp r17,r24
350 009e 91F0 breq .L22
176:main.c **** alarm_time = eeprom_rb( &ALARM_TIME );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -