📄 main.lis
字号:
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 + -