⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 capature.lis

📁 avr 单片机 应用开发 典型实例 CD
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 009E 30E0              ldi R19,0
 00A0 00D0              rcall div16u
 00A2 E42F              mov R30,R20
 00A4 F52F              mov R31,R21
 00A6 0283              std z+2,R16
 00A8                   .dbline 37
 00A8           ;  i=i%10;
 00A8 2AE0              ldi R18,10
 00AA 30E0              ldi R19,0
 00AC 062F              mov R16,R22
 00AE 172F              mov R17,R23
 00B0 00D0              rcall mod16u
 00B2 602F              mov R22,R16
 00B4 712F              mov R23,R17
 00B6                   .dbline 38
 00B6           ;  p[3]=i;
 00B6 E42F              mov R30,R20
 00B8 F52F              mov R31,R21
 00BA 6383              std z+3,R22
 00BC                   .dbline -2
 00BC                   .dbline 39
 00BC           ; }
 00BC           L15:
 00BC 00D0              rcall pop_gset2
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbsym r p 20 pc
 00C0                   .dbsym r i 22 i
 00C0                   .dbend
 00C0                   .dbfunc e Init_IO _Init_IO fV
                        .even
 00C0           _Init_IO::
 00C0                   .dbline -1
 00C0                   .dbline 42
 00C0           ; 
 00C0           ; void Init_IO(void)             //初始化I/O口
 00C0           ; {DDRA=0xff;                    //设置A口为推挽1输出
 00C0                   .dbline 42
 00C0 8FEF              ldi R24,255
 00C2 8ABB              out 0x1a,R24
 00C4                   .dbline 43
 00C4           ;  PORTA=0xff;
 00C4 8BBB              out 0x1b,R24
 00C6                   .dbline 44
 00C6           ;  DDRC=0xff;                    //设置C口为推挽1输出             
 00C6 84BB              out 0x14,R24
 00C8                   .dbline 45
 00C8           ;  PORTC=0xff;
 00C8 85BB              out 0x15,R24
 00CA                   .dbline 46
 00CA           ;  DDRD=0x00;                    //设置D口为不带上拉电阻输入
 00CA 2224              clr R2
 00CC 21BA              out 0x11,R2
 00CE                   .dbline 47
 00CE           ;  PORTD=0x00;    
 00CE 22BA              out 0x12,R2
 00D0                   .dbline -2
 00D0                   .dbline 48
 00D0           ; }
 00D0           L16:
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbend
 00D2                   .dbfunc e Init_Timer1 _Init_Timer1 fV
                        .even
 00D2           _Init_Timer1::
 00D2                   .dbline -1
 00D2                   .dbline 51
 00D2           ; 
 00D2           ; void Init_Timer1(void)         //初始化T/C1的输入捕获中断
 00D2           ; {TIMSK=TIMSK|0x20;             //输入捕获使能
 00D2                   .dbline 51
 00D2 89B7              in R24,0x39
 00D4 8062              ori R24,32
 00D6 89BF              out 0x39,R24
 00D8                   .dbline 52
 00D8           ;  TCCR1B=0x82;                  //输入捕获噪音清除使能,下降沿捕获,时钟8分频1uS计数一次。
 00D8 82E8              ldi R24,130
 00DA 8EBD              out 0x2e,R24
 00DC                   .dbline 53
 00DC           ;  TIFR=0x00;                    //清中断标志
 00DC 2224              clr R2
 00DE 28BE              out 0x38,R2
 00E0                   .dbline 54
 00E0           ;  SREG=SREG|0x80;               //全局中断开
 00E0 7894              bset 7
 00E2                   .dbline -2
 00E2                   .dbline 55
 00E2           ; } 
 00E2           L17:
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbend
 00E4                   .dbfunc e main _main fV
                        .even
 00E4           _main::
 00E4                   .dbline -1
 00E4                   .dbline 58
 00E4           ; 
 00E4           ; void main(void)
 00E4           ; {Init_IO();                    //初始化I/O口
 00E4                   .dbline 58
 00E4 EDDF              rcall _Init_IO
 00E6                   .dbline 59
 00E6           ;  PORTA=0xff;                   //点亮以测试所有的数码管
 00E6 8FEF              ldi R24,255
 00E8 8BBB              out 0x1b,R24
 00EA                   .dbline 60
 00EA           ;  PORTC=0x00;   
 00EA 2224              clr R2
 00EC 25BA              out 0x15,R2
 00EE                   .dbline 61
 00EE           ;  Init_Timer1();                
 00EE F1DF              rcall _Init_Timer1
 00F0                   .dbline 62
 00F0           ;  DelayMs(3000);                //延时
 00F0 08EB              ldi R16,3000
 00F2 1BE0              ldi R17,11
 00F4 85DF              rcall _DelayMs
 00F6                   .dbline 63
 00F6           ;  PORTC=0xff;                   //熄灭所有的数码管
 00F6 8FEF              ldi R24,255
 00F8 85BB              out 0x15,R24
 00FA 0AC0              rjmp L20
 00FC           L19:
 00FC                   .dbline 65
 00FC                   .dbline 65
 00FC 20E0              ldi R18,<_Data
 00FE 30E0              ldi R19,>_Data
 0100 00910000          lds R16,_CNT
 0104 10910100          lds R17,_CNT+1
 0108 A8DF              rcall _Process
 010A                   .dbline 66
 010A 00E0              ldi R16,<_Data
 010C 10E0              ldi R17,>_Data
 010E 89DF              rcall _Display
 0110                   .dbline 67
 0110           L20:
 0110                   .dbline 64
 0110 F5CF              rjmp L19
 0112           X2:
 0112                   .dbline -2
 0112                   .dbline 68
 0112           ;  while(1)
 0112           ;  {Process(CNT,Data);           //计数值处理
 0112           ;   Display(Data);               //动态扫描显示
 0112           ;  }
 0112           ; }
 0112           L18:
 0112                   .dbline 0 ; func end
 0112 0895              ret
 0114                   .dbend
                        .area vector(rom, abs)
                        .org 10
 000A 8AC0              rjmp _Capture
                        .area text(rom, con, rel)
 0114                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\AVRpractice\BOOK\定时器1\输入捕获\Capature.c
 0114                   .dbfunc e Capture _Capture fV
                        .even
 0114           _Capture::
 0114 2A92              st -y,R2
 0116 3A92              st -y,R3
 0118 4A92              st -y,R4
 011A 5A92              st -y,R5
 011C 2FB6              in R2,0x3f
 011E 2A92              st -y,R2
 0120                   .dbline -1
 0120                   .dbline 72
 0120           ; 
 0120           ; #pragma interrupt_handler Capture:6
 0120           ; void Capture(void)
 0120           ; {CNT2=CNT2+ICR1L;              //CNT2存放当前捕获值
 0120                   .dbline 72
 0120 26B4              in R2,0x26
 0122 3324              clr R3
 0124 40900200          lds R4,_CNT2
 0128 50900300          lds R5,_CNT2+1
 012C 420C              add R4,R2
 012E 531C              adc R5,R3
 0130 50920300          sts _CNT2+1,R5
 0134 40920200          sts _CNT2,R4
 0138                   .dbline 73
 0138           ;  CNT2=(CNT2<<8)+ICR1H;
 0138 27B4              in R2,0x27
 013A 342C              mov R3,R4
 013C 30920300          sts _CNT2+1,R3
 0140 20920200          sts _CNT2,R2
 0144                   .dbline 74
 0144           ;  CNT=CNT2-CNT1;                //CNT1存放上次捕获值
 0144 20900400          lds R2,_CNT1
 0148 30900500          lds R3,_CNT1+1
 014C 40900200          lds R4,_CNT2
 0150 50900300          lds R5,_CNT2+1
 0154 4218              sub R4,R2
 0156 5308              sbc R5,R3
 0158 50920100          sts _CNT+1,R5
 015C 40920000          sts _CNT,R4
 0160                   .dbline 75
 0160           ;  CNT1=CNT2;                    //CNT存放两次时间差
 0160 20900200          lds R2,_CNT2
 0164 30900300          lds R3,_CNT2+1
 0168 30920500          sts _CNT1+1,R3
 016C 20920400          sts _CNT1,R2
 0170                   .dbline -2
 0170                   .dbline 76
 0170           ; }
 0170           L22:
 0170 2990              ld R2,y+
 0172 2FBE              out 0x3f,R2
 0174 5990              ld R5,y+
 0176 4990              ld R4,y+
 0178 3990              ld R3,y+
 017A 2990              ld R2,y+
 017C                   .dbline 0 ; func end
 017C 1895              reti
 017E                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\AVRpractice\BOOK\定时器1\输入捕获\Capature.c
 0000           _CNT::
 0000                   .blkb 2
 0002                   .dbsym e CNT _CNT i
 0002           _CNT2::
 0002                   .blkb 2
 0004                   .dbsym e CNT2 _CNT2 i
 0004           _CNT1::
 0004                   .blkb 2
 0006                   .dbsym e CNT1 _CNT1 i

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -