📄 cycle.lis
字号:
0080 E80F add R30,R24
0082 F91F adc R31,R25
0084 0082 std z+0,R0
0086 .dbline 47
0086 2AE0 ldi R18,10
0088 30E0 ldi R19,0
008A 0A2D mov R16,R10
008C 1B2D mov R17,R11
008E 00D0 rcall div16u
0090 A02E mov R10,R16
0092 B12E mov R11,R17
0094 .dbline 48
0094 L13:
0094 .dbline 44
0094 6395 inc R22
0096 L15:
0096 .dbline 44
0096 6630 cpi R22,6
0098 F8F2 brlo L12
009A .dbline 49}
; {temp=count%10;
; ledbuff[i]=tabel[temp];
; count=count/10;
; }
; }
009A L11:
009A 00D0 rcall pop_gset3
009C 0895 ret
009E .dbsym r temp 20 c
009E .dbsym r i 22 c
009E .dbsym r count 10 i
009E .dbfunc s mcu_init _mcu_init fI
.even
009E _mcu_init::
009E .dbline 54{
; /******************************
; MCU初始化
; ******************************/
; void mcu_init(void)
; {
009E .dbline 55
; DDRD=0x3f;
009E 8FE3 ldi R24,63
00A0 81BB out 0x11,R24
00A2 .dbline 56
; DDRB=0xff;
00A2 8FEF ldi R24,255
00A4 87BB out 0x17,R24
00A6 .dbline 57
; PORTD=0xff;
00A6 82BB out 0x12,R24
00A8 .dbline 58
; PORTB=0xff;//端口初始化
00A8 88BB out 0x18,R24
00AA .dbline 59
; TIMSK =0x08;//使能T1捕捉中断
00AA 88E0 ldi R24,8
00AC 89BF out 0x39,R24
00AE .dbline 60
; TCCR1A=0x00;
00AE 2224 clr R2
00B0 2FBC out 0x2f,R2
00B2 .dbline 61
; TCCR1B=0xC2;//CK/8,捕捉周期的单位为1us
00B2 82EC ldi R24,194
00B4 8EBD out 0x2e,R24
00B6 .dbline 62
; ICR1=0;
00B6 3324 clr R3
00B8 30924500 sts 68+1,R3
00BC 20924400 sts 68,R2
00C0 .dbline 63
; TCNT1=0;
00C0 30924D00 sts 76+1,R3
00C4 20924C00 sts 76,R2
00C8 .dbline 64}
; }
00C8 L16:
00C8 0895 ret
00CA .dbfunc s main _main fI
.even
00CA _main::
00CA .dbline 69{
; /************************************************
; 主程序:测量ICP引脚上信号的周期
; ************************************************/
; void main()
; {
00CA .dbline 70
; mcu_init();
00CA E9DF rcall _mcu_init
00CC .dbline 71
; SREG|=0x80; //使能全局中断
00CC 7894 bset 7
00CE .dbline 72
; for(;;)
00CE L18:
00CE .dbline 73
; {
00CE .dbline 74
; if ((newcount&0xfff8)!=(oldcount&0xfff8))
00CE 90910300 lds R25,_oldcount+1
00D2 80910200 lds R24,_oldcount
00D6 887F andi R24,248
00D8 F0910100 lds R31,_newcount+1
00DC E0910000 lds R30,_newcount
00E0 E87F andi R30,248
00E2 E817 cp R30,R24
00E4 F907 cpc R31,R25
00E6 41F0 breq L22
00E8 .dbline 75
; {
00E8 .dbline 76
; oldcount=newcount;
00E8 30900100 lds R3,_newcount+1
00EC 20900000 lds R2,_newcount
00F0 30920300 sts _oldcount+1,R3
00F4 20920200 sts _oldcount,R2
00F8 .dbline 77
; }
00F8 L22:
00F8 .dbline 78
; hextobcd(oldcount);
00F8 10910300 lds R17,_oldcount+1
00FC 00910200 lds R16,_oldcount
0100 A6DF rcall _hextobcd
0102 .dbline 79
; display(); //显示测量值
0102 88DF rcall _display
0104 .dbline 80
; }
0104 .dbline 72
0104 .dbline 72
0104 E4CF rjmp L18
0106 X0:
0106 L17:
0106 0895 ret
0108 .dbline 73}
0108 .dbfunc s Icp_timer1 _Icp_timer1 fI
.even
0108 _Icp_timer1::
0108 2A92 st -y,R2
010A 3A92 st -y,R3
010C 8A93 st -y,R24
010E 2FB6 in R2,0x3f
0110 2A92 st -y,R2
0112 .dbline 86{
; }
; /**************************************
; 捕捉中断处理程序
; **************************************/
; void Icp_timer1(void)
; {
0112 .dbline 87
; newcount=ICR1;
0112 24B4 in R2,0x24
0114 35B4 in R3,0x25
0116 30920100 sts _newcount+1,R3
011A 20920000 sts _newcount,R2
011E .dbline 88
; ICR1=0;
011E 2224 clr R2
0120 3324 clr R3
0122 30924500 sts 68+1,R3
0126 20924400 sts 68,R2
012A .dbline 89
; TCNT1=0;
012A 30924D00 sts 76+1,R3
012E 20924C00 sts 76,R2
0132 .dbline 90
; TCCR1B=0xC2;
0132 82EC ldi R24,194
0134 8EBD out 0x2e,R24
0136 .dbline 91}
; }
0136 L24:
0136 2990 ld R2,y+
0138 2FBE out 0x3f,R2
013A 8991 ld R24,y+
013C 3990 ld R3,y+
013E 2990 ld R2,y+
0140 1895 reti
.area bss(ram, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle.c
0000 _newcount::
0000 .blkb 2
0002 .dbsym s newcount _newcount i
0002 _oldcount::
0002 .blkb 2
0004 .dbsym s oldcount _oldcount i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -