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

📄 main.lis

📁 ATmega16-ad1602
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 013E                   .dbline 52
 013E           ;      {
 013E                   .dbline 53
 013E           ;               delay_nms(10); //延时去抖,一般10-20ms
 013E 0AE0              ldi R16,10
 0140 10E0              ldi R17,0
 0142 00D0              rcall _delay_nms
 0144                   .dbline 54
 0144           ;               if( (PINA&0x04)==0 )   //再次确认按键是否按下,没有按下则退出
 0144 CA99              sbic 0x19,2
 0146 21C0              rjmp L11
 0148           X1:
 0148                   .dbline 55
 0148           ;                {
 0148 15C0              rjmp L14
 014A           L13:
 014A                   .dbline 57
 014A           ;                       while((PINA&0x04)==0)
 014A           ;               {
 014A                   .dbline 58
 014A           ;                          key_press_num++;
 014A 6395              inc R22
 014C                   .dbline 59
 014C           ;                          delay_nms(10);           //10x200=2000ms=2s 
 014C 0AE0              ldi R16,10
 014E 10E0              ldi R17,0
 0150 00D0              rcall _delay_nms
 0152                   .dbline 62
 0152           ;              //****************************长按键模式开始***********************
 0152           ;                       
 0152           ;                          if(key_press_num==100) //大约2s,进入长按键模式
 0152 6436              cpi R22,100
 0154 79F4              brne L16
 0156           X2:
 0156                   .dbline 63
 0156           ;                          {
 0156                   .dbline 64
 0156           ;                               key_press_num=0; 
 0156 6627              clr R22
 0158 0BC0              rjmp L19
 015A           L18:
 015A                   .dbline 66
 015A           ;                               while((PINA&0x04)==0)  //这里用于识别是否按键还在按下,如果按下执行相关动作,否则退出
 015A           ;                               {
 015A                   .dbline 67
 015A           ;                                if(num<1000)           //是否达到最大值
 015A 483E              cpi R20,232
 015C E3E0              ldi R30,3
 015E 5E07              cpc R21,R30
 0160 10F4              brsh L21
 0162           X3:
 0162                   .dbline 68
 0162           ;                                num=num+24;            //未到达最大值则加操作
 0162 485E              subi R20,232  ; offset = 24
 0164 5F4F              sbci R21,255
 0166           L21:
 0166                   .dbline 69
 0166           ;                                spi_tlc5615(num);  
 0166 8A01              movw R16,R20
 0168 00D0              rcall _spi_tlc5615
 016A                   .dbline 70
 016A           ;                                delay_nms(30); //用于调节长按循环操作的速度,可以自行调整此值以便达到最佳效果
 016A 0EE1              ldi R16,30
 016C 10E0              ldi R17,0
 016E 00D0              rcall _delay_nms
 0170                   .dbline 71
 0170           ;                               }
 0170           L19:
 0170                   .dbline 65
 0170 CA9B              sbis 0x19,2
 0172 F3CF              rjmp L18
 0174           X4:
 0174                   .dbline 72
 0174           ;                          }
 0174           L16:
 0174                   .dbline 73
 0174           ;                    }
 0174           L14:
 0174                   .dbline 56
 0174 CA9B              sbis 0x19,2
 0176 E9CF              rjmp L13
 0178           X5:
 0178                   .dbline 74
 0178           ;                    key_press_num=0;//防止累加造成错误识别
 0178 6627              clr R22
 017A                   .dbline 78
 017A           ;                        
 017A           ;              //****************************长按键模式结束***********************
 017A           ;                        
 017A           ;                        if(num<1000)
 017A 483E              cpi R20,232
 017C E3E0              ldi R30,3
 017E 5E07              cpc R21,R30
 0180 10F4              brsh L23
 0182           X6:
 0182                   .dbline 79
 0182           ;                        num=num+24;
 0182 485E              subi R20,232  ; offset = 24
 0184 5F4F              sbci R21,255
 0186           L23:
 0186                   .dbline 80
 0186           ;                        spi_tlc5615(num);
 0186 8A01              movw R16,R20
 0188 00D0              rcall _spi_tlc5615
 018A                   .dbline 82
 018A           ;                               
 018A           ;                }
 018A           L11:
 018A                   .dbline 83
 018A           ;      }
 018A           L9:
 018A                   .dbline 87
 018A           ;        
 018A           ;             
 018A           ;        
 018A           ;        if( (PINA&0x08)==0 )  //检测到减
 018A CB99              sbic 0x19,3
 018C 24C0              rjmp L25
 018E           X7:
 018E                   .dbline 88
 018E           ;      {
 018E                   .dbline 89
 018E           ;               delay_nms(10);     //延时去抖,一般10-20ms
 018E 0AE0              ldi R16,10
 0190 10E0              ldi R17,0
 0192 00D0              rcall _delay_nms
 0194                   .dbline 90
 0194           ;               if( (PINA&0x08)==0 )   //再次确认按键是否按下,没有按下则退出
 0194 CB99              sbic 0x19,3
 0196 1FC0              rjmp L27
 0198           X8:
 0198                   .dbline 91
 0198           ;                {
 0198 14C0              rjmp L30
 019A           L29:
 019A                   .dbline 93
 019A           ;                       while((PINA&0x08)==0)
 019A           ;               {
 019A                   .dbline 94
 019A           ;                       key_press_num++;
 019A 6395              inc R22
 019C                   .dbline 95
 019C           ;                       delay_nms(10);           //10x200=2000ms=2s 
 019C 0AE0              ldi R16,10
 019E 10E0              ldi R17,0
 01A0 00D0              rcall _delay_nms
 01A2                   .dbline 98
 01A2           ;             //****************************长按键模式开始************************
 01A2           ;                       
 01A2           ;                       if(key_press_num==100) //大约2s,进入长按键模式
 01A2 6436              cpi R22,100
 01A4 71F4              brne L32
 01A6           X9:
 01A6                   .dbline 99
 01A6           ;                        {
 01A6                   .dbline 100
 01A6           ;                               key_press_num=0; 
 01A6 6627              clr R22
 01A8 0AC0              rjmp L35
 01AA           L34:
 01AA                   .dbline 102
 01AA           ;                               while((PINA&0x08)==0)  //这里用于识别是否按键还在按下,如果按下执行相关动作,否则退出
 01AA           ;                               {
 01AA                   .dbline 103
 01AA           ;                               if(num>0)       //是否达到最大值
 01AA 4030              cpi R20,0
 01AC 4507              cpc R20,R21
 01AE 11F0              breq L37
 01B0           X10:
 01B0                   .dbline 104
 01B0           ;                                num=num-24;                    //未到达最大值则加操作
 01B0 4851              subi R20,24
 01B2 5040              sbci R21,0
 01B4           L37:
 01B4                   .dbline 110
 01B4           ;                                                                               //即时把显示数据处理,如果去掉下面2
 01B4           ;                                                               //句处理信息,实际上看不到渐变效果,
 01B4           ;                                                               //而是看到跳变效果
 01B4           ;                                                                               //用户可以自行屏蔽测试
 01B4           ;                                                                       //分解显示信息,如要显示68,则68/10=6  68%10=8
 01B4           ;                               spi_tlc5615(num);  
 01B4 8A01              movw R16,R20
 01B6 00D0              rcall _spi_tlc5615
 01B8                   .dbline 111
 01B8           ;                               delay_nms(30);  //用于调节长按循环操作的速度,可以自行调整此值以便达到最佳效果
 01B8 0EE1              ldi R16,30
 01BA 10E0              ldi R17,0
 01BC 00D0              rcall _delay_nms
 01BE                   .dbline 112
 01BE           ;                               }
 01BE           L35:
 01BE                   .dbline 101
 01BE CB9B              sbis 0x19,3
 01C0 F4CF              rjmp L34
 01C2           X11:
 01C2                   .dbline 113
 01C2           ;                         }
 01C2           L32:
 01C2                   .dbline 114
 01C2           ;                    }
 01C2           L30:
 01C2                   .dbline 92
 01C2 CB9B              sbis 0x19,3
 01C4 EACF              rjmp L29
 01C6           X12:
 01C6                   .dbline 115
 01C6           ;                        key_press_num=0;//防止累加造成错误识别
 01C6 6627              clr R22
 01C8                   .dbline 119
 01C8           ;                        
 01C8           ;              //****************************长按键模式结束***********************
 01C8           ;                        
 01C8           ;                        if(num>0)
 01C8 4030              cpi R20,0
 01CA 4507              cpc R20,R21
 01CC 11F0              breq L39
 01CE           X13:
 01CE                   .dbline 120
 01CE           ;                        num=num-24;
 01CE 4851              subi R20,24
 01D0 5040              sbci R21,0
 01D2           L39:
 01D2                   .dbline 121
 01D2           ;                        spi_tlc5615(num);
 01D2 8A01              movw R16,R20
 01D4 00D0              rcall _spi_tlc5615
 01D6                   .dbline 122
 01D6           ;                }
 01D6           L27:
 01D6                   .dbline 123
 01D6           ;      }
 01D6           L25:
 01D6                   .dbline 128
 01D6           ;        
 01D6           ;        
 01D6           ;        
 01D6           ;        
 01D6           ;       }
 01D6           L7:
 01D6                   .dbline 44
 01D6 A5CF              rjmp L6
 01D8           X14:
 01D8                   .dbline -2
 01D8           L5:
 01D8                   .dbline 0 ; func end
 01D8 2296              adiw R28,2
 01DA 0895              ret
 01DC                   .dbsym r tmp 10 i
 01DC                   .dbsym r i 10 i
 01DC                   .dbsym r key_press_num 22 c
 01DC                   .dbsym r num 20 i
 01DC                   .dbend
                        .area lit(rom, con, rel)
 0000           L4:
 0000 0000C842          .word 0x0,0x42c8
 0004           L3:
 0004 00007A44          .word 0x0,0x447a
                        .area data(ram, con, rel)
 0002                   .dbfile F:\file\数控电源3\ad_da\mydesign1\cfile\main.c
 0002           L1:
 0002                   .blkb 9
                        .area idata
 0002 30302E303030205600        .byte 48,48,46,48,48,48,32,'V,0
                        .area data(ram, con, rel)
 000B                   .dbfile F:\file\数控电源3\ad_da\mydesign1\cfile\main.c
 000B           ; }
 000B           ; 

⌨️ 快捷键说明

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