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

📄 counter.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A4 F52F              mov R31,R21
 00A6 0283              std z+2,R16
 00A8                   .dbline 41
 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 42
 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 43
 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 46
 00C0           ; 
 00C0           ; void Init_IO(void)             //初始化I/O口
 00C0           ; {DDRA=0xff;                    //设置A口为推挽1输出
 00C0                   .dbline 46
 00C0 8FEF              ldi R24,255
 00C2 8ABB              out 0x1a,R24
 00C4                   .dbline 47
 00C4           ;  PORTA=0xff;
 00C4 8BBB              out 0x1b,R24
 00C6                   .dbline 48
 00C6           ;  DDRB=0x00;                    //设置B口为不带上拉电阻输入
 00C6 2224              clr R2
 00C8 27BA              out 0x17,R2
 00CA                   .dbline 49
 00CA           ;  PORTB=0x00;    
 00CA 28BA              out 0x18,R2
 00CC                   .dbline 50
 00CC           ;  DDRC=0xff;                    //设置C口为推挽1输出;             
 00CC 84BB              out 0x14,R24
 00CE                   .dbline 51
 00CE           ;  PORTC=0xff;
 00CE 85BB              out 0x15,R24
 00D0                   .dbline -2
 00D0                   .dbline 52
 00D0           ; }
 00D0           L16:
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbend
 00D2                   .dbfunc e Get_Key _Get_Key fV
                        .even
 00D2           _Get_Key::
 00D2                   .dbline -1
 00D2                   .dbline 55
 00D2           ; 
 00D2           ; void Get_Key(void)             //按键扫描函数
 00D2           ; {while((PINB&0x01)==0)         //若S1按下,置位加计数标志;
 00D2 06C0              rjmp L19
 00D4           L18:
 00D4                   .dbline 56
 00D4                   .dbline 56
 00D4 81E0              ldi R24,1
 00D6 80930100          sts _Key_Up,R24
 00DA                   .dbline 57
 00DA 00E0              ldi R16,<_Data
 00DC 10E0              ldi R17,>_Data
 00DE A1DF              rcall _Display
 00E0                   .dbline 57
 00E0           L19:
 00E0                   .dbline 55
 00E0 B09B              sbis 0x16,0
 00E2 F8CF              rjmp L18
 00E4 06C0              rjmp L22
 00E6           L21:
 00E6                   .dbline 59
 00E6                   .dbline 59
 00E6 81E0              ldi R24,1
 00E8 80930000          sts _Key_Down,R24
 00EC                   .dbline 60
 00EC 00E0              ldi R16,<_Data
 00EE 10E0              ldi R17,>_Data
 00F0 98DF              rcall _Display
 00F2                   .dbline 60
 00F2           L22:
 00F2                   .dbline 58
 00F2           ; {Key_Up=1;
 00F2           ;  Display(Data);}
 00F2           ;  while((PINB&0x02)==0)         //若S2按下,置位减计数标志; 
 00F2 B19B              sbis 0x16,1
 00F4 F8CF              rjmp L21
 00F6                   .dbline -2
 00F6                   .dbline 61
 00F6           ; {Key_Down=1;
 00F6           ;  Display(Data);}
 00F6           ; }
 00F6           L17:
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbend
 00F8                   .dbfunc e main _main fV
 00F8           ;              I -> <dead>
                        .even
 00F8           _main::
 00F8                   .dbline -1
 00F8                   .dbline 64
 00F8           ; 
 00F8           ; void main(void)
 00F8           ; {uchar I;
 00F8                   .dbline 65
 00F8           ;  Init_IO();                    //初始化I/O口
 00F8 E3DF              rcall _Init_IO
 00FA                   .dbline 66
 00FA           ;  PORTA=0xff;                   //点亮测试所有的数码管
 00FA 8FEF              ldi R24,255
 00FC 8BBB              out 0x1b,R24
 00FE                   .dbline 67
 00FE           ;  PORTC=0x00;                   
 00FE 2224              clr R2
 0100 25BA              out 0x15,R2
 0102                   .dbline 68
 0102           ;  DelayMs(3000);                //延时
 0102 08EB              ldi R16,3000
 0104 1BE0              ldi R17,11
 0106 7CDF              rcall _DelayMs
 0108                   .dbline 69
 0108           ;  PORTC=0xff;                   //数码管熄灭,进入计数状态 
 0108 8FEF              ldi R24,255
 010A 85BB              out 0x15,R24
 010C 37C0              rjmp L26
 010E           L25:
 010E                   .dbline 71
 010E           ;  while(1)
 010E           ;  {Get_Key();                   //按键扫描
 010E                   .dbline 71
 010E E1DF              rcall _Get_Key
 0110                   .dbline 72
 0110           ;   if(Key_Up==1)                //加计数处理
 0110 80910100          lds R24,_Key_Up
 0114 8130              cpi R24,1
 0116 81F4              brne L28
 0118                   .dbline 73
 0118           ;      {if(CNT!=9999)            //条件判断是否计数到9999
 0118                   .dbline 73
 0118 80910E00          lds R24,_CNT
 011C 90910F00          lds R25,_CNT+1
 0120 8F30              cpi R24,15
 0122 E7E2              ldi R30,39
 0124 9E07              cpc R25,R30
 0126 41F0              breq L30
 0128                   .dbline 74
 0128           ;           {CNT=CNT+1;            //计数值加1
 0128                   .dbline 74
 0128 0196              adiw R24,1
 012A 90930F00          sts _CNT+1,R25
 012E 80930E00          sts _CNT,R24
 0132                   .dbline 75
 0132           ;                Key_Up=0;}            //加计数标志复位
 0132 2224              clr R2
 0134 20920100          sts _Key_Up,R2
 0138                   .dbline 75
 0138           L30:
 0138                   .dbline 76
 0138           ;      }
 0138           L28:
 0138                   .dbline 77
 0138           ;   if(Key_Down==1)              //减计数处理
 0138 80910000          lds R24,_Key_Down
 013C 8130              cpi R24,1
 013E A1F4              brne L32
 0140                   .dbline 78
 0140           ;      {if(CNT!=0)               //条件判断是否计数到0000
 0140                   .dbline 78
 0140 20900E00          lds R2,_CNT
 0144 30900F00          lds R3,_CNT+1
 0148 2220              tst R2
 014A 11F4              brne X2
 014C 3320              tst R3
 014E 61F0              breq L34
 0150           X2:
 0150                   .dbline 79
 0150           ;           {CNT=CNT-1;            //计数值减一
 0150                   .dbline 79
 0150 80910E00          lds R24,_CNT
 0154 90910F00          lds R25,_CNT+1
 0158 0197              sbiw R24,1
 015A 90930F00          sts _CNT+1,R25
 015E 80930E00          sts _CNT,R24
 0162                   .dbline 80
 0162           ;                Key_Down=0;}          //减计数标志复位
 0162 2224              clr R2
 0164 20920000          sts _Key_Down,R2
 0168                   .dbline 80
 0168           L34:
 0168                   .dbline 81
 0168           ;        }
 0168           L32:
 0168                   .dbline 82
 0168 20E0              ldi R18,<_Data
 016A 30E0              ldi R19,>_Data
 016C 00910E00          lds R16,_CNT
 0170 10910F00          lds R17,_CNT+1
 0174 72DF              rcall _Process
 0176                   .dbline 83
 0176 00E0              ldi R16,<_Data
 0178 10E0              ldi R17,>_Data
 017A 53DF              rcall _Display
 017C                   .dbline 84
 017C           L26:
 017C                   .dbline 70
 017C C8CF              rjmp L25
 017E           X3:
 017E                   .dbline -2
 017E                   .dbline 85
 017E           ;   Process(CNT,Data);           //计数值处理
 017E           ;   Display(Data);               //动态扫描显示
 017E           ;  }
 017E           ; }
 017E           L24:
 017E                   .dbline 0 ; func end
 017E 0895              ret
 0180                   .dbsym l I 1 c
 0180                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第二章\第二章程序\IO端口的C语言编程\数码管显示设计\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 + -