📄 main.lss
字号:
90c: 12 ba out 0x12, r1 ; 18
90e: 08 95 ret
00000910 <Timer_Init>:
}
void Timer_Init(void)
{
TCCR0=0x05;//[--,--,--,--,--,CS02,CS01,CS00]
910: 85 e0 ldi r24, 0x05 ; 5
912: 83 bf out 0x33, r24 ; 51
TCNT0=0x64;
914: 84 e6 ldi r24, 0x64 ; 100
916: 82 bf out 0x32, r24 ; 50
TCCR1A = 0x08;//TCCR1A = 0x40;//OCIE1A置位//[COM1A1,COM1A0,COM1B1,COM1B0,FOC1A,FOC1B,WGM11,WGM10]
918: 88 e0 ldi r24, 0x08 ; 8
91a: 8f bd out 0x2f, r24 ; 47
TCCR1B = 0x01; //start Timer,无分频 //[ICNC1,ICES1,--,WGM13,WGM12,CS12,CS11,CS10]
91c: 81 e0 ldi r24, 0x01 ; 1
91e: 8e bd out 0x2e, r24 ; 46
TCNT1=0x0000;
920: 1d bc out 0x2d, r1 ; 45
922: 1c bc out 0x2c, r1 ; 44
// TCNT1L;
// TCNT1H;
//OCR1A=0x7D00;
OCR1A=0x3E80; // (1/8)*0x3e80*500=1000ms
924: 80 e8 ldi r24, 0x80 ; 128
926: 9e e3 ldi r25, 0x3E ; 62
928: 9b bd out 0x2b, r25 ; 43
92a: 8a bd out 0x2a, r24 ; 42
//OCR1A=0x1F40;
//OCR1A=0x0FA0;
//OCR1A=0x07D0;
//OCR1A=0x0320;
//OCR1A=0x00C8;
// OCR1AL;
// OCR1AH;
//OCR1B=0xFFFF;
// OCR1BL;
// OCR1BH;
ICR1=0x0000;
92c: 17 bc out 0x27, r1 ; 39
92e: 16 bc out 0x26, r1 ; 38
// ICR1L;
// ICR1H;
TCCR2=0x00;//[FOC2,WGM20,COM21,COM20,WGM21,CS22,CS21,CS20]//start Timer,32分频
930: 15 bc out 0x25, r1 ; 37
TCNT2=0X00;
932: 14 bc out 0x24, r1 ; 36
OCR2=0xFA; //250*1/8*32=1s
934: 8a ef ldi r24, 0xFA ; 250
936: 83 bd out 0x23, r24 ; 35
ASSR;//[--,--,--,--,AS2,TCN2UB,OCR2UB,TCR2UB]
938: 82 b5 in r24, 0x22 ; 34
93a: 08 95 ret
0000093c <UART_Init>:
//WDTCR=0x1F;//[--,--,--,WDCE,WDE,WDP2,WDP1,WDP0] //WDTCR=0x1F;
}
void UART_Init(void)
{
UBRRL;//[UBRR7,UBRR6,UBRR5,UBRR4,UBRR3,UBRR2,UBRR1,UBRR0]
93c: 89 b1 in r24, 0x09 ; 9
UBRRH;//[URSEL,--,--,--,UBRR11,UBRR10,UBRR9,UBRR8]
93e: 80 b5 in r24, 0x20 ; 32
UCSRA;//[RXC,TXC,UDRE,FE,DOR,PE,U2X,MPCM]
940: 8b b1 in r24, 0x0b ; 11
UCSRB;//[RXCIE,TXCIE,UDRIE,RXEN,TXEN,UCSZ2,RXB8,TXB8]
942: 8a b1 in r24, 0x0a ; 10
UCSRC;//[URSEL,UMSEL,UPM1,UPM0,USBS,UCSZ1,UCSZ0,UCPOL]
944: 80 b5 in r24, 0x20 ; 32
UDR;
946: 8c b1 in r24, 0x0c ; 12
948: 08 95 ret
0000094a <IIC_Init>:
/******
UBRRH=0;
UBRRL=23;
UCSRB=(1<<RXEN)|(1<<TXEN);
**********/
}
void IIC_Init(void)
{
TWBR;//[TWBR7,TWBR6,TWBR5,TWBR4,TWBR3,TWBR2,TWBR1,TWBR0]
94a: 80 b1 in r24, 0x00 ; 0
TWSR;//[TWS7,TWS6,TWS5,TWS4,TWS3,--,TWPS1,TWPS0]
94c: 81 b1 in r24, 0x01 ; 1
TWAR;//[TWA6,TWA5,TWA4,TWA3,TWA2,TWA1,TWA0,TWGCE]
94e: 82 b1 in r24, 0x02 ; 2
TWDR;//[TWD7,TWD6,TWD5,TWD4,TWD3,TWD2,TWD1,TWD0]
950: 83 b1 in r24, 0x03 ; 3
TWCR;//[TWINT,TWEA,TWSTA,TWSTO,TWWC,TWEN,--,TWIE]
952: 86 b7 in r24, 0x36 ; 54
954: 08 95 ret
00000956 <SPI_Init>:
}
void SPI_Init(void)
{
SPCR;//[SPIE,SPE,DORD,MSTR,CPOL,CPHA,SPR1,SPR0]
956: 8d b1 in r24, 0x0d ; 13
SPSR;//[SPIF,WCOL,--,--,--,--,--,SPI2X]
958: 8e b1 in r24, 0x0e ; 14
SPDR;//[MSB,--,--,--,--,--,--,LSB]
95a: 8f b1 in r24, 0x0f ; 15
95c: 08 95 ret
0000095e <ADC_Init>:
}
void ADC_Init(void)
{
ADCW;
95e: 84 b1 in r24, 0x04 ; 4
960: 95 b1 in r25, 0x05 ; 5
/****
ADCL=0;
ADCH=0;
ADCSR=;//[ADEN,ADSC,ADFR,ADIF,ADIE,ADPS2,ADPS1,ADPS0]
ADMUX=;//[REFS1,REFS0,ADLAR,--,MUX3,MUX2,MUX1,MUX0]
*****/
//ADCH=0;
//ADCL=0;
ADCSRA=0X00;
962: 16 b8 out 0x06, r1 ; 6
ACSR =(1<<ACD);//关闭模拟比较器
964: 80 e8 ldi r24, 0x80 ; 128
966: 88 b9 out 0x08, r24 ; 8
ADMUX=0x46;
968: 86 e4 ldi r24, 0x46 ; 70
96a: 87 b9 out 0x07, r24 ; 7
ADCSRA=0xD6;
96c: 86 ed ldi r24, 0xD6 ; 214
96e: 86 b9 out 0x06, r24 ; 6
970: 08 95 ret
00000972 <Comparator_Init>:
}
void Comparator_Init(void)
{
ACSR==0x80;//[ADC,ACBG,ACO,ACI,ACIE,ACIC,ACIS1,ACIS0]
972: 88 b1 in r24, 0x08 ; 8
974: 08 95 ret
00000976 <EEPROM_Init>:
}
void EEPROM_Init(void)
{
EECR;//[1,1,BLB12,BLB11,EERIE,EEMWE,EEWE,EERELSB]
976: 8c b3 in r24, 0x1c ; 28
EEDR;//[MSB,--,--,--,--,--,--,LSB]
978: 8d b3 in r24, 0x1d ; 29
EEAR;
97a: 8e b3 in r24, 0x1e ; 30
97c: 9f b3 in r25, 0x1f ; 31
EEARL;//[EEAR7,EEAR6,EEAR5,EEAR4,EEAR3,EEAR2,EEAR1,EEAR0]
97e: 8e b3 in r24, 0x1e ; 30
EEARH;//[--,--,--,--,--,--,--,EEAR8]
980: 8f b3 in r24, 0x1f ; 31
982: 08 95 ret
00000984 <Flash_Init>:
}
void Flash_Init(void)
{
SPMCR;
984: 87 b7 in r24, 0x37 ; 55
986: 08 95 ret
00000988 <Interrupts_Init>:
}
void Interrupts_Init(void)
{
TIFR;//[OCF2,TOV2,ICF1,OCF1A,OCF1B,TOV1,--,TOV0]
988: 88 b7 in r24, 0x38 ; 56
TIMSK=0x10;//TIMSK=0x99;//[OCIE2,TOIE2,T1CIE1,OCIE1A,OCIE1B,TOIE1,--,TOIE0]
98a: 80 e1 ldi r24, 0x10 ; 16
98c: 89 bf out 0x39, r24 ; 57
GIFR;//[INTF1,INTF0,--,--,--,--,--,--]
98e: 8a b7 in r24, 0x3a ; 58
GIMSK;//[INT1,INT0,--,--,--,--,IVSEL,IVCE]
990: 8b b7 in r24, 0x3b ; 59
MCUCR;//[SE,SM2,SM1,SM0,ISC11,ISC10,ISC01,ISC00]
992: 85 b7 in r24, 0x35 ; 53
994: 08 95 ret
00000996 <Init_Device>:
}
// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
Reg_Init();
996: a3 df rcall .-186 ; 0x8de <Reg_Init>
Oscillator_Init();
998: a9 df rcall .-174 ; 0x8ec <Oscillator_Init>
Port_Init();
99a: ab df rcall .-170 ; 0x8f2 <Port_Init>
Timer_Init();
99c: b9 df rcall .-142 ; 0x910 <Timer_Init>
UART_Init();
99e: ce df rcall .-100 ; 0x93c <UART_Init>
IIC_Init();
9a0: d4 df rcall .-88 ; 0x94a <IIC_Init>
SPI_Init();
9a2: d9 df rcall .-78 ; 0x956 <SPI_Init>
ADC_Init();
9a4: dc df rcall .-72 ; 0x95e <ADC_Init>
Comparator_Init();
9a6: e5 df rcall .-54 ; 0x972 <Comparator_Init>
Interrupts_Init();
9a8: ef df rcall .-34 ; 0x988 <Interrupts_Init>
9aa: 08 95 ret
000009ac <DelayMs>:
#include "config.h"
#include "SOUND.h"
void DelayMs(uint ms)
{
9ac: ac 01 movw r20, r24
uint i;
for(i=0;i<ms;i++)
9ae: 20 e0 ldi r18, 0x00 ; 0
9b0: 30 e0 ldi r19, 0x00 ; 0
9b2: 24 17 cp r18, r20
9b4: 35 07 cpc r19, r21
9b6: 38 f4 brcc .+14 ; 0x9c6 <DelayMs+0x1a>
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
9b8: 80 ed ldi r24, 0xD0 ; 208
9ba: 97 e0 ldi r25, 0x07 ; 7
__asm__ volatile (
9bc: 01 97 sbiw r24, 0x01 ; 1
9be: f1 f7 brne .-4 ; 0x9bc <DelayMs+0x10>
9c0: 2f 5f subi r18, 0xFF ; 255
9c2: 3f 4f sbci r19, 0xFF ; 255
9c4: f6 cf rjmp .-20 ; 0x9b2 <DelayMs+0x6>
9c6: 08 95 ret
000009c8 <DelayUs>:
_delay_loop_2(8*250);
}
void DelayUs(uint us)
{
9c8: ac 01 movw r20, r24
uint i;
for(i=0;i<us;i++)
9ca: 20 e0 ldi r18, 0x00 ; 0
9cc: 30 e0 ldi r19, 0x00 ; 0
9ce: 24 17 cp r18, r20
9d0: 35 07 cpc r19, r21
9d2: 38 f4 brcc .+14 ; 0x9e2 <DelayUs+0x1a>
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
9d4: 82 e0 ldi r24, 0x02 ; 2
9d6: 90 e0 ldi r25, 0x00 ; 0
__asm__ volatile (
9d8: 01 97 sbiw r24, 0x01 ; 1
9da: f1 f7 brne .-4 ; 0x9d8 <DelayUs+0x10>
9dc: 2f 5f subi r18, 0xFF ; 255
9de: 3f 4f sbci r19, 0xFF ; 255
9e0: f6 cf rjmp .-20 ; 0x9ce <DelayUs+0x6>
9e2: 08 95 ret
000009e4 <alarm_n_short>:
_delay_loop_2(2);
}
/**************
void Beep_short(uchar num,uint frq) ////提示音输出函数,num提示音音响数,frq提示音频率
{
uchar i;
TCCR2=_BV(WGM21)|_BV(CS21)|_BV(CS20); //CTC模式,8M,32分频
OCR2=62500/frq;
TIMSK|=_BV(OCIE2); //比较匹配中断允许
for(i=0;i<num;i++)
{
DelayMs(20);
cli();
PORTB&=~_BV(PB2);
DelayMs(20);
sei();
}
TCCR2=0;
TIMSK&=~_BV(OCIE2); //比较匹配中断禁止
PORTB&=~_BV(PB2);
sei();
}
void Beep_middle(uchar num,uint frq) ////提示音输出函数,num提示音音响数,frq提示音频率
{
uchar i;
TCCR2=_BV(WGM21)|_BV(CS21)|_BV(CS20); //CTC模式,8M,32分频
OCR2=62500/frq;
TIMSK|=_BV(OCIE2); //比较匹配中断允许
for(i=0;i<num;i++)
{
DelayMs(100);
cli();
PORTB&=~_BV(PB2);
PORTB&=~_BV(PB2);
DelayMs(100);
sei();
}
TCCR2=0;
TIMSK&=~_BV(OCIE2); //比较匹配中断禁止
PORTB&=~_BV(PB2);
sei();
}
void Beep_long(uchar num,uint frq) ////提示音输出函数,num提示音音响数,frq提示音频率
{
uchar i;
TCCR2=_BV(WGM21)|_BV(CS21)|_BV(CS20); //CTC模式,8M,32分频
OCR2=62500/frq;
TIMSK=_BV(OCIE2); //比较匹配中断允许
for(i=0;i<num;i++)
{
DelayMs(3000);
cli();
PORTB&=~_BV(PB2);
PORTB&=~_BV(PB2);
DelayMs(3000);
sei();
}
TCCR2=0;
TIMSK=0;
PORTB&=~_BV(PB2);
sei();
}
***********/
void alarm_n_short(uchar n)
{
9e4: 1f 93 push r17
9e6: cf 93 push r28
9e8: 18 2f mov r17, r24
uchar i;
for(i=0;i<n;i++)
9ea: c0 e0 ldi r28, 0x00 ; 0
9ec: c8 17 cp r28, r24
9ee: 58 f4 brc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -