📄 251.s
字号:
.dbline 427
; }
; //invert
; clockwise |= ClockwiseCmd&ClockwiseMotor;
mov R24,R12
andi R24,128
or R22,R24
.dbline 428
; anticlockwise |= ClockwiseCmd&(~ClockwiseMotor);
mov R24,R12
andi R24,127
or R20,R24
.dbline 429
; anticlockwise |= AnticlockwiseCmd&(ClockwiseMotor);
mov R24,R10
andi R24,128
or R20,R24
.dbline 430
; clockwise |= AnticlockwiseCmd&(~ClockwiseMotor);
mov R24,R10
andi R24,127
or R22,R24
.dbline 434
;
; //CLOCKWISE
; //set DAD1(PB7)
; PORTB |= BIT(7);
sbi 0x18,7
.dbline 436
; //set DAC1-8 through SPI
; SPIOutput(clockwise);
mov R16,R22
rcall _SPIOutput
.dbline 437
; PORTB |= BIT(0); //SET OUTCS
sbi 0x18,0
.dbline 438
; _NOP();
nop
.dbline 439
; PORTB &= ~BIT(0); //CLEAR OUTCS
cbi 0x18,0
.dbline 441
; //clear DAC1-8
; SPIOutput(0);
clr R16
rcall _SPIOutput
.dbline 442
; PORTB |= BIT(0); //SET OUTCS
sbi 0x18,0
.dbline 443
; _NOP();
nop
.dbline 444
; PORTB &= ~BIT(0); //CLEAR OUTCS
cbi 0x18,0
.dbline 449
;
;
; //ANTICLOCKWISE
; //clear DAD1(PB7)
; PORTB &= ~BIT(7);
cbi 0x18,7
.dbline 451
; //set DAC1-8 through SPI
; SPIOutput(anticlockwise);
mov R16,R20
rcall _SPIOutput
.dbline 452
; PORTB |= BIT(0); //SET OUTCS
sbi 0x18,0
.dbline 453
; _NOP();
nop
.dbline 454
; PORTB &= ~BIT(0); //CLEAR OUTCS
cbi 0x18,0
.dbline 456
; //clear DAC1-8
; SPIOutput(0);
clr R16
rcall _SPIOutput
L96:
.dbline 457
L97:
.dbline 457
; while ( !(SPSR & BIT(7)) ) ; //wait
sbis 0xe,7
rjmp L96
.dbline 458
; PORTB |= BIT(0); //SET OUTCS
sbi 0x18,0
.dbline 459
; _NOP();
nop
.dbline 460
; PORTB &= ~BIT(0); //CLEAR OUTCS
cbi 0x18,0
.dbline 463
;
; //BLOCK
; MotorBlocked = 1;
ldi R24,1
sts _MotorBlocked,R24
.dbline -2
L75:
rcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r anticlockwise 20 c
.dbsym r clockwise 22 c
.dbsym r AnticlockwiseCmd 10 c
.dbsym r ClockwiseCmd 12 c
.dbsym r i 14 c
.dbend
.dbfunc e Parallel _Parallel fV
.even
_Parallel::
.dbline -1
.dbline 468
;
; }
;
; void Parallel(void)
; {
.dbline 469
; ParallelOutput();
rcall _ParallelOutput
.dbline 470
; KeyMileageCurrentClear();//注意,小计清零的输入只能放在这里!!!
rcall _KeyMileageCurrentClear
.dbline 471
; ParallelBlocked = 1;
ldi R24,1
sts _ParallelBlocked,R24
.dbline -2
L99:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ParallelOutput _ParallelOutput fV
.even
_ParallelOutput::
.dbline -1
.dbline 476
; }
;
;
; void ParallelOutput(void)
; {
.dbline 477
; SPIOutput( *((char*)&ParallelOutputCmd+1) );
lds R16,_ParallelOutputCmd+1
rcall _SPIOutput
.dbline 478
; SPIOutput( *((char*)&ParallelOutputCmd+0) );
ldi R30,<_ParallelOutputCmd
ldi R31,>_ParallelOutputCmd
ldd R16,z+0
rcall _SPIOutput
.dbline 479
; PORTD |= BIT(7);
sbi 0x12,7
.dbline 480
; _NOP();
nop
.dbline 481
; PORTD &= ~BIT(7);
cbi 0x12,7
.dbline -2
L100:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCDDecoding _LCDDecoding fV
; temp2 -> y+4
; temp1 -> y+0
; i -> R10
.even
_LCDDecoding::
rcall push_gset3
sbiw R28,8
.dbline -1
.dbline 485
; }
;
; void LCDDecoding(void)//mileage,MileageCurrent --> LCDContent
; {
.dbline 488
; unsigned long temp1,temp2;
; uchar i;
; temp1 = mileage/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_mileage+2
lds R5,_mileage+2+1
lds R2,_mileage
lds R3,_mileage+1
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 490
; //累计
; for(i=0;i<=6;i++)
clr R10
rjmp L106
L103:
.dbline 491
; {
.dbline 492
; temp2 = temp1/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32u
movw R30,R28
std z+4,R16
std z+5,R17
std z+6,R18
std z+7,R19
.dbline 493
; LCDContent[i] = temp1-temp2*10;
movw R30,R28
ldd R2,z+4
ldd R3,z+5
ldd R4,z+6
ldd R5,z+7
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32u
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sub R2,R16
sbc R3,R17
sbc R4,R18
sbc R5,R19
ldi R24,<_LCDContent
ldi R25,>_LCDContent
mov R30,R10
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 494
; temp1 = temp2;
movw R30,R28
ldd R2,z+4
ldd R3,z+5
ldd R4,z+6
ldd R5,z+7
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 495
; if(temp1 == 0 && i>=0) //保证1位不消隐
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L107
mov R24,R10
cpi R24,0
brlo L107
.dbline 496
; break;
rjmp L105
L107:
.dbline 497
L104:
.dbline 490
inc R10
L106:
.dbline 490
ldi R24,6
cp R24,R10
brlo X2
rjmp L103
X2:
L105:
.dbline 498
; }
; for(i++;i<=6;i++)
inc R10
rjmp L112
L109:
.dbline 499
ldi R24,<_LCDContent
ldi R25,>_LCDContent
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldi R24,10
std z+0,R24
L110:
.dbline 498
inc R10
L112:
.dbline 498
ldi R24,6
cp R24,R10
brsh L109
.dbline 501
; LCDContent[i] = 10;//Hide
; //小计
; temp1 = MileageCurrent;
lds R4,_MileageCurrent+2
lds R5,_MileageCurrent+2+1
lds R2,_MileageCurrent
lds R3,_MileageCurrent+1
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 502
; for(i=0;i<=3;i++)
clr R10
rjmp L116
L113:
.dbline 503
; {
.dbline 504
; temp2 = temp1/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32u
movw R30,R28
std z+4,R16
std z+5,R17
std z+6,R18
std z+7,R19
.dbline 505
; LCDContent[12-i] = temp1-temp2*10;
movw R30,R28
ldd R2,z+4
ldd R3,z+5
ldd R4,z+6
ldd R5,z+7
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32u
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sub R2,R16
sbc R3,R17
sbc R4,R18
sbc R5,R19
mov R3,R10
clr R4
ldi R30,12
ldi R31,0
sub R30,R3
sbc R31,R4
ldi R24,<_LCDContent
ldi R25,>_LCDContent
add R30,R24
adc R31,R25
std z+0,R2
.dbline 506
; temp1 = temp2;
movw R30,R28
ldd R2,z+4
ldd R3,z+5
ldd R4,z+6
ldd R5,z+7
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 507
; if(temp1 == 0 && i>=1) //保证2位不消隐
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L117
mov R24,R10
cpi R24,1
brlo L117
.dbline 508
; break;
rjmp L115
L117:
.dbline 509
L114:
.dbline 502
inc R10
L116:
.dbline 502
ldi R24,3
cp R24,R10
brlo X3
rjmp L113
X3:
L115:
.dbline 510
; }
; for(i++;i<=3;i++)
inc R10
rjmp L122
L119:
.dbline 511
mov R2,R10
clr R3
ldi R30,12
ldi R31,0
sub R30,R2
sbc R31,R3
ldi R24,<_LCDContent
ldi R25,>_LCDContent
add R30,R24
adc R31,R25
ldi R24,10
std z+0,R24
L120:
.dbline 510
inc R10
L122:
.dbline 510
ldi R24,3
cp R24,R10
brsh L119
.dbline -2
L102:
adiw R28,8
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l temp2 4 l
.dbsym l temp1 0 l
.dbsym r i 10 c
.dbend
.dbfunc e MileageSaving _MileageSaving fV
.even
_MileageSaving::
.dbline -1
.dbline 516
; LCDContent[12-i] = 10;//Hide
;
; }
;
; void MileageSaving()
; {
.dbline 517
; EEPROM_write( 0x00, *((char*)&mileage+0) );
ldi R30,<_mileage
ldi R31,>_mileage
ldd R18,z+0
clr R16
clr R17
rcall _EEPROM_write
.dbline 518
; EEPROM_write( 0x01, *((char*)&mileage+1) );
lds R18,_mileage+1
ldi R16,1
ldi R17,0
rcall _EEPROM_write
.dbline 519
; EEPROM_write( 0x02, *((char*)&mileage+2) );
lds R18,_mileage+2
ldi R16,2
ldi R17,0
rcall _EEPROM_write
.dbline 520
; EEPROM_write( 0x03, *((char*)&mileage+3) );
lds R18,_mileage+3
ldi R16,3
ldi R17,0
rcall _EEPROM_write
.dbline 521
; EEPROM_write( 0x04, *((char*)&MileageCurrent+0) );
ldi R30,<_MileageCurrent
ldi R31,>_MileageCurrent
ldd R18,z+0
ldi R16,4
ldi R17,0
rcall _EEPROM_write
.dbline 522
; EEPROM_write( 0x05, *((char*)&MileageCurrent+1) );
lds R18,_MileageCurrent+1
ldi R16,5
ldi R17,0
rcall _EEPROM_write
.dbline 523
; EEPROM_write( 0x06, *((char*)&MileageCurrent+2) );
lds R18,_MileageCurrent+2
ldi R16,6
ldi R17,0
rcall _EEPROM_write
.dbline 524
; EEPROM_write( 0x07, *((char*)&MileageCurrent+3) );
lds R18,_MileageCurrent+3
ldi R16,7
ldi R17,0
rcall _EEPROM_write
.dbline 525
; MileageSaveBlocked = 1;
ldi R24,1
sts _MileageSaveBlocked,R24
.dbline -2
L123:
.dbline 0 ; func end
ret
.dbend
.dbfunc e MileageLoding _MileageLoding fV
.even
_MileageLoding::
rcall push_gset2
.dbline -1
.dbline 529
; }
;
; void MileageLoding()
; {
.dbline 530
; mileage = 0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _mileage+1,R21
sts _mileage,R20
sts _mileage+2+1,R23
sts _mileage+2,R22
.dbline 531
; MileageCurrent = 0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _MileageCurrent+1,R21
sts _MileageCurrent,R20
sts _MileageCurrent+2+1,R23
sts _MileageCurrent+2,R22
.dbline 532
; *((char*)&mileage+0) = EEPROM_read( 0x00 );
clr R16
clr R17
rcall _EEPROM_read
ldi R30,<_mileage
ldi R31,>_mileage
std z+0,R16
.dbline 533
; *((char*)&mileage+1) = EEPROM_read( 0x01 );
ldi R16,1
ldi R17,0
rcall _EEPROM_read
sts _mileage+1,R16
.dbline 534
; *((char*)&mileage+2) = EEPROM_read( 0x02 );
ldi R16,2
ldi R17,0
rcall _EEPROM_read
sts _mileage+2,R16
.dbline 535
; *((char*)&mileage+3) = EEPROM_read( 0x03 );
ldi R16,3
ldi R17,0
rcall _EEPROM_read
sts _mileage+3,R16
.dbline 536
; *((char*)&MileageCurrent+0) = EEPROM_read( 0x04 );
ldi R16,4
ldi R17,0
rcall _EEPROM_read
ldi R30,<_MileageCurrent
ldi R31,>_MileageCurrent
std z+0,R16
.dbline 537
; *((char*)&MileageCurrent+1) = EEPROM_read( 0x05 );
ldi R16,5
ldi R17,0
rcall _EEPROM_read
sts _MileageCurrent+1,R16
.dbline 538
; *((char*)&MileageCurrent+2) = EEPROM_read( 0x06 );
ldi R16,6
ldi R17,0
rcall _EEPROM_read
sts _MileageCurrent+2,R16
.dbline 539
; *((char*)&MileageCurrent+3) = EEPROM_read( 0x07 );
ldi R16,7
ldi R17,0
rcall _EEPROM_read
sts _MileageCurrent+3,R16
.dbline 540
; MileageSaveBlocked = 1;
ldi R24,1
sts _MileageSaveBlocked,R24
.dbline -2
L130:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e KeyMileageCurrentClear _KeyMileageCurrentClear fV
; i -> R10,R11
.even
_KeyMileageCurrentClear::
rcall push_gset3
.dbline -1
.dbline 544
; }
;
; void KeyMileageCurrentClear(void)
; {
.dbline 547
; int i;
; //1.PORTD7=Input+PullUp
; PORTD |= BIT(7);
sbi 0x12,7
.dbline 548
; for(i=0;i<100;i++)
clr R10
clr R11
L138:
.dbline 549
rcall _delay
L139:
.dbline 548
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 548
cpi R24,100
ldi R30,0
cpc R25,R30
brlt L138
.dbline 550
; delay();
; DDRD &= ~BIT(7);
cbi 0x11,7
.dbline 551
; for(i=0;i<100;i++)
clr R10
clr R11
L142:
.dbline 552
rcall _delay
L143:
.dbline 551
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 551
cpi R24,100
ldi R30,0
cpc R25,R30
brlt L142
.dbline 554
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -