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

📄 counter.lis

📁 proteus仿真实例大全
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A4                   .dbline 41
 00A4           ;  i=i%10;
 00A4                   .dbline 42
 00A4           ;  p[3]=i;
 00A4 2AE0              ldi R18,10
 00A6 30E0              ldi R19,0
 00A8 062F              mov R16,R22
 00AA 172F              mov R17,R23
 00AC 00D0              rcall mod16u
 00AE 602F              mov R22,R16
 00B0 712F              mov R23,R17
 00B2 E42F              mov R30,R20
 00B4 F52F              mov R31,R21
 00B6 6383              std z+3,R22
 00B8                   .dbline -2
 00B8                   .dbline 43
 00B8           ; }
 00B8           L15:
 00B8 00D0              rcall pop_gset2
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbsym r p 20 pc
 00BC                   .dbsym r i 22 i
 00BC                   .dbend
 00BC                   .dbfunc e Init_IO _Init_IO fV
                        .even
 00BC           _Init_IO::
 00BC                   .dbline -1
 00BC                   .dbline 46
 00BC           ; 
 00BC           ; void Init_IO(void)             //初始化I/O口
 00BC           ; {DDRA=0xff;                    //设置A口为推挽1输出
 00BC                   .dbline 46
 00BC 8FEF              ldi R24,255
 00BE 8ABB              out 0x1a,R24
 00C0                   .dbline 47
 00C0           ;  PORTA=0xff;
 00C0 8BBB              out 0x1b,R24
 00C2                   .dbline 48
 00C2           ;  DDRB=0x00;                    //设置B口为不带上拉电阻输入
 00C2 2224              clr R2
 00C4 27BA              out 0x17,R2
 00C6                   .dbline 49
 00C6           ;  PORTB=0x00;    
 00C6 28BA              out 0x18,R2
 00C8                   .dbline 50
 00C8           ;  DDRC=0xff;                    //设置C口为推挽1输出;             
 00C8 84BB              out 0x14,R24
 00CA                   .dbline 51
 00CA           ;  PORTC=0xff;
 00CA 85BB              out 0x15,R24
 00CC                   .dbline -2
 00CC                   .dbline 52
 00CC           ; }
 00CC           L16:
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbend
 00CE                   .dbfunc e Get_Key _Get_Key fV
                        .even
 00CE           _Get_Key::
 00CE                   .dbline -1
 00CE                   .dbline 55
 00CE           ; 
 00CE           ; void Get_Key(void)             //按键扫描函数
 00CE           ; {while((PINB&0x01)==0)         //若S1按下,置位加计数标志;
 00CE 06C0              rjmp L19
 00D0           L18:
 00D0                   .dbline 56
 00D0                   .dbline 56
 00D0                   .dbline 57
 00D0 81E0              ldi R24,1
 00D2 80930100          sts _Key_Up,R24
 00D6 00E0              ldi R16,<_Data
 00D8 10E0              ldi R17,>_Data
 00DA A2DF              rcall _Display
 00DC                   .dbline 58
 00DC           L19:
 00DC                   .dbline 55
 00DC B09B              sbis 0x16,0
 00DE F8CF              rjmp L18
 00E0 06C0              rjmp L22
 00E2           L21:
 00E2                   .dbline 60
 00E2                   .dbline 60
 00E2                   .dbline 61
 00E2 81E0              ldi R24,1
 00E4 80930000          sts _Key_Down,R24
 00E8 00E0              ldi R16,<_Data
 00EA 10E0              ldi R17,>_Data
 00EC 99DF              rcall _Display
 00EE                   .dbline 62
 00EE           L22:
 00EE                   .dbline 59
 00EE           ;  {Key_Up=1;
 00EE           ;  Display(Data);
 00EE           ;  }
 00EE           ;  while((PINB&0x02)==0)         //若S2按下,置位减计数标志; 
 00EE B19B              sbis 0x16,1
 00F0 F8CF              rjmp L21
 00F2                   .dbline -2
 00F2                   .dbline 63
 00F2           ;  {Key_Down=1;
 00F2           ;  Display(Data);
 00F2           ;  }
 00F2           ; }
 00F2           L17:
 00F2                   .dbline 0 ; func end
 00F2 0895              ret
 00F4                   .dbend
 00F4                   .dbfunc e main _main fV
 00F4           ;              I -> <dead>
                        .even
 00F4           _main::
 00F4                   .dbline -1
 00F4                   .dbline 66
 00F4           ; 
 00F4           ; void main(void)
 00F4           ; {uchar I;
 00F4                   .dbline 67
 00F4           ;  Init_IO();                    //初始化I/O口
 00F4 E3DF              rcall _Init_IO
 00F6                   .dbline 68
 00F6           ;  PORTA=0xff;                   //点亮测试所有的数码管
 00F6 8FEF              ldi R24,255
 00F8 8BBB              out 0x1b,R24
 00FA                   .dbline 69
 00FA           ;  PORTC=0x00;                   
 00FA 2224              clr R2
 00FC 25BA              out 0x15,R2
 00FE                   .dbline 71
 00FE           ;  //DelayMs(3000);                //延时
 00FE           ;  PORTC=0xff;                   //数码管熄灭,进入计数状态 
 00FE 85BB              out 0x15,R24
 0100 37C0              rjmp L26
 0102           L25:
 0102                   .dbline 73
 0102           ;  while(1)
 0102           ;  {Get_Key();                   //按键扫描
 0102                   .dbline 73
 0102 E5DF              rcall _Get_Key
 0104                   .dbline 74
 0104           ;   if(Key_Up==1)                //加计数处理
 0104 80910100          lds R24,_Key_Up
 0108 8130              cpi R24,1
 010A 81F4              brne L28
 010C                   .dbline 75
 010C           ;      {if(CNT!=9999)            //条件判断是否计数到9999
 010C                   .dbline 75
 010C 80910E00          lds R24,_CNT
 0110 90910F00          lds R25,_CNT+1
 0114 8F30              cpi R24,15
 0116 E7E2              ldi R30,39
 0118 9E07              cpc R25,R30
 011A 41F0              breq L30
 011C                   .dbline 76
 011C           ;           {CNT=CNT+1;            //计数值加1
 011C                   .dbline 76
 011C                   .dbline 77
 011C           ;                Key_Up=0;}            //加计数标志复位
 011C 0196              adiw R24,1
 011E 90930F00          sts _CNT+1,R25
 0122 80930E00          sts _CNT,R24
 0126 2224              clr R2
 0128 20920100          sts _Key_Up,R2
 012C                   .dbline 77
 012C           L30:
 012C                   .dbline 78
 012C           ;      }
 012C           L28:
 012C                   .dbline 79
 012C           ;   if(Key_Down==1)              //减计数处理
 012C 80910000          lds R24,_Key_Down
 0130 8130              cpi R24,1
 0132 A1F4              brne L32
 0134                   .dbline 80
 0134           ;      {if(CNT!=0)               //条件判断是否计数到0000
 0134                   .dbline 80
 0134 20900E00          lds R2,_CNT
 0138 30900F00          lds R3,_CNT+1
 013C 2220              tst R2
 013E 11F4              brne X0
 0140 3320              tst R3
 0142 61F0              breq L34
 0144           X0:
 0144                   .dbline 81
 0144           ;           {CNT=CNT-1;            //计数值减一
 0144                   .dbline 81
 0144                   .dbline 82
 0144           ;                Key_Down=0;}          //减计数标志复位
 0144 80910E00          lds R24,_CNT
 0148 90910F00          lds R25,_CNT+1
 014C 0197              sbiw R24,1
 014E 90930F00          sts _CNT+1,R25
 0152 80930E00          sts _CNT,R24
 0156 2224              clr R2
 0158 20920000          sts _Key_Down,R2
 015C                   .dbline 82
 015C           L34:
 015C                   .dbline 83
 015C           ;        }
 015C           L32:
 015C                   .dbline 84
 015C 20E0              ldi R18,<_Data
 015E 30E0              ldi R19,>_Data
 0160 00910E00          lds R16,_CNT
 0164 10910F00          lds R17,_CNT+1
 0168 76DF              rcall _Process
 016A                   .dbline 85
 016A 00E0              ldi R16,<_Data
 016C 10E0              ldi R17,>_Data
 016E 58DF              rcall _Display
 0170                   .dbline 86
 0170           L26:
 0170                   .dbline 72
 0170 C8CF              rjmp L25
 0172           X1:
 0172                   .dbline -2
 0172                   .dbline 87
 0172           ;   Process(CNT,Data);           //计数值处理
 0172           ;   Display(Data);               //动态扫描显示
 0172           ;  }
 0172           ; }
 0172           L24:
 0172                   .dbline 0 ; func end
 0172 0895              ret
 0174                   .dbsym l I 1 c
 0174                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\myavr\mydesign\seg_time\Counter.C
 0000           _Key_Down::
 0000                   .blkb 1
 0001                   .dbsym e Key_Down _Key_Down c
 0001           _Key_Up::
 0001                   .blkb 1
 0002                   .dbsym e Key_Up _Key_Up c

⌨️ 快捷键说明

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