📄 pulse_time.lis
字号:
0098 18F3 brlo L12
009A .dbline -2
009A .dbline 56
009A ; {
009A ; temp=count%10;
009A ; ledbuff[i]=table[temp];
009A ; count=count/10;
009A ; }
009A ; }
009A L11:
009A 0E940000 xcall pop_gset3
009E .dbline 0 ; func end
009E 0895 ret
00A0 .dbsym r temp 20 c
00A0 .dbsym r i 22 c
00A0 .dbsym r count 10 i
00A0 .dbend
00A0 .dbfunc e mcu_init _mcu_init fV
.even
00A0 _mcu_init::
00A0 .dbline -1
00A0 .dbline 59
00A0 ; //MCU初始化
00A0 ; void mcu_init()
00A0 ; {
00A0 .dbline 60
00A0 ; DDRA=0XFF;
00A0 8FEF ldi R24,255
00A2 8ABB out 0x1a,R24
00A4 .dbline 61
00A4 ; PORTA=0XFF;
00A4 8BBB out 0x1b,R24
00A6 .dbline 62
00A6 ; DDRD=0X3F;
00A6 8FE3 ldi R24,63
00A8 81BB out 0x11,R24
00AA .dbline 63
00AA ; DDRB=0XFF;
00AA 8FEF ldi R24,255
00AC 87BB out 0x17,R24
00AE .dbline 64
00AE ; PORTD=0XFF;
00AE 82BB out 0x12,R24
00B0 .dbline 65
00B0 ; PORTB=0XFF;//端口初始化
00B0 88BB out 0x18,R24
00B2 .dbline 66
00B2 ; TIMSK=0X21;//使能ICP捕捉中断;使能T/C0溢出中断
00B2 81E2 ldi R24,33
00B4 89BF out 0x39,R24
00B6 .dbline 67
00B6 ; TCCR0=0X02;
00B6 82E0 ldi R24,2
00B8 83BF out 0x33,R24
00BA .dbline 68
00BA ; TCCR1A=0X00;
00BA 2224 clr R2
00BC 2FBC out 0x2f,R2
00BE .dbline 69
00BE ; TCCR1B=0XC2;//8分频;捕捉最小单位1us
00BE 82EC ldi R24,194
00C0 8EBD out 0x2e,R24
00C2 .dbline 70
00C2 ; TCNT0=0;
00C2 22BE out 0x32,R2
00C4 .dbline 71
00C4 ; ICR1=0;
00C4 3324 clr R3
00C6 37BC out 0x27,R3
00C8 26BC out 0x26,R2
00CA .dbline 72
00CA ; TCNT1=0;
00CA 3DBC out 0x2d,R3
00CC 2CBC out 0x2c,R2
00CE .dbline -2
00CE .dbline 73
00CE ; }
00CE L16:
00CE .dbline 0 ; func end
00CE 0895 ret
00D0 .dbend
00D0 .dbfunc e main _main fV
.even
00D0 _main::
00D0 .dbline -1
00D0 .dbline 76
00D0 ; //主程序:测量ICP引脚上信号的周期
00D0 ; void main()
00D0 ; {
00D0 .dbline 77
00D0 ; mcu_init();
00D0 E7DF xcall _mcu_init
00D2 .dbline 78
00D2 ; SREG|=0X80;
00D2 7894 bset 7
00D4 .dbline 79
00D4 ; for(;;)
00D4 L18:
00D4 .dbline 80
00D4 ; {
00D4 .dbline 81
00D4 ; if((newcount&0xfff8)!=(oldcount&0xfff8))
00D4 80910200 lds R24,_oldcount
00D8 90910300 lds R25,_oldcount+1
00DC 887F andi R24,248
00DE E0910000 lds R30,_newcount
00E2 F0910100 lds R31,_newcount+1
00E6 E87F andi R30,248
00E8 E817 cp R30,R24
00EA F907 cpc R31,R25
00EC 41F0 breq L22
00EE .dbline 82
00EE ; {
00EE .dbline 83
00EE ; oldcount=newcount;
00EE 20900000 lds R2,_newcount
00F2 30900100 lds R3,_newcount+1
00F6 30920300 sts _oldcount+1,R3
00FA 20920200 sts _oldcount,R2
00FE .dbline 84
00FE ; }
00FE L22:
00FE .dbline 85
00FE 00910200 lds R16,_oldcount
0102 10910300 lds R17,_oldcount+1
0106 A7DF xcall _hextobcd
0108 .dbline 86
0108 85DF xcall _display
010A .dbline 87
010A .dbline 79
010A .dbline 79
010A E4CF xjmp L18
010C X0:
010C .dbline -2
010C L17:
010C .dbline 0 ; func end
010C 0895 ret
010E .dbend
010E .dbfunc e Icp_timer1 _Icp_timer1 fV
.even
010E _Icp_timer1::
010E 2A92 st -y,R2
0110 3A92 st -y,R3
0112 8A93 st -y,R24
0114 2FB6 in R2,0x3f
0116 2A92 st -y,R2
0118 .dbline -1
0118 .dbline 91
0118 ; hextobcd(oldcount);
0118 ; display();
0118 ; }
0118 ; }
0118 ; //捕捉中断处理程序
0118 ; void Icp_timer1()
0118 ; {
0118 .dbline 92
0118 ; newcount=ICR1;
0118 26B4 in R2,0x26
011A 37B4 in R3,0x27
011C 30920100 sts _newcount+1,R3
0120 20920000 sts _newcount,R2
0124 .dbline 93
0124 ; ICR1=0;
0124 2224 clr R2
0126 3324 clr R3
0128 37BC out 0x27,R3
012A 26BC out 0x26,R2
012C .dbline 94
012C ; TCNT1=0;
012C 3DBC out 0x2d,R3
012E 2CBC out 0x2c,R2
0130 .dbline 95
0130 ; TCCR1B=0XC2;
0130 82EC ldi R24,194
0132 8EBD out 0x2e,R24
0134 .dbline -2
0134 .dbline 96
0134 ; }
0134 L24:
0134 2990 ld R2,y+
0136 2FBE out 0x3f,R2
0138 8991 ld R24,y+
013A 3990 ld R3,y+
013C 2990 ld R2,y+
013E .dbline 0 ; func end
013E 1895 reti
0140 .dbend
0140 .dbfunc e Timer0 _Timer0 fV
.even
0140 _Timer0::
0140 8A93 st -y,R24
0142 9A93 st -y,R25
0144 8FB7 in R24,0x3f
0146 8A93 st -y,R24
0148 .dbline -1
0148 .dbline 99
0148 ; //方波产生中断程序
0148 ; void Timer0()
0148 ; {
0148 .dbline 100
0148 ; i++;
0148 80910600 lds R24,_i
014C 8F5F subi R24,255 ; addi 1
014E 80930600 sts _i,R24
0152 .dbline 101
0152 ; PORTA=i;//在PA口产生频率不同的方波
0152 8BBB out 0x1b,R24
0154 .dbline -2
0154 .dbline 103
0154 ;
0154 ; }
0154 L25:
0154 8991 ld R24,y+
0156 8FBF out 0x3f,R24
0158 9991 ld R25,y+
015A 8991 ld R24,y+
015C .dbline 0 ; func end
015C 1895 reti
015E .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0000 _newcount::
0000 .blkb 2
0002 .dbsym e newcount _newcount i
0002 _oldcount::
0002 .blkb 2
0004 .dbsym e oldcount _oldcount i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -