📄 led.s
字号:
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sts _JS_003+1,R3
sts _JS_003,R2
sts _JS_003+2+1,R5
sts _JS_003+2,R4
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sts _JS_003+1,R3
sts _JS_003,R2
sts _JS_003+2+1,R5
sts _JS_003+2,R4
xcall _TEST
.dbline -2
.dbline 143
; //display_times(); //TEST USE
;
;
;
; }
L5:
adiw R28,4
xcall pop_gset2
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e TEST _TEST fV
.even
_TEST::
xcall push_gset2
.dbline -1
.dbline 146
; /////////////////test/////////////////////////////////////
; void TEST()
; {
.dbline 148
; //LED_DISPLAY_V4=8; //TEST
; if (JS_003==10000)
ldi R20,16
ldi R21,39
ldi R22,0
ldi R23,0
lds R4,_JS_003+2
lds R5,_JS_003+2+1
lds R2,_JS_003
lds R3,_JS_003+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L7
.dbline 149
; {
.dbline 150
; LED_DISPLAY_V5=14;
ldi R24,14
sts _LED_DISPLAY_V5,R24
.dbline 152
;
; }
xjmp L8
L7:
.dbline 153
; else if (JS_003==20000)
ldi R20,32
ldi R21,78
ldi R22,0
ldi R23,0
lds R4,_JS_003+2
lds R5,_JS_003+2+1
lds R2,_JS_003
lds R3,_JS_003+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L9
.dbline 154
; {
.dbline 155
; JS_003=0;
.dbline 156
; LED_DISPLAY_V5=13;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _JS_003+1,R21
sts _JS_003,R20
sts _JS_003+2+1,R23
sts _JS_003+2,R22
ldi R24,13
sts _LED_DISPLAY_V5,R24
.dbline 157
; }
L9:
L8:
.dbline -2
.dbline 158
; }
L6:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer2_init _timer2_init fV
.even
_timer2_init::
.dbline -1
.dbline 165
; /////////////////////////timer2///////////////////////////////////////////////////////////////////
; //TIMER2 initialize - prescale:32
; // WGM: Normal
; // desired value: 10uSec
; // actual value: 10.000uSec (0.0%)
; void timer2_init(void)
; {
.dbline 166
; TCCR2 = 0x00; //stop
clr R2
out 0x25,R2
.dbline 167
; ASSR = 0x00; //set async mode
out 0x22,R2
.dbline 168
; TCNT2 = 0xFB; //setup
ldi R24,251
out 0x24,R24
.dbline 169
; OCR2 = 0x05;
ldi R24,5
out 0x23,R24
.dbline 170
; TCCR2 = 0x03; //start
ldi R24,3
out 0x25,R24
.dbline -2
.dbline 171
; }
L11:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 16
jmp _timer2_ovf_isr
.area text(rom, con, rel)
.dbfile D:\WORK\ELECTR~1\proteus\M167LE~1\c\led.c
.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
_timer2_ovf_isr::
st -y,R24
in R24,0x3f
st -y,R24
.dbline -1
.dbline 175
;
; #pragma interrupt_handler timer2_ovf_isr:5
; void timer2_ovf_isr(void) //10us
; {
.dbline 176
; TCNT2 = 0xFB; //reload counter value
ldi R24,251
out 0x24,R24
.dbline -2
.dbline 180
; //ICP_INT_JS();
; //ICP_INT_CLR_JS();
;
; }
L12:
ld R24,y+
out 0x3f,R24
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e KEY_CHK _KEY_CHK fV
.even
_KEY_CHK::
.dbline -1
.dbline 184
; /////////////////////////KEY_CHK/////////////////////////////////////////////////////////////
;
; void KEY_CHK()
; {
.dbline 187
;
;
; KEY_CHK_MODE(); // 调用 KEY_CHK_MODE
xcall _KEY_CHK_MODE
.dbline 188
; KEY_CHK_MENU(); // 调用 KEY_CHK_MENU
xcall _KEY_CHK_MENU
.dbline 189
; KEY_CHK_UP(); // 调用 KEY_CHK_UP
xcall _KEY_CHK_UP
.dbline 190
; KEY_CHK_DOWN(); // 调用 KEY_CHK_DOWN
.dbline -2
.dbline 191
; }
L13:
.dbline 0 ; func end
xjmp _KEY_CHK_DOWN
.dbend
.dbfunc e KEY_CHK_MODE _KEY_CHK_MODE fV
.even
_KEY_CHK_MODE::
.dbline -1
.dbline 194
; //////////////////////////MODE///////////////////////////////////////////////////////////
; void KEY_CHK_MODE() //100us /times
; {
.dbline 195
; KEY_BANK=KEY_INPUT; // 取PINC值
.dbline 196
; KEY_BANK&=0X01; // 取mode 值
.dbline 197
; if (KEY_BANK==0) //有按下 执行
in R2,0x13
sts _KEY_BANK,R2
mov R24,R2
andi R24,1
sts _KEY_BANK,R24
tst R24
brne L15
.dbline 198
; { //TEST--------OK------------->>>>
.dbline 199
; KEY_BANK=1;
.dbline 200
; JS_004=++JS_004;
.dbline 201
; if (JS_004==1)
ldi R24,1
sts _KEY_BANK,R24
lds R24,_JS_004
subi R24,255 ; addi 1
mov R2,R24
sts _JS_004,R2
sts _JS_004,R2
cpi R24,1
brne L17
.dbline 202
; {
.dbline 204
; //LED_DISPLAY_V1=11;
; LED_DISPLAY_V2=0;
.dbline 205
; LED_DISPLAY_V3=0;
.dbline 206
; LED_DISPLAY_V4=1;
clr R2
sts _LED_DISPLAY_V2,R2
sts _LED_DISPLAY_V3,R2
ldi R24,1
sts _LED_DISPLAY_V4,R24
.dbline 207
; }
xjmp L16
L17:
.dbline 208
; else if (JS_004==2)
lds R24,_JS_004
cpi R24,2
brne L16
.dbline 209
; {
.dbline 210
; JS_004&=0;
.dbline 212
; //LED_DISPLAY_V1=10;
; LED_DISPLAY_V2=0;
.dbline 213
; LED_DISPLAY_V3=0;
.dbline 214
; LED_DISPLAY_V4=1;
clr R2
sts _JS_004,R2
sts _LED_DISPLAY_V2,R2
sts _LED_DISPLAY_V3,R2
ldi R24,1
sts _LED_DISPLAY_V4,R24
.dbline 215
; }
.dbline 216
; }
xjmp L16
L15:
.dbline 218
clr R2
sts _KEY_BANK,R2
L16:
.dbline -2
.dbline 220
; else
; KEY_BANK=0;
;
; }
L14:
.dbline 0 ; func end
ret
.dbend
.dbfunc e KEY_PRESS_CHECK_OFF _KEY_PRESS_CHECK_OFF fV
.even
_KEY_PRESS_CHECK_OFF::
.dbline -1
.dbline 223
;
; void KEY_PRESS_CHECK_OFF()
; {
.dbline 224
; KEY_BANK=KEY_INPUT; // 取PINC值
.dbline 225
; KEY_BANK&=0X01;
.dbline 226
; if (KEY_BANK==0) // V1有按下
in R2,0x13
sts _KEY_BANK,R2
mov R24,R2
andi R24,1
sts _KEY_BANK,R24
tst R24
brne L22
.dbline 227
; KEY_PAN_MODE_3=1;
ldi R24,1
sts _KEY_PAN_MODE_3,R24
xjmp L23
L22:
.dbline 229
clr R2
sts _KEY_PAN_MODE_3,R2
L23:
.dbline -2
.dbline 230
; else // V1没有按下
; KEY_PAN_MODE_3=0;
; }
L21:
.dbline 0 ; func end
ret
.dbend
.dbfunc e KEY_CHK_MENU _KEY_CHK_MENU fV
.even
_KEY_CHK_MENU::
.dbline -1
.dbline 233
; ///////////////////////////////MENU/////////////////////////////////////////////////////////////////
; void KEY_CHK_MENU()
; {
.dbline -2
.dbline 234
; }
L24:
.dbline 0 ; func end
ret
.dbend
.dbfunc e KEY_CHK_UP _KEY_CHK_UP fV
.even
_KEY_CHK_UP::
xcall push_gset2
sbiw R28,4
.dbline -1
.dbline 237
; ///////////////////////////////UP///////////////////////////////////////////////////////////////////////
; void KEY_CHK_UP()
; {
.dbline 238
; KEY_BANK=KEY_INPUT; // 取PINC值
.dbline 239
; KEY_BANK=KEY_BANK>>2;
.dbline 240
; KEY_BANK&=0X01; // 取DOWN 值
.dbline 241
; if (KEY_BANK==0) //press on do it
in R2,0x13
sts _KEY_BANK,R2
lsr R2
lsr R2
sts _KEY_BANK,R2
mov R24,R2
andi R24,1
sts _KEY_BANK,R24
tst R24
breq X0
xjmp L26
X0:
.dbline 242
; {
.dbline 244
;
; JS_PRESS_OFF_UP==0;
.dbline 246
;
; if (JS_PRESS_ON_UP_1==0) //press on yes first times
lds R2,_JS_PRESS_ON_UP_1
tst R2
brne L28
.dbline 247
; {
.dbline 248
; JS_PRESS_ON_UP_1=1;
.dbline 249
; JS_PRESS_ON_UP=0;
.dbline 250
; JS_PRESS_ON_UP_FAST=0;
.dbline 251
; JS_PRESS_ON_UP_10000=0;
.dbline 252
; LED_DISPLAY_UP_DMX512();
ldi R24,1
sts _JS_PRESS_ON_UP_1,R24
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _JS_PRESS_ON_UP+1,R21
sts _JS_PRESS_ON_UP,R20
sts _JS_PRESS_ON_UP+2+1,R23
sts _JS_PRESS_ON_UP+2,R22
clr R2
clr R3
sts _JS_PRESS_ON_UP_FAST+1,R3
sts _JS_PRESS_ON_UP_FAST,R2
sts _JS_PRESS_ON_UP_10000,R2
xcall _LED_DISPLAY_UP_DMX512
.dbline 257
;
; // JS_UP_MODE=++JS_UP_MODE;
; // if (JS_UP_MODE==4)
; // JS_UP_MODE=0;
; }
xjmp L27
L28:
.dbline 259
; else
; {
.dbline 260
; if (JS_PRESS_ON_UP_10000==1)
lds R24,_JS_PRESS_ON_UP_10000
cpi R24,1
brne L30
.dbline 261
; {
.dbline 262
; if (JS_PRESS_ON_UP_FAST==2000)
lds R24,_JS_PRESS_ON_UP_FAST
lds R25,_JS_PRESS_ON_UP_FAST+1
cpi R24,208
ldi R30,7
cpc R25,R30
brne L32
.dbline 263
; {
.dbline 264
; JS_PRESS_ON_UP_FAST=0;
.dbline 265
; LED_DISPLAY_UP_DMX512();
clr R2
clr R3
sts _JS_PRESS_ON_UP_FAST+1,R3
sts _JS_PRESS_ON_UP_FAST,R2
xcall _LED_DISPLAY_UP_DMX512
.dbline 266
; }
xjmp L33
L32:
.dbline 268
; else
; JS_PRESS_ON_UP_FAST=++JS_PRESS_ON_UP_FAST;
lds R24,_JS_PRESS_ON_UP_FAST
lds R25,_JS_PRESS_ON_UP_FAST+1
adiw R24,1
sts _JS_PRESS_ON_UP_FAST+1,R25
sts _JS_PRESS_ON_UP_FAST,R24
sts _JS_PRESS_ON_UP_FAST+1,R25
sts _JS_PRESS_ON_UP_FAST,R24
L33:
.dbline 269
; }
L30:
.dbline 271
;
; if (JS_PRESS_ON_UP==30000)
ldi R20,48
ldi R21,117
ldi R22,0
ldi R23,0
lds R4,_JS_PRESS_ON_UP+2
lds R5,_JS_PRESS_ON_UP+2+1
lds R2,_JS_PRESS_ON_UP
lds R3,_JS_PRESS_ON_UP+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L34
.dbline 272
; {
.dbline 273
; JS_PRESS_ON_UP=0;
.dbline 274
; JS_PRESS_ON_UP_10000=1;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _JS_PRESS_ON_UP+1,R21
sts _JS_PRESS_ON_UP,R20
sts _JS_PRESS_ON_UP+2+1,R23
sts _JS_PRESS_ON_UP+2,R22
ldi R24,1
sts _JS_PRESS_ON_UP_10000,R24
.dbline 275
; }
xjmp L27
L34:
.dbline 277
; else
; JS_PRESS_ON_UP=++JS_PRESS_ON_UP;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_JS_PRESS_ON_UP+2
lds R5,_JS_PRESS_ON_UP+2+1
lds R2,_JS_PRESS_ON_UP
lds R3,_JS_PRESS_ON_UP+1
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sts _JS_PRESS_ON_UP+1,R3
sts _JS_PRESS_ON_UP,R2
sts _JS_PRESS_ON_UP+2+1,R5
sts _JS_PRESS_ON_UP+2,R4
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sts _JS_PRESS_ON_UP+1,R3
sts _JS_PRESS_ON_UP,R2
sts _JS_PRESS_ON_UP+2+1,R5
sts _JS_PRESS_ON_UP+2,R4
.dbline 278
; }
.dbline 279
; }
xjmp L27
L26:
.dbline 281
; else //unpress
; {
.dbline 282
; JS_PRESS_ON_UP=0;
.dbline 283
; JS_PRESS_ON_UP_10000=0;
.dbline 284
; JS_PRESS_ON_UP_FAST=0;
.dbline 285
; JS_PRESS_OFF_UP=++JS_PRESS_OFF_UP;
.dbline 286
; if (JS_PRESS_OFF_UP==2000)
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _JS_PRESS_ON_UP+1,R21
sts _JS_PRESS_ON_UP,R20
sts _JS_PRESS_ON_UP+2+1,R23
sts _JS_PRESS_ON_UP+2,R22
clr R2
sts _JS_PRESS_ON_UP_10000,R2
clr R3
sts _JS_PRESS_ON_UP_FAST+1,R3
sts _JS_PRESS_ON_UP_FAST,R2
lds R24,_JS_PRESS_OFF_UP
lds R25,_JS_PRESS_OFF_UP+1
adiw R24,1
sts _JS_PRESS_OFF_UP+1,R25
sts _JS_PRESS_OFF_UP,R24
sts _JS_PRESS_OFF_UP+1,R25
sts _JS_PRESS_OFF_UP,R24
cpi R24,208
ldi R30,7
cpc R25,R30
brne L36
.dbline 287
; {
.dbline 288
; JS_PRESS_ON_UP_1=0;
.dbline 289
; JS_PRESS_OFF_UP=0;
sts _JS_PRESS_ON_UP_1,R2
sts _JS_PRESS_OFF_UP+1,R3
sts _JS_PRESS_OFF_UP,R2
.dbline 290
; }
L36:
.dbline 291
L27:
.dbline -2
.dbline 293
; }
;
; }
L25:
adiw R28,4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -