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

📄 counter.lis

📁 proteus仿真实例大全
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Counter.C
                        .area data(ram, con, rel)
 0000           _Table::
 0000                   .blkb 2
                        .area idata
 0000 C0F9              .byte 192,249
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 A4B0              .byte 164,176
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 9992              .byte 153,146
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 82F8              .byte 130,248
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile F:\myavr\mydesign\seg_time\Counter.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 F:\myavr\mydesign\seg_time\Counter.C
 000C                   .blkb 2
                        .area idata
 000C 0000              .byte 0,0
                        .area data(ram, con, rel)
 000E                   .dbfile F:\myavr\mydesign\seg_time\Counter.C
 000E                   .dbsym e Data _Data A[4:4]c
 000E           _CNT::
 000E                   .blkb 2
                        .area idata
 000E 0000              .word 0
                        .area data(ram, con, rel)
 0010                   .dbfile F:\myavr\mydesign\seg_time\Counter.C
 0010                   .dbsym e CNT _CNT i
                        .area text(rom, con, rel)
 0000                   .dbfile F:\myavr\mydesign\seg_time\Counter.C
 0000                   .dbfunc e DelayMs _DelayMs fV
 0000           ;              j -> R20,R21
 0000           ;              i -> R16
                        .even
 0000           _DelayMs::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 17
 0002           ; 
 0002           ; //******************************FileName: Counter.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]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
 0002           ; uchar Data[4]={0,0,0,0};       //显示初始值:0 0 0 0
 0002           ; uint  CNT=0;                    //初始计数值:0 
 0002           ; uchar Key_Up;                  //加计数按键标志  
 0002           ; uchar Key_Down;                //减计数按键标志  
 0002           ; 
 0002           ; void DelayMs(uchar i)           //Ms级延时,参数i为延时时间
 0002           ; {uint j;
 0002                   .dbline 18
 0002           ;  for(;i!=0;i--)
 0002 0AC0              rjmp L5
 0004           L2:
 0004                   .dbline 19
 0004                   .dbline 19
 0004 4427              clr R20
 0006 5527              clr R21
 0008 02C0              rjmp L9
 000A           L6:
 000A                   .dbline 19
 000A           L7:
 000A                   .dbline 19
 000A 4F5F              subi R20,255  ; offset = 1
 000C 5F4F              sbci R21,255
 000E           L9:
 000E                   .dbline 19
 000E 4A3F              cpi R20,250
 0010 E0E0              ldi R30,0
 0012 5E07              cpc R21,R30
 0014 D0F3              brlo L6
 0016                   .dbline 19
 0016           L3:
 0016                   .dbline 18
 0016 0A95              dec R16
 0018           L5:
 0018                   .dbline 18
 0018 0023              tst R16
 001A A1F7              brne L2
 001C                   .dbline -2
 001C                   .dbline 20
 001C           ;   {for(j=0;j<250;j++);}
 001C           ; }
 001C           L1:
 001C 00D0              rcall pop_gset1
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r j 20 i
 0020                   .dbsym r i 16 c
 0020                   .dbend
 0020                   .dbfunc e Display _Display fV
 0020           ;            sel -> R20
 0020           ;              i -> R22
 0020           ;              p -> R10,R11
                        .even
 0020           _Display::
 0020 00D0              rcall push_gset3
 0022 A02E              mov R10,R16
 0024 B12E              mov R11,R17
 0026                   .dbline -1
 0026                   .dbline 23
 0026           ; 
 0026           ; void Display(uchar *p)         //动态显示函数,参数p为待显示的数组名
 0026           ; {uchar i,sel=0x01;           
 0026                   .dbline 23
 0026 41E0              ldi R20,1
 0028                   .dbline 24
 0028           ;  for(i=0;i<4;i++)
 0028 6627              clr R22
 002A 11C0              rjmp L14
 002C           L11:
 002C                   .dbline 25
 002C                   .dbline 25
 002C 45BB              out 0x15,R20
 002E                   .dbline 26
 002E E62F              mov R30,R22
 0030 FF27              clr R31
 0032 EA0D              add R30,R10
 0034 FB1D              adc R31,R11
 0036 E081              ldd R30,z+0
 0038 FF27              clr R31
 003A 80E0              ldi R24,<_Table
 003C 90E0              ldi R25,>_Table
 003E E80F              add R30,R24
 0040 F91F              adc R31,R25
 0042 2080              ldd R2,z+0
 0044 2BBA              out 0x1b,R2
 0046                   .dbline 27
 0046 02E0              ldi R16,2
 0048 DBDF              rcall _DelayMs
 004A                   .dbline 28
 004A 440F              lsl R20
 004C                   .dbline 29
 004C           L12:
 004C                   .dbline 24
 004C 6395              inc R22
 004E           L14:
 004E                   .dbline 24
 004E 6430              cpi R22,4
 0050 68F3              brlo L11
 0052                   .dbline -2
 0052                   .dbline 30
 0052           ;   {PORTC=sel;                  //选通最右边的数码管
 0052           ;    PORTA=Table[p[i]];          //送字型码
 0052           ;    DelayMs(2);                 //显示延时    
 0052           ;    sel=sel<<1;                 //移位以显示前一位
 0052           ;   }
 0052           ; }
 0052           L10:
 0052 00D0              rcall pop_gset3
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbsym r sel 20 c
 0056                   .dbsym r i 22 c
 0056                   .dbsym r p 10 pc
 0056                   .dbend
 0056                   .dbfunc e Process _Process fV
 0056           ;              p -> R20,R21
 0056           ;              i -> R22,R23
                        .even
 0056           _Process::
 0056 00D0              rcall push_gset2
 0058 422F              mov R20,R18
 005A 532F              mov R21,R19
 005C 602F              mov R22,R16
 005E 712F              mov R23,R17
 0060                   .dbline -1
 0060                   .dbline 36
 0060           ; 
 0060           ; //******************************计数值处理函数******************************//
 0060           ; //功能:此函数用于将计数值拆分为BCD码的千,百,十,一数据,用于查表显示//
 0060           ; //参数说明:参数i:计数值;参数p:处理数据存放的数组名//
 0060           ; void Process(uint i,uchar *p) 
 0060           ; {p[0]=i/1000;
 0060                   .dbline 36
 0060 28EE              ldi R18,1000
 0062 33E0              ldi R19,3
 0064 062F              mov R16,R22
 0066 172F              mov R17,R23
 0068 00D0              rcall div16u
 006A E42F              mov R30,R20
 006C F52F              mov R31,R21
 006E 0083              std z+0,R16
 0070                   .dbline 37
 0070           ;  i=i%1000;
 0070                   .dbline 38
 0070           ;  p[1]=i/100;
 0070 28EE              ldi R18,1000
 0072 33E0              ldi R19,3
 0074 062F              mov R16,R22
 0076 172F              mov R17,R23
 0078 00D0              rcall mod16u
 007A 602F              mov R22,R16
 007C 712F              mov R23,R17
 007E 24E6              ldi R18,100
 0080 30E0              ldi R19,0
 0082 00D0              rcall div16u
 0084 E42F              mov R30,R20
 0086 F52F              mov R31,R21
 0088 0183              std z+1,R16
 008A                   .dbline 39
 008A           ;  i=i%100;
 008A                   .dbline 40
 008A           ;  p[2]=i/10;
 008A 24E6              ldi R18,100
 008C 30E0              ldi R19,0
 008E 062F              mov R16,R22
 0090 172F              mov R17,R23
 0092 00D0              rcall mod16u
 0094 602F              mov R22,R16
 0096 712F              mov R23,R17
 0098 2AE0              ldi R18,10
 009A 30E0              ldi R19,0
 009C 00D0              rcall div16u
 009E E42F              mov R30,R20
 00A0 F52F              mov R31,R21
 00A2 0283              std z+2,R16

⌨️ 快捷键说明

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