main.lis
来自「Button 一个国外大学生毕业设计,用的是AVR单片机」· LIS 代码 · 共 1,068 行 · 第 1/4 页
LIS
1,068 行
02B8 10 push X
02B9 5003 mov A,3
02BB 7C0000 xcall _CSR_1_SetScanSpeed
02BE 20 pop X
02BF .dbline 278
02BF ; bDACcurrent[i] = 20; // a DAC current of 20 will start us in range
02BF 62D000 mov REG[0xd0],>_i
02C2 5101 mov A,[_i+1]
02C4 0100 add A,<_bDACcurrent
02C6 62D000 mov REG[0xd0],>__r0
02C9 5300 mov [__r1],A
02CB 62D000 mov REG[0xd0],>_i
02CE 5100 mov A,[_i]
02D0 0900 adc A,>_bDACcurrent
02D2 62D000 mov REG[0xd0],>__r0
02D5 60D5 mov REG[0xd5],A
02D7 5014 mov A,20
02D9 3F00 mvi [__r1],A
02DB L53:
02DB .dbline 287
02DB ;
02DB ; // do one scan and compare the raw count value against
02DB ; // the defined range.
02DB ; // - If the counts are BELOW the set range
02DB ; // DECREASE the DAC setting to INCREASE the counts
02DB ; // - If the counts are ABOVE the set range
02DB ; // INCREASE the DAC setting to DECREASE the counts
02DB ; do
02DB ; {
02DB .dbline 289
02DB ; // set the DAC current
02DB ; CSR_1_SetDacCurrent(bDACcurrent[i], 0);
02DB 10 push X
02DC 5000 mov A,0
02DE 08 push A
02DF 62D000 mov REG[0xd0],>_i
02E2 5101 mov A,[_i+1]
02E4 0100 add A,<_bDACcurrent
02E6 62D000 mov REG[0xd0],>__r0
02E9 5300 mov [__r1],A
02EB 62D000 mov REG[0xd0],>_i
02EE 5100 mov A,[_i]
02F0 0900 adc A,>_bDACcurrent
02F2 62D000 mov REG[0xd0],>__r0
02F5 60D4 mov REG[0xd4],A
02F7 3E00 mvi A,[__r1]
02F9 20 pop X
02FA 7C0000 xcall _CSR_1_SetDacCurrent
02FD .dbline 291
02FD ; // scan just the one button
02FD ; CSR_1_StartScan(i,1,0);
02FD 5000 mov A,0
02FF 08 push A
0300 5001 mov A,1
0302 08 push A
0303 62D000 mov REG[0xd0],>_i
0306 5101 mov A,[_i+1]
0308 62D000 mov REG[0xd0],>__r0
030B 08 push A
030C 7C0000 xcall _CSR_1_StartScan
030F 38FD add SP,-3
0311 20 pop X
0312 L56:
0312 .dbline 292
0312 L57:
0312 .dbline 292
0312 ; while(!(CSR_1_GetScanStatus() & CSR_1_SCAN_SET_COMPLETE));
0312 10 push X
0313 7C0000 xcall _CSR_1_GetScanStatus
0316 62D000 mov REG[0xd0],>__r0
0319 20 pop X
031A 5300 mov [__r0],A
031C 470020 tst [__r0],32
031F AFF2 jz L56
0321 .dbline 295
0321 ;
0321 ; // check to see if the counts are in range
0321 ; if (CSR_1_iaSwResult[i] < DAC_MIN_RAW_COUNT)
0321 62D000 mov REG[0xd0],>_i
0324 5101 mov A,[_i+1]
0326 08 push A
0327 5100 mov A,[_i]
0329 62D000 mov REG[0xd0],>__r0
032C 5300 mov [__r0],A
032E 18 pop A
032F 5300 mov [__r1],A
0331 6500 asl [__r1]
0333 6B00 rlc [__r0]
0335 060000 add [__r1],<_CSR_1_iaSwResult
0338 0E0000 adc [__r0],>_CSR_1_iaSwResult
033B 5100 mov A,[__r0]
033D 60D4 mov REG[0xd4],A
033F 3E00 mvi A,[__r1]
0341 5300 mov [__r0],A
0343 3E00 mvi A,[__r1]
0345 1122 sub A,34
0347 5100 mov A,[__r0]
0349 1901 sbb A,1
034B D02E jnc L59
034D X4:
034D .dbline 296
034D ; {
034D .dbline 297
034D ; bDACcurrent[i]--; // counts are BELOW the range so DECREASE the DAC setting
034D 62D000 mov REG[0xd0],>_i
0350 5101 mov A,[_i+1]
0352 0100 add A,<_bDACcurrent
0354 62D000 mov REG[0xd0],>__r0
0357 5300 mov [__r1],A
0359 62D000 mov REG[0xd0],>_i
035C 5100 mov A,[_i]
035E 0900 adc A,>_bDACcurrent
0360 62D000 mov REG[0xd0],>__r0
0363 5300 mov [__r0],A
0365 60D4 mov REG[0xd4],A
0367 3E00 mvi A,[__r1]
0369 7A00 dec [__r1]
036B 5300 mov [__r2],A
036D 160001 sub [__r2],1
0370 5100 mov A,[__r0]
0372 60D5 mov REG[0xd5],A
0374 5100 mov A,[__r2]
0376 3F00 mvi [__r1],A
0378 .dbline 298
0378 ; }
0378 8061 xjmp L60
037A L59:
037A .dbline 299
037A ; else if (CSR_1_iaSwResult[i] > DAC_MAX_RAW_COUNT)
037A 62D000 mov REG[0xd0],>_i
037D 5101 mov A,[_i+1]
037F 08 push A
0380 5100 mov A,[_i]
0382 62D000 mov REG[0xd0],>__r0
0385 5300 mov [__r0],A
0387 18 pop A
0388 5300 mov [__r1],A
038A 6500 asl [__r1]
038C 6B00 rlc [__r0]
038E 060000 add [__r1],<_CSR_1_iaSwResult
0391 0E0000 adc [__r0],>_CSR_1_iaSwResult
0394 5100 mov A,[__r0]
0396 60D4 mov REG[0xd4],A
0398 3E00 mvi A,[__r1]
039A 5300 mov [__r0],A
039C 3E00 mvi A,[__r1]
039E 5300 mov [__r1],A
03A0 5036 mov A,54
03A2 1200 sub A,[__r1]
03A4 5001 mov A,1
03A6 1A00 sbb A,[__r0]
03A8 D02E jnc L61
03AA X5:
03AA .dbline 300
03AA ; {
03AA .dbline 301
03AA ; bDACcurrent[i]++; // counts are ABOVE the range so INCREASE the DAC setting
03AA 62D000 mov REG[0xd0],>_i
03AD 5101 mov A,[_i+1]
03AF 0100 add A,<_bDACcurrent
03B1 62D000 mov REG[0xd0],>__r0
03B4 5300 mov [__r1],A
03B6 62D000 mov REG[0xd0],>_i
03B9 5100 mov A,[_i]
03BB 0900 adc A,>_bDACcurrent
03BD 62D000 mov REG[0xd0],>__r0
03C0 5300 mov [__r0],A
03C2 60D4 mov REG[0xd4],A
03C4 3E00 mvi A,[__r1]
03C6 7A00 dec [__r1]
03C8 5300 mov [__r2],A
03CA 060001 add [__r2],1
03CD 5100 mov A,[__r0]
03CF 60D5 mov REG[0xd5],A
03D1 5100 mov A,[__r2]
03D3 3F00 mvi [__r1],A
03D5 .dbline 302
03D5 ; }
03D5 8004 xjmp L62
03D7 L61:
03D7 .dbline 304
03D7 ; else
03D7 ; {
03D7 .dbline 305
03D7 ; bFlag = 0; // the counts are in range so exit the do loop
03D7 560000 mov [X+0],0
03DA .dbline 306
03DA ; }
03DA L62:
03DA L60:
03DA .dbline 307
03DA L54:
03DA .dbline 307
03DA 3D0000 cmp [X+0],0
03DD BEFD jnz L53
03DF .dbline 308
03DF L50:
03DF .dbline 272
03DF 62D000 mov REG[0xd0],>_i
03E2 7601 inc [_i+1]
03E4 0E0000 adc [_i],0
03E7 L52:
03E7 .dbline 272
03E7 62D000 mov REG[0xd0],>_i
03EA 5101 mov A,[_i+1]
03EC 1107 sub A,7
03EE 5100 mov A,[_i]
03F0 1900 sbb A,0
03F2 CEC2 jc L49
03F4 X6:
03F4 .dbline -2
03F4 .dbline 309
03F4 ; }while (bFlag); //if the flag is still 1 then go back and rescan the switch
03F4 ; }
03F4 ; }
03F4 L48:
03F4 38FF add SP,-1
03F6 20 pop X
03F7 .dbline 0 ; func end
03F7 7F ret
03F8 .dbsym l bFlag 0 c
03F8 .dbend
.area data(ram, con, rel)
0000 .dbfile ./main.c
0000 _x::
0000 0000 .byte 0,0
0002 .dbsym e x _x i
.area data(ram, con, rel)
0000 .dbfile ./main.c
0000 _i::
0000 0000 .byte 0,0
0002 .dbsym e i _i i
.area data(ram, con, rel)
0000 .dbfile ./main.c
0000 _bDACcurrent::
0000 00000000000000 .byte 0,0,0,0,0,0,0
0007 .dbsym e bDACcurrent _bDACcurrent A[7:7]c
.area lit(rom, con, rel)
0000 L47:
0000 626153774F6E4D61736B5B305D3A2020 .byte 'b,'a,'S,'w,'O,'n,'M,'a,'s,'k,91,48,93,58,32,32
0010 00 .byte 0
0011 L46:
0011 362000 .byte 54,32,0
0014 L43:
0014 352000 .byte 53,32,0
0017 L40:
0017 342000 .byte 52,32,0
001A L37:
001A 332000 .byte 51,32,0
001D L34:
001D 322000 .byte 50,32,0
0020 L31:
0020 312000 .byte 49,32,0
0023 L28:
0023 202000 .byte 32,32,0
0026 L27:
0026 302000 .byte 48,32,0
0029 L12:
0029 20202020202020202020202020202020 .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
0039 00 .byte 0
003A L3:
003A 44656D6F2076322E3020202020202020 .byte 'D,'e,'m,'o,32,'v,50,46,48,32,32,32,32,32,32,32
004A 00 .byte 0
004B L2:
004B 372D427574746F6E2020202020202020 .byte 55,45,'B,'u,'t,'t,'o,'n,32,32,32,32,32,32,32,32
005B 00 .byte 0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?