📄 1.lis
字号:
042A ; time -> R20,R21
.even
042A _delay_ms::
042A 4A93 st -y,R20
042C 5A93 st -y,R21
042E A801 movw R20,R16
0430 .dbline -1
0430 .dbline 37
0430 ; }
0430 ;
0430 ; /*****************************************/
0430 ; void delay_ms(uint time)
0430 ; {
0430 05C0 xjmp L37
0432 L36:
0432 .dbline 39
0432 ; while(time!=0)
0432 ; {
0432 .dbline 40
0432 ; delay_us(1000);
0432 08EE ldi R16,1000
0434 13E0 ldi R17,3
0436 F1DF xcall _delay_us
0438 .dbline 41
0438 ; time--;
0438 4150 subi R20,1
043A 5040 sbci R21,0
043C .dbline 42
043C ; }
043C L37:
043C .dbline 38
043C 4030 cpi R20,0
043E 4507 cpc R20,R21
0440 C1F7 brne L36
0442 X6:
0442 .dbline -2
0442 L35:
0442 .dbline 0 ; func end
0442 5991 ld R21,y+
0444 4991 ld R20,y+
0446 0895 ret
0448 .dbsym r time 20 i
0448 .dbend
0448 .dbfunc e port_init _port_init fV
.even
0448 _port_init::
0448 .dbline -1
0448 .dbline 50
0448 ; }
0448 ;
0448 ;
0448 ;
0448 ;
0448 ; //端口初始化
0448 ; void port_init(void)
0448 ; {
0448 .dbline 51
0448 ; PORTA = 0x00;
0448 2224 clr R2
044A 2BBA out 0x1b,R2
044C .dbline 52
044C ; DDRA = 0x00;
044C 2ABA out 0x1a,R2
044E .dbline 53
044E ; PORTB = 0x00;
044E 28BA out 0x18,R2
0450 .dbline 54
0450 ; DDRB = 0x00;
0450 27BA out 0x17,R2
0452 .dbline 55
0452 ; PORTC = 0x0f; //m103 output only
0452 8FE0 ldi R24,15
0454 85BB out 0x15,R24
0456 .dbline 56
0456 ; DDRC = 0x0f;
0456 84BB out 0x14,R24
0458 .dbline 57
0458 ; PORTD = 0xff;
0458 8FEF ldi R24,255
045A 82BB out 0x12,R24
045C .dbline 58
045C ; DDRD = 0x00;
045C 21BA out 0x11,R2
045E .dbline -2
045E L39:
045E .dbline 0 ; func end
045E 0895 ret
0460 .dbend
0460 .dbfunc e timer1_init _timer1_init fV
.even
0460 _timer1_init::
0460 .dbline -1
0460 .dbline 64
0460 ; }
0460 ;
0460 ;
0460 ; //定时T1初始化
0460 ; void timer1_init(void)
0460 ; {
0460 .dbline 65
0460 ; TCCR1B = 0x00;//停止定时器
0460 2224 clr R2
0462 2EBC out 0x2e,R2
0464 .dbline 66
0464 ; TIMSK |= 0x04;//中断允许
0464 89B7 in R24,0x39
0466 8460 ori R24,4
0468 89BF out 0x39,R24
046A .dbline 67
046A ; TCNT1H = 0xFC; //重装值高位
046A 8CEF ldi R24,252
046C 8DBD out 0x2d,R24
046E .dbline 68
046E ; TCNT1L = 0x2F; //重装值低位
046E 8FE2 ldi R24,47
0470 8CBD out 0x2c,R24
0472 .dbline 70
0472 ;
0472 ; TCCR1A = 0x00;
0472 2FBC out 0x2f,R2
0474 .dbline 71
0474 ; TCCR1B = 0x05;//启动定时器
0474 85E0 ldi R24,5
0476 8EBD out 0x2e,R24
0478 .dbline -2
0478 L40:
0478 .dbline 0 ; func end
0478 0895 ret
047A .dbend
.area vector(rom, abs)
.org 32
0020 0C943D02 jmp _timer1_ovf_isr
.area text(rom, con, rel)
047A .dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
047A .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
047A _timer1_ovf_isr::
047A 0A92 st -y,R0
047C 1A92 st -y,R1
047E 2A92 st -y,R2
0480 3A92 st -y,R3
0482 4A92 st -y,R4
0484 5A92 st -y,R5
0486 6A92 st -y,R6
0488 7A92 st -y,R7
048A 8A92 st -y,R8
048C 9A92 st -y,R9
048E 0A93 st -y,R16
0490 1A93 st -y,R17
0492 2A93 st -y,R18
0494 3A93 st -y,R19
0496 8A93 st -y,R24
0498 9A93 st -y,R25
049A AA93 st -y,R26
049C BA93 st -y,R27
049E EA93 st -y,R30
04A0 FA93 st -y,R31
04A2 0FB6 in R0,0x3f
04A4 0A92 st -y,R0
04A6 .dbline -1
04A6 .dbline 78
04A6 ; }
04A6 ;
04A6 ;
04A6 ; //定时器T1溢出中断服务程序
04A6 ; #pragma interrupt_handler timer1_ovf_isr:9
04A6 ; void timer1_ovf_isr(void)
04A6 ; {
04A6 .dbline 79
04A6 ; TCNT1H = 0xFC; //重装值高位
04A6 8CEF ldi R24,252
04A8 8DBD out 0x2d,R24
04AA .dbline 80
04AA ; TCNT1L = 0x2F; //重装值低位
04AA 8FE2 ldi R24,47
04AC 8CBD out 0x2c,R24
04AE .dbline 81
04AE ; CLI();
04AE F894 cli
04B0 .dbline 82
04B0 ; adc_rel=0;
04B0 2224 clr R2
04B2 3324 clr R3
04B4 30921200 sts _adc_rel+1,R3
04B8 20921100 sts _adc_rel,R2
04BC .dbline 83
04BC ; adc_old=0;
04BC 30920D00 sts _adc_old+1,R3
04C0 20920C00 sts _adc_old,R2
04C4 .dbline 84
04C4 ; if(adc_mux<3)
04C4 80911000 lds R24,_adc_mux
04C8 8330 cpi R24,3
04CA 20F4 brsh L42
04CC X7:
04CC .dbline 85
04CC ; adc_mux++;//递增
04CC 8F5F subi R24,255 ; addi 1
04CE 80931000 sts _adc_mux,R24
04D2 03C0 xjmp L43
04D4 L42:
04D4 .dbline 87
04D4 ; else
04D4 ; adc_mux=0;
04D4 2224 clr R2
04D6 20921000 sts _adc_mux,R2
04DA L43:
04DA .dbline 88
04DA ; SEI();
04DA 7894 sei
04DC .dbline 89
04DC ; miao++;
04DC 80910A00 lds R24,_miao
04E0 8F5F subi R24,255 ; addi 1
04E2 80930A00 sts _miao,R24
04E6 .dbline 90
04E6 ; if(miao==350)
04E6 8E35 cpi R24,94
04E8 19F4 brne L44
04EA X8:
04EA .dbline 93
04EA ;
04EA ; //LCD_write_string(9,1,Format(miao,"00"));
04EA ; {stop();
04EA .dbline 93
04EA D0D0 xcall _stop
04EC .dbline 94
04EC ; TCCR1B = 0x00;//停止定时器
04EC 2224 clr R2
04EE 2EBC out 0x2e,R2
04F0 .dbline 95
04F0 ; }
04F0 L44:
04F0 .dbline -2
04F0 L41:
04F0 .dbline 0 ; func end
04F0 0990 ld R0,y+
04F2 0FBE out 0x3f,R0
04F4 F991 ld R31,y+
04F6 E991 ld R30,y+
04F8 B991 ld R27,y+
04FA A991 ld R26,y+
04FC 9991 ld R25,y+
04FE 8991 ld R24,y+
0500 3991 ld R19,y+
0502 2991 ld R18,y+
0504 1991 ld R17,y+
0506 0991 ld R16,y+
0508 9990 ld R9,y+
050A 8990 ld R8,y+
050C 7990 ld R7,y+
050E 6990 ld R6,y+
0510 5990 ld R5,y+
0512 4990 ld R4,y+
0514 3990 ld R3,y+
0516 2990 ld R2,y+
0518 1990 ld R1,y+
051A 0990 ld R0,y+
051C 1895 reti
051E .dbend
051E .dbfunc e adc_init _adc_init fV
.even
051E _adc_init::
051E .dbline -1
051E .dbline 101
051E ; }
051E ;
051E ;
051E ;
051E ; void adc_init(void)
051E ; {
051E .dbline 103
051E ; //adc转换初始化
051E ; ADCSRA = 0x00; //禁止AD转换
051E 2224 clr R2
0520 26B8 out 0x6,R2
0522 .dbline 105
0522 ; //ADMUX = 0xC1; //通道1 1100 0001
0522 ; ADMUX =(1<<REFS1)|(1<<REFS0)|(adc_mux&0x1f);//选择内部AVCC为基准
0522 80911000 lds R24,_adc_mux
0526 8F71 andi R24,31
0528 806C ori R24,192
052A 87B9 out 0x7,R24
052C .dbline 106
052C ; SFIOR |= 0x00;
052C 20B6 in R2,0x30
052E 20BE out 0x30,R2
0530 .dbline 107
0530 ; ACSR = 0x80; //禁止模拟比较器
0530 80E8 ldi R24,128
0532 88B9 out 0x8,R24
0534 .dbline 108
0534 ; ADCSRA |= 0xEE; //1110 1110
0534 86B1 in R24,0x6
0536 8E6E ori R24,238
0538 86B9 out 0x6,R24
053A .dbline 109
053A ; ADCSRA|=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
053A 86B1 in R24,0x6
053C 8E6E ori R24,238
053E 86B9 out 0x6,R24
0540 .dbline -2
0540 L46:
0540 .dbline 0 ; func end
0540 0895 ret
0542 .dbend
0542 .dbfunc e ADCtoBCD _ADCtoBCD fV
0542 ; i -> <dead>
0542 ; temp -> R10,R11
.even
0542 _ADCtoBCD::
0542 0E940000 xcall push_xgsetF03C
0546 5801 movw R10,R16
0548 2297 sbiw R28,2
054A .dbline -1
054A .dbline 115
054A ; }
054A ;
054A ;
054A ; //ADC结果转换成电压值
054A ; void ADCtoBCD(unsigned int temp)
054A ; {
054A .dbline 118
054A ; unsigned char i;
054A ;
054A ; temp=(unsigned int)(((unsigned long)((unsigned long)temp*Vref))/0x3ff);
054A 1501 movw R2,R10
054C 4424 clr R4
054E 5524 clr R5
0550 40E0 ldi R20,0
0552 5AE0 ldi R21,10
0554 60E0 ldi R22,0
0556 70E0 ldi R23,0
0558 5A92 st -y,R5
055A 4A92 st -y,R4
055C 3A92 st -y,R3
055E 2A92 st -y,R2
0560 8A01 movw R16,R20
0562 9B01 movw R18,R22
0564 0E940000 xcall empy32u
0568 4FEF ldi R20,255
056A 53E0 ldi R21,3
056C 60E0 ldi R22,0
056E 70E0 ldi R23,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -