📄 capature.lis
字号:
.module Capature.c
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\AVRpractice\BOOK\定时器1\输入捕获\Capature.c
000A .dbsym e Table _Table A[10:10]c
000A _Data::
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\AVRpractice\BOOK\定时器1\输入捕获\Capature.c
000C .blkb 2
.area idata
000C 0000 .byte 0,0
.area data(ram, con, rel)
000E .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\AVRpractice\BOOK\定时器1\输入捕获\Capature.c
000E .dbsym e Data _Data A[4:4]c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\AVRpractice\BOOK\定时器1\输入捕获\Capature.c
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20,R21
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 14
0002 ; //***************FileName:Capature.C***************//
0002 ; //***************ICCAVR V6.30编译*****************//
0002 ;
0002 ; #include <io8535v.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ;
0002 ; //数码管字型表,对应0,1,2,3,4,5,6,7,8,9//
0002 ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0002 ; uchar Data[4]={0,0,0,0}; //显示初始值:0 0 0 0
0002 ; uint CNT1,CNT2,CNT; //定义捕获值
0002 ;
0002 ; void DelayMs(uint i) //Ms级延时,参数i为延时时间
0002 ; {uint j;
0002 .dbline 15
0002 ; for(;i!=0;i--)
0002 0AC0 rjmp L5
0004 L2:
0004 .dbline 16
0004 .dbline 16
0004 40E4 ldi R20,8000
0006 5FE1 ldi R21,31
0008 02C0 rjmp L9
000A L6:
000A .dbline 16
000A .dbline 16
000A .dbline 16
000A L7:
000A .dbline 16
000A 4150 subi R20,1
000C 5040 sbci R21,0
000E L9:
000E .dbline 16
000E 4030 cpi R20,0
0010 4507 cpc R20,R21
0012 D9F7 brne L6
0014 X0:
0014 .dbline 16
0014 L3:
0014 .dbline 15
0014 0150 subi R16,1
0016 1040 sbci R17,0
0018 L5:
0018 .dbline 15
0018 0030 cpi R16,0
001A 0107 cpc R16,R17
001C 99F7 brne L2
001E X1:
001E .dbline -2
001E .dbline 17
001E ; {for(j=8000;j!=0;j--) {;}}
001E ; }
001E L1:
001E 00D0 rcall pop_gset1
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r j 20 i
0022 .dbsym r i 16 i
0022 .dbend
0022 .dbfunc e Display _Display fV
0022 ; sel -> R20
0022 ; i -> R22
0022 ; p -> R10,R11
.even
0022 _Display::
0022 00D0 rcall push_gset3
0024 A02E mov R10,R16
0026 B12E mov R11,R17
0028 .dbline -1
0028 .dbline 20
0028 ;
0028 ; void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
0028 ; {uchar i,sel=0x01;
0028 .dbline 20
0028 41E0 ldi R20,1
002A .dbline 21
002A ; for(i=0;i<4;i++)
002A 6627 clr R22
002C 12C0 rjmp L14
002E L11:
002E .dbline 22
002E .dbline 22
002E 45BB out 0x15,R20
0030 .dbline 23
0030 E62F mov R30,R22
0032 FF27 clr R31
0034 EA0D add R30,R10
0036 FB1D adc R31,R11
0038 E081 ldd R30,z+0
003A FF27 clr R31
003C 80E0 ldi R24,<_Table
003E 90E0 ldi R25,>_Table
0040 E80F add R30,R24
0042 F91F adc R31,R25
0044 2080 ldd R2,z+0
0046 2BBA out 0x1b,R2
0048 .dbline 24
0048 02E0 ldi R16,2
004A 10E0 ldi R17,0
004C D9DF rcall _DelayMs
004E .dbline 25
004E 440F lsl R20
0050 .dbline 26
0050 L12:
0050 .dbline 21
0050 6395 inc R22
0052 L14:
0052 .dbline 21
0052 6430 cpi R22,4
0054 60F3 brlo L11
0056 .dbline -2
0056 .dbline 27
0056 ; {PORTC=sel; //选通最右边的数码管
0056 ; PORTA=Table[p[i]]; //送字型码
0056 ; DelayMs(2); //显示延时
0056 ; sel=sel<<1; //移位以显示前一位
0056 ; }
0056 ; }
0056 L10:
0056 00D0 rcall pop_gset3
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r sel 20 c
005A .dbsym r i 22 c
005A .dbsym r p 10 pc
005A .dbend
005A .dbfunc e Process _Process fV
005A ; p -> R20,R21
005A ; i -> R22,R23
.even
005A _Process::
005A 00D0 rcall push_gset2
005C 422F mov R20,R18
005E 532F mov R21,R19
0060 602F mov R22,R16
0062 712F mov R23,R17
0064 .dbline -1
0064 .dbline 32
0064 ;
0064 ; //计数值处理函数。参数i:捕获时间差;参数p:处理数据存放的数组名//
0064 ; //功能:此函数用于将计数值拆分为BCD码的千,百,十,一数据,用于查表显示//
0064 ; void Process(uint i,uchar *p)
0064 ; {p[0]=i/1000;
0064 .dbline 32
0064 28EE ldi R18,1000
0066 33E0 ldi R19,3
0068 062F mov R16,R22
006A 172F mov R17,R23
006C 00D0 rcall div16u
006E E42F mov R30,R20
0070 F52F mov R31,R21
0072 0083 std z+0,R16
0074 .dbline 33
0074 ; i=i%1000;
0074 28EE ldi R18,1000
0076 33E0 ldi R19,3
0078 062F mov R16,R22
007A 172F mov R17,R23
007C 00D0 rcall mod16u
007E 602F mov R22,R16
0080 712F mov R23,R17
0082 .dbline 34
0082 ; p[1]=i/100;
0082 24E6 ldi R18,100
0084 30E0 ldi R19,0
0086 00D0 rcall div16u
0088 E42F mov R30,R20
008A F52F mov R31,R21
008C 0183 std z+1,R16
008E .dbline 35
008E ; i=i%100;
008E 24E6 ldi R18,100
0090 30E0 ldi R19,0
0092 062F mov R16,R22
0094 172F mov R17,R23
0096 00D0 rcall mod16u
0098 602F mov R22,R16
009A 712F mov R23,R17
009C .dbline 36
009C ; p[2]=i/10;
009C 2AE0 ldi R18,10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -