📄 cycle_1.lis
字号:
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 55{
; /******************************
; MCU初始化
; ******************************/
; void mcu_init(void)
; {
009E .dbline 56
; DDRD=0x3f;
009E 8FE3 ldi R24,63
00A0 81BB out 0x11,R24
00A2 .dbline 57
; DDRB=0xff;
00A2 8FEF ldi R24,255
00A4 87BB out 0x17,R24
00A6 .dbline 58
; PORTD=0xff;
00A6 82BB out 0x12,R24
00A8 .dbline 59
; PORTB=0xff;//端口初始化
00A8 88BB out 0x18,R24
00AA .dbline 60
; TIMSK =0x08;//使能T1捕捉中断
00AA 88E0 ldi R24,8
00AC 89BF out 0x39,R24
00AE .dbline 61
; TCCR1A=0x00;
00AE 2224 clr R2
00B0 2FBC out 0x2f,R2
00B2 .dbline 62
; TCCR1B=0xC2;//CK/8,捕捉周期的单位为1us
00B2 82EC ldi R24,194
00B4 8EBD out 0x2e,R24
00B6 .dbline 63
; ICR1=0;
00B6 3324 clr R3
00B8 30924500 sts 68+1,R3
00BC 20924400 sts 68,R2
00C0 .dbline 64
; TCNT1=0;
00C0 30924D00 sts 76+1,R3
00C4 20924C00 sts 76,R2
00C8 .dbline 65}
; }
00C8 L16:
00C8 0895 ret
00CA .dbfunc s main _main fI
; y -> y+4
; x -> y+0
; n -> R10
.even
00CA _main::
00CA 2897 sbiw R28,8
00CC .dbline 70{
; /************************************************
; 主程序:测量ICP引脚上信号的占空比
; ************************************************/
; void main()
; {
00CC .dbline 73
; unsigned char n;
; unsigned long x,y;
; mcu_init();
00CC E8DF rcall _mcu_init
00CE .dbline 74
; SREG|=0x80; //使能全局中断
00CE 7894 bset 7
00D0 .dbline 75
; for(;;)
00D0 L18:
00D0 .dbline 76
; {
00D0 .dbline 77
; x=count_h*100;
00D0 30910100 lds R19,_count_h+1
00D4 20910000 lds R18,_count_h
00D8 04E6 ldi R16,100
00DA 10E0 ldi R17,0
00DC 00D0 rcall mpy16s
00DE 202E mov R2,R16
00E0 312E mov R3,R17
00E2 4424 clr R4
00E4 5524 clr R5
00E6 EC2F mov R30,R28
00E8 FD2F mov R31,R29
00EA 2082 std z+0,R2
00EC 3182 std z+1,R3
00EE 4282 std z+2,R4
00F0 5382 std z+3,R5
00F2 .dbline 78
; y=count_l+count_h;
00F2 30900100 lds R3,_count_h+1
00F6 20900000 lds R2,_count_h
00FA 50900300 lds R5,_count_l+1
00FE 40900200 lds R4,_count_l
0102 420C add R4,R2
0104 531C adc R5,R3
0106 242C mov R2,R4
0108 352C mov R3,R5
010A 4424 clr R4
010C 5524 clr R5
010E 2482 std z+4,R2
0110 3582 std z+5,R3
0112 4682 std z+6,R4
0114 5782 std z+7,R5
0116 .dbline 79
; n=x/y; //计算占空比
0116 6080 ldd R6,z+0
0118 7180 ldd R7,z+1
011A 8280 ldd R8,z+2
011C 9380 ldd R9,z+3
011E 5A92 st -y,R5
0120 4A92 st -y,R4
0122 3A92 st -y,R3
0124 2A92 st -y,R2
0126 062D mov R16,R6
0128 172D mov R17,R7
012A 282D mov R18,R8
012C 392D mov R19,R9
012E 00D0 rcall div32u
0130 A02E mov R10,R16
0132 .dbline 80
; hextobcd(n);
0132 1127 clr R17
0134 8CDF rcall _hextobcd
0136 .dbline 81
; display(); //显示测量值
0136 6EDF rcall _display
0138 .dbline 82
; }
0138 .dbline 75
0138 .dbline 75
0138 CBCF rjmp L18
013A X0:
013A L17:
013A 2896 adiw R28,8
013C 0895 ret
013E .dbline 76}
013E .dbsym l y 4 l
013E .dbsym l x 0 l
013E .dbsym r n 10 c
013E .dbfunc s Icp_timer1 _Icp_timer1 fI
.even
013E _Icp_timer1::
013E 2A92 st -y,R2
0140 3A92 st -y,R3
0142 8A93 st -y,R24
0144 2FB6 in R2,0x3f
0146 2A92 st -y,R2
0148 .dbline 88{
; }
; /**************************************
; 捕捉中断处理程序
; **************************************/
; void Icp_timer1(void)
; {
0148 .dbline 89
; if (TCCR1B&0x40)
0148 2EB4 in R2,0x2e
014A 26FE sbrs R2,6
014C 07C0 rjmp L23
014E .dbline 90
; count_l=ICR1; //脉冲低电平宽度
014E 24B4 in R2,0x24
0150 35B4 in R3,0x25
0152 30920300 sts _count_l+1,R3
0156 20920200 sts _count_l,R2
015A 06C0 rjmp L24
015C L23:
015C .dbline 92
; else
; count_h=ICR1; //脉冲高电平宽度
015C 24B4 in R2,0x24
015E 35B4 in R3,0x25
0160 30920100 sts _count_h+1,R3
0164 20920000 sts _count_h,R2
0168 L24:
0168 .dbline 93
; ICR1=0;
0168 2224 clr R2
016A 3324 clr R3
016C 30924500 sts 68+1,R3
0170 20924400 sts 68,R2
0174 .dbline 94
; TCNT1=0;
0174 30924D00 sts 76+1,R3
0178 20924C00 sts 76,R2
017C .dbline 95
; TCCR1B^=0x40;
017C 80E4 ldi R24,64
017E 2EB4 in R2,0x2e
0180 2826 eor R2,R24
0182 2EBC out 0x2e,R2
0184 .dbline 96}
; }
0184 L22:
0184 2990 ld R2,y+
0186 2FBE out 0x3f,R2
0188 8991 ld R24,y+
018A 3990 ld R3,y+
018C 2990 ld R2,y+
018E 1895 reti
.area bss(ram, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle_1.c
0000 _count_h::
0000 .blkb 2
0002 .dbsym s count_h _count_h i
0002 _count_l::
0002 .blkb 2
0004 .dbsym s count_l _count_l i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -