📄 main.lss
字号:
#ifdef PORTC_INTERFACE
#ifdef PORTC_INTERFACE_USED
if((PINC & 0x10) == 0x10) //PC4
Sin |= 0x01;
else
Sin &= 0xfe;
#else
if((PIND & 0x02) == 0x02) //PD1
Sin |= 0x01;
200: 11 60 ori r17, 0x01 ; 1
else
Sin &= 0xfe;
#endif
#else
if ((PINC & 0x02) == 0x02) //PC1
Sin |= 0x01;
else
Sin &= 0xfe;
#endif
scl_delay();
202: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_Low();
206: 90 98 cbi 0x12, 0 ; 18
scl_delay();
208: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
20c: 0f 5f subi r16, 0xFF ; 255
20e: 08 30 cpi r16, 0x08 ; 8
210: 79 f0 breq .+30 ; 0x230 <ReadByte+0x42>
212: 11 0f add r17, r17
214: 90 9a sbi 0x12, 0 ; 18
216: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
21a: 81 99 sbic 0x10, 1 ; 16
21c: f1 cf rjmp .-30 ; 0x200 <ReadByte+0x12>
21e: 1e 7f andi r17, 0xFE ; 254
220: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
224: 90 98 cbi 0x12, 0 ; 18
226: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
22a: 0f 5f subi r16, 0xFF ; 255
22c: 08 30 cpi r16, 0x08 ; 8
22e: 89 f7 brne .-30 ; 0x212 <ReadByte+0x24>
}
#ifdef PORTC_INTERFACE
#ifdef PORTC_INTERFACE_USED
DDRC = 0xff;
PORTC = 0xff;
#else
DDRD = 0xff;
230: 8f ef ldi r24, 0xFF ; 255
232: 81 bb out 0x11, r24 ; 17
PORTD = 0xff;
234: 82 bb out 0x12, r24 ; 18
#endif
#else
DDRC = 0xff;
PORTC = 0xff;
#endif
return(Sin);
}
236: 81 2f mov r24, r17
238: 99 27 eor r25, r25
23a: 1f 91 pop r17
23c: 0f 91 pop r16
23e: 08 95 ret
00000240 <SendACK>:
/*-----------发送应答位--------------------------------------------------*/
void SendACK()
{
240: 90 98 cbi 0x12, 0 ; 18
SCL_Low();
scl_delay();
242: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SDA_Low();
246: 91 98 cbi 0x12, 1 ; 18
scl_delay();
248: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_High();
24c: 90 9a sbi 0x12, 0 ; 18
scl_delay();
24e: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_Low();
252: 90 98 cbi 0x12, 0 ; 18
254: 08 95 ret
00000256 <SendNoACK>:
}
/*------------发送非应答位-----------------------------------------------*/
void SendNoACK()
{
256: 90 98 cbi 0x12, 0 ; 18
SCL_Low();
scl_delay();
258: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SDA_High();
25c: 91 9a sbi 0x12, 1 ; 18
scl_delay();
25e: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_High();
262: 90 9a sbi 0x12, 0 ; 18
scl_delay();
264: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_Low();
268: 90 98 cbi 0x12, 0 ; 18
26a: 08 95 ret
0000026c <Start>:
}
/*---------------------------------------------------------------------------*/
void Start(void) /*START 启动I2C 总线子程序发送I2C 起始条件*/
{
26c: 91 9a sbi 0x12, 1 ; 18
SDA_High();
scl_delay();
26e: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_High();
272: 90 9a sbi 0x12, 0 ; 18
scl_delay();
274: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SDA_Low();
278: 91 98 cbi 0x12, 1 ; 18
scl_delay();
27a: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_Low();
27e: 90 98 cbi 0x12, 0 ; 18
280: 08 95 ret
00000282 <Stop>:
}
/*-----------STOP 停止I2C 总线子程序发送I2C 总线停止条件-------------------*/
void Stop(void)
{
282: 91 98 cbi 0x12, 1 ; 18
SDA_Low();
scl_delay();
284: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SCL_High();
288: 90 9a sbi 0x12, 0 ; 18
scl_delay();
28a: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
SDA_High();
28e: 91 9a sbi 0x12, 1 ; 18
scl_delay();
290: 0e 94 65 00 call 0xca ; 0xca <scl_delay>
294: 08 95 ret
00000296 <SetChan>:
296: e8 2f mov r30, r24
298: ff 27 eor r31, r31
29a: ee 0f add r30, r30
29c: ff 1f adc r31, r31
29e: ee 0f add r30, r30
2a0: ff 1f adc r31, r31
2a2: e6 5d subi r30, 0xD6 ; 214
2a4: fe 4f sbci r31, 0xFE ; 254
2a6: 80 81 ld r24, Z
2a8: 91 81 ldd r25, Z+1 ; 0x01
2aa: a2 81 ldd r26, Z+2 ; 0x02
2ac: b3 81 ldd r27, Z+3 ; 0x03
2ae: 80 34 cpi r24, 0x40 ; 64
2b0: 20 e9 ldi r18, 0x90 ; 144
2b2: 92 07 cpc r25, r18
2b4: 22 e0 ldi r18, 0x02 ; 2
2b6: a2 07 cpc r26, r18
2b8: 20 e0 ldi r18, 0x00 ; 0
2ba: b2 07 cpc r27, r18
2bc: 48 f0 brcs .+18 ; 0x2d0 <SetChan+0x3a>
2be: 80 5d subi r24, 0xD0 ; 208
2c0: 9d 4d sbci r25, 0xDD ; 221
2c2: a6 40 sbci r26, 0x06 ; 6
2c4: b0 40 sbci r27, 0x00 ; 0
2c6: 10 f4 brcc .+4 ; 0x2cc <SetChan+0x36>
2c8: 82 e0 ldi r24, 0x02 ; 2
2ca: 03 c0 rjmp .+6 ; 0x2d2 <SetChan+0x3c>
2cc: 88 e0 ldi r24, 0x08 ; 8
2ce: 01 c0 rjmp .+2 ; 0x2d2 <SetChan+0x3c>
2d0: 81 e0 ldi r24, 0x01 ; 1
2d2: 80 93 d5 02 sts 0x02D5, r24
2d6: 0e 94 36 01 call 0x26c ; 0x26c <Start>
2da: 80 ec ldi r24, 0xC0 ; 192
2dc: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <SendByte>
2e0: 80 91 d9 02 lds r24, 0x02D9
2e4: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <SendByte>
2e8: 80 91 d3 02 lds r24, 0x02D3
2ec: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <SendByte>
2f0: 8e e8 ldi r24, 0x8E ; 142
2f2: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <SendByte>
2f6: 80 91 d5 02 lds r24, 0x02D5
2fa: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <SendByte>
2fe: 0e 94 41 01 call 0x282 ; 0x282 <Stop>
302: 8f ef ldi r24, 0xFF ; 255
304: 80 93 c6 02 sts 0x02C6, r24
308: 08 95 ret
0000030a <ReadChan>:
30a: 1f 93 push r17
30c: 0e 94 36 01 call 0x26c ; 0x26c <Start>
310: 81 ec ldi r24, 0xC1 ; 193
312: 0e 94 d3 00 call 0x1a6 ; 0x1a6 <SendByte>
316: 0e 94 f7 00 call 0x1ee ; 0x1ee <ReadByte>
31a: 18 2f mov r17, r24
31c: 0e 94 41 01 call 0x282 ; 0x282 <Stop>
320: 81 2f mov r24, r17
322: 99 27 eor r25, r25
324: 1f 91 pop r17
326: 08 95 ret
00000328 <__vector_16>:
}
void Check_UART_Int(void)
{
if (channel_change_byte_flag == BYTE_FLAG_TRUE)
{
put_string(current_channel_string);
PutAscii(channel);
SetChan(channel);
#if 0
delay_ms(50000);
delay_ms(50000);
PutAscii(ReadChan());
#endif
CLEAR_FLAG(channel_change_byte_flag);
}
}
ISR(TIMER0_OVF_vect)
{
328: 1f 92 push r1
32a: 0f 92 push r0
32c: 0f b6 in r0, 0x3f ; 63
32e: 0f 92 push r0
330: 11 24 eor r1, r1
332: 8f 93 push r24
334: 9f 93 push r25
TCNT0 = TIMER0_RELOAD_VALUE;
336: 86 e1 ldi r24, 0x16 ; 22
338: 82 bf out 0x32, r24 ; 50
timer0_counter++;
33a: 80 91 d6 02 lds r24, 0x02D6
33e: 90 91 d7 02 lds r25, 0x02D7
342: 01 96 adiw r24, 0x01 ; 1
344: 90 93 d7 02 sts 0x02D7, r25
348: 80 93 d6 02 sts 0x02D6, r24
34c: 9f 91 pop r25
34e: 8f 91 pop r24
350: 0f 90 pop r0
352: 0f be out 0x3f, r0 ; 63
354: 0f 90 pop r0
356: 1f 90 pop r1
358: 18 95 reti
0000035a <port_init>:
}
void port_init(void)
{
35a: 8f ef ldi r24, 0xFF ; 255
35c: 87 bb out 0x17, r24 ; 23
DDRB = 0xFF;
PORTB = 0xFF;
35e: 88 bb out 0x18, r24 ; 24
PORTC = 0xFF;
360: 85 bb out 0x15, r24 ; 21
DDRC = 0xFF;
362: 84 bb out 0x14, r24 ; 20
DDRD = 0xFF;
364: 81 bb out 0x11, r24 ; 17
PORTD = 0x7F;
366: 8f e7 ldi r24, 0x7F ; 127
368: 82 bb out 0x12, r24 ; 18
36a: 08 95 ret
0000036c <Timer0Init>:
}
void Timer0Init(void) /* 5 ms */
{
36c: 13 be out 0x33, r1 ; 51
TCCR0 = 0x00;
TCNT0 = TIMER0_RELOAD_VALUE;
36e: 86 e1 ldi r24, 0x16 ; 22
370: 82 bf out 0x32, r24 ; 50
TCCR0 = 0x03; /* prescale 1/64 */
372: 83 e0 ldi r24, 0x03 ; 3
374: 83 bf out 0x33, r24 ; 51
376: 08 95 ret
00000378 <UartInit>:
}
void UartInit(void)
{
378: 10 92 9b 00 sts 0x009B, r1
UCSR1A = 0x00;
UCSR1C = (1<<UCSZ1)|(1<<UCSZ0);
37c: 86 e0 ldi r24, 0x06 ; 6
37e: 80 93 9d 00 sts 0x009D, r24
UBRR1L = ((FOSC/16/BAUD) -1) % 256; //3;
382: 83 e0 ldi r24, 0x03 ; 3
384: 80 93 99 00 sts 0x0099, r24
UBRR1H = ((FOSC/16/BAUD) -1) / 256; //0;
388: 10 92 98 00 sts 0x0098, r1
UCSR1B = (1<<RXEN1) | (1<<TXEN1) | (1<<RXCIE1);
38c: 88 e9 ldi r24, 0x98 ; 152
38e: 80 93 9a 00 sts 0x009A, r24
392: 08 95 ret
00000394 <PutChar>:
}
void PutChar(unsigned char send_char)
{
394: 98 2f mov r25, r24
cli();
396: f8 94 cli
while(!(UCSR1A&(1<<UDRE1)));
398: 80 91 9b 00 lds r24, 0x009B
39c: 85 ff sbrs r24, 5
39e: fc cf rjmp .-8 ; 0x398 <PutChar+0x4>
UDR1 = send_char;
3a0: 90 93 9c 00 sts 0x009C, r25
sei();
3a4: 78 94 sei
3a6: 08 95 ret
000003a8 <__vector_30>:
}
void timer0_task(void)
{
if ( timer0_counter >= 50 ) /* 5*timer0_counter ms */
{
timer0_counter = 0;
if (channel_busy_byte_flag == BYTE_FLAG_TRUE)
{
PutChar(' ');PutChar(' ');PutChar(' ');PutChar(' ');
put_string(read_set_channel_string);
PutAscii(ReadChan());
PutEnter();
CLEAR_FLAG(channel_busy_byte_flag);
}
}
}
ISR(USART1_RX_vect)
{
3a8: 1f 92 push r1
3aa: 0f 92 push r0
3ac: 0f b6 in r0, 0x3f ; 63
3ae: 0f 92 push r0
3b0: 11 24 eor r1, r1
3b2: 2f 93 push r18
3b4: 3f 93 push r19
3b6: 4f 93 push r20
3b8: 5f 93 push r21
3ba: 6f 93 push r22
3bc: 7f 93 push r23
3be: 8f 93 push r24
3c0: 9f 93 push r25
3c2: af 93 push r26
3c4: bf 93 push r27
3c6: ef 93 push r30
3c8: ff 93 push r31
3ca: cf 93 push r28
3cc: df 93 push r29
3ce: cd b7 in r28, 0x3d ; 61
3d0: de b7 in r29, 0x3e ; 62
3d2: 21 97 sbiw r28, 0x01 ; 1
3d4: de bf out 0x3e, r29 ; 62
3d6: cd bf out 0x3d, r28 ; 61
volatile unsigned char temp;
temp = UDR1;
3d8: 80 91 9c 00 lds r24, 0x009C
3dc: 89 83 std Y+1, r24 ; 0x01
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -