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

📄 timer.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Timer.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单片机系统开发实例稿\第二章\第二章程序\定时计数器的C语言编程\基于TC0的时钟设计\Timer.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单片机系统开发实例稿\第二章\第二章程序\定时计数器的C语言编程\基于TC0的时钟设计\Timer.C
 000C                   .blkb 2
                        .area idata
 000C 0000              .byte 0,0
                        .area data(ram, con, rel)
 000E                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第二章\第二章程序\定时计数器的C语言编程\基于TC0的时钟设计\Timer.C
 000E                   .dbsym e Data _Data A[4:4]c
 000E           _CNT::
 000E                   .blkb 1
                        .area idata
 000E 00                .byte 0
                        .area data(ram, con, rel)
 000F                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第二章\第二章程序\定时计数器的C语言编程\基于TC0的时钟设计\Timer.C
 000F                   .dbsym e CNT _CNT c
 000F           _Timer::
 000F                   .blkb 2
                        .area idata
 000F 0000              .byte 0,0
                        .area data(ram, con, rel)
 0011                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第二章\第二章程序\定时计数器的C语言编程\基于TC0的时钟设计\Timer.C
 0011                   .dbsym e Timer _Timer A[2:2]c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第二章\第二章程序\定时计数器的C语言编程\基于TC0的时钟设计\Timer.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 15
 0002           ; //***************FileName:Timer.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           ; uchar CNT=0;                   //初始计数值:0
 0002           ; uchar Timer[2]={0x00,0x00};    //初始时间00:00 
 0002           ; 
 0002           ; void DelayMs(uint i)           //Ms级延时,参数i为延时时间
 0002           ; {uint j;
 0002                   .dbline 16
 0002           ;  for(;i!=0;i--)
 0002 0AC0              rjmp L5
 0004           L2:
 0004                   .dbline 17
 0004                   .dbline 17
 0004 40E4              ldi R20,8000
 0006 5FE1              ldi R21,31
 0008 02C0              rjmp L9
 000A           L6:
 000A                   .dbline 17
 000A                   .dbline 17
 000A                   .dbline 17
 000A           L7:
 000A                   .dbline 17
 000A 4150              subi R20,1
 000C 5040              sbci R21,0
 000E           L9:
 000E                   .dbline 17
 000E 4030              cpi R20,0
 0010 4507              cpc R20,R21
 0012 D9F7              brne L6
 0014           X0:
 0014                   .dbline 17
 0014           L3:
 0014                   .dbline 16
 0014 0150              subi R16,1
 0016 1040              sbci R17,0
 0018           L5:
 0018                   .dbline 16
 0018 0030              cpi R16,0
 001A 0107              cpc R16,R17
 001C 99F7              brne L2
 001E           X1:
 001E                   .dbline -2
 001E                   .dbline 18
 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 21
 0028           ; 
 0028           ; void Display(uchar *p)         //动态显示函数,参数p为待显示的数组名
 0028           ; {uchar i,sel=0x01;           
 0028                   .dbline 21
 0028 41E0              ldi R20,1
 002A                   .dbline 22
 002A           ;  for(i=0;i<4;i++)
 002A 6627              clr R22
 002C 12C0              rjmp L14
 002E           L11:
 002E                   .dbline 23
 002E                   .dbline 23
 002E 48BB              out 0x18,R20
 0030                   .dbline 24
 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 25BA              out 0x15,R2
 0048                   .dbline 25
 0048 02E0              ldi R16,2
 004A 10E0              ldi R17,0
 004C D9DF              rcall _DelayMs
 004E                   .dbline 26
 004E 440F              lsl R20
 0050                   .dbline 27
 0050           L12:
 0050                   .dbline 22
 0050 6395              inc R22
 0052           L14:
 0052                   .dbline 22
 0052 6430              cpi R22,4
 0054 60F3              brlo L11
 0056                   .dbline -2
 0056                   .dbline 28
 0056           ;   {PORTB=sel;                  //选通最右边的数码管
 0056           ;    PORTC=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           ;             p2 -> R20,R21
 005A           ;             p1 -> 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 33
 0064           ; 
 0064           ; //计数值处理函数。参数p1:时间数组名;参数p2:显示数组名//
 0064           ; //功能:此函数用于将计数值拆分为BCD码的10分,分,10秒,秒//
 0064           ; void Process(uchar *p1,uchar *p2) 
 0064           ; {p2[0]=p1[0]/10;
 0064                   .dbline 33
 0064 1AE0              ldi R17,10
 0066 E62F              mov R30,R22
 0068 F72F              mov R31,R23
 006A 0081              ldd R16,z+0
 006C 00D0              rcall div8u
 006E E42F              mov R30,R20
 0070 F52F              mov R31,R21
 0072 0083              std z+0,R16
 0074                   .dbline 34
 0074           ;  p2[1]=p1[0]-p2[0]*10;

⌨️ 快捷键说明

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