?? sle4442.s
字號:
rcall _WriteMainMemory
L128:
.dbline 325
inc R10
L130:
.dbline 325
mov R24,R10
cpi R24,5
brlo L127
.dbline 327
; WriteMainMemory(36+i,p[i]);//從32+i地址開始寫5字節(jié)帳號;
; for(i=0;i<5;i++)
clr R10
rjmp L134
L131:
.dbline 328
clr R18
mov R16,R10
subi R16,215 ; addi 41
rcall _WriteMainMemory
L132:
.dbline 327
inc R10
L134:
.dbline 327
mov R24,R10
cpi R24,5
brlo L131
.dbline 329
; WriteMainMemory(41+i,0);//從32+i地址開始寫5字節(jié)初始化金額0000.0
; j=Read_Card(tp);
mov R16,R28
mov R17,R29
rcall _Read_Card
mov R20,R16
.dbline 330
; if(j==3)
cpi R16,3
brne L135
.dbline 331
; {for(i=0;i<10;i++)
.dbline 331
clr R10
rjmp L140
L137:
.dbline 332
; if(p[i]==tp[i+4]) temp=temp+1;
mov R24,R28
mov R25,R29
adiw R24,4
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
mov R30,R10
clr R31
add R30,R12
adc R31,R13
ldd R3,z+0
cp R3,R2
brne L141
.dbline 332
inc R22
L141:
L138:
.dbline 331
inc R10
L140:
.dbline 331
mov R24,R10
cpi R24,10
brlo L137
.dbline 333
; }
L135:
.dbline 334
; if(temp==10) return(3);
cpi R22,10
brne L144
.dbline 334
ldi R16,3
rjmp L125
L144:
.dbline 335
; else return(2);
ldi R16,2
.dbline -2
L125:
adiw R28,23
rcall pop_gset4
.dbline 0 ; func end
ret
.dbsym l Psw 20 A[3:3]c
.dbsym r j 20 c
.dbsym l tp 0 A[20:20]c
.dbsym r temp 22 c
.dbsym r i 10 c
.dbsym r p 12 pc
.dbend
.area lit(rom, con, rel)
L147:
.byte 255,255
.byte 255
.area text(rom, con, rel)
.dbfile J:\SLE4442-avr\sle4442.c
.dbfunc e Repair_Card _Repair_Card fc
; temp -> <dead>
; j -> <dead>
; i -> R20
; Psw -> y+0
.even
_Repair_Card::
rcall push_gset1
sbiw R28,3
.dbline -1
.dbline 344
; }
;
; //***************卡修復(fù)函數(shù)********************//
; //說明:
; //返回值信息:
; //0:修復(fù)失敗!
; //1:修復(fù)成功!
; uchar Repair_Card(void)
; {uchar Psw[3]={0xff,0xff,0xff};
.dbline 344
ldi R24,<L147
ldi R25,>L147
mov R30,R28
mov R31,R29
ldi R16,3
ldi R17,0
st -y,R31
st -y,R30
st -y,R25
st -y,R24
rcall asgncblk
.dbline 346
; uchar i,j,temp;
; i=VerifyPassword(Psw);
mov R16,R28
mov R17,R29
rcall _VerifyPassword
mov R20,R16
.dbline 347
; return(i);
.dbline -2
L146:
adiw R28,3
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l temp 1 c
.dbsym l j 1 c
.dbsym r i 20 c
.dbsym l Psw 0 A[3:3]c
.dbend
.dbfunc e Add_Card _Add_Card fV
; i -> R22
; temp -> y+0
; p -> R20,R21
.even
_Add_Card::
rcall push_gset2
mov R20,R16
mov R21,R17
sbiw R28,14
.dbline -1
.dbline 352
; }
;
; //********************加卡函數(shù)***********//
; void Add_Card(uchar *p)
; {uchar i;
.dbline 354
; uchar temp[14];
; i=Read_Card(temp);
mov R16,R28
mov R17,R29
rcall _Read_Card
mov R22,R16
.dbline 355
; if(i==3)
cpi R16,3
breq X3
rjmp L149
X3:
.dbline 356
; {temp[13]=temp[13]+p[4];
.dbline 356
mov R30,R20
mov R31,R21
ldd R2,z+4
ldd R3,y+13
add R3,R2
std y+13,R3
.dbline 357
; if(temp[13]>9) {temp[13]=temp[13]-10;temp[12]=temp[12]+1;}
ldi R24,9
cp R24,R3
brsh L153
.dbline 357
.dbline 357
mov R24,R3
subi R24,10
std y+13,R24
.dbline 357
ldd R24,y+12
subi R24,255 ; addi 1
std y+12,R24
.dbline 357
L153:
.dbline 358
; temp[12]=temp[12]+p[3];
mov R30,R20
mov R31,R21
ldd R2,z+3
ldd R3,y+12
add R3,R2
std y+12,R3
.dbline 359
; if(temp[12]>9) {temp[12]=temp[12]-10;temp[11]=temp[11]+1;}
ldi R24,9
cp R24,R3
brsh L162
.dbline 359
.dbline 359
mov R24,R3
subi R24,10
std y+12,R24
.dbline 359
ldd R24,y+11
subi R24,255 ; addi 1
std y+11,R24
.dbline 359
L162:
.dbline 360
; temp[11]=temp[11]+p[2];
mov R30,R20
mov R31,R21
ldd R2,z+2
ldd R3,y+11
add R3,R2
std y+11,R3
.dbline 361
; if(temp[11]>9) {temp[11]=temp[11]-10;temp[10]=temp[10]+1;}
ldi R24,9
cp R24,R3
brsh L171
.dbline 361
.dbline 361
mov R24,R3
subi R24,10
std y+11,R24
.dbline 361
ldd R24,y+10
subi R24,255 ; addi 1
std y+10,R24
.dbline 361
L171:
.dbline 362
; temp[10]=temp[10]+p[1];
mov R30,R20
mov R31,R21
ldd R2,z+1
ldd R3,y+10
add R3,R2
std y+10,R3
.dbline 363
; if(temp[10]>9) {temp[10]=temp[10]-10;temp[9]=temp[9]+1;}
ldi R24,9
cp R24,R3
brsh L180
.dbline 363
.dbline 363
mov R24,R3
subi R24,10
std y+10,R24
.dbline 363
ldd R24,y+9
subi R24,255 ; addi 1
std y+9,R24
.dbline 363
L180:
.dbline 365
ldd R18,y+9
ldi R16,41
rcall _WriteMainMemory
.dbline 366
ldd R18,y+10
ldi R16,42
rcall _WriteMainMemory
.dbline 367
ldd R18,y+11
ldi R16,43
rcall _WriteMainMemory
.dbline 368
ldd R18,y+12
ldi R16,44
rcall _WriteMainMemory
.dbline 369
ldd R18,y+13
ldi R16,45
rcall _WriteMainMemory
.dbline 370
L149:
.dbline -2
.dbline 371
;
; WriteMainMemory(41,temp[9]);
; WriteMainMemory(42,temp[10]);
; WriteMainMemory(43,temp[11]);
; WriteMainMemory(44,temp[12]);
; WriteMainMemory(45,temp[13]);
; }
; }
L148:
adiw R28,14
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 c
.dbsym l temp 0 A[14:14]c
.dbsym r p 20 pc
.dbend
.dbfunc e Sub_Card _Sub_Card fV
; i -> R22
; B_Flag -> R22
; temp -> y+0
; p -> R20,R21
.even
_Sub_Card::
rcall push_gset2
mov R20,R16
mov R21,R17
sbiw R28,14
.dbline -1
.dbline 375
;
; //********************減卡函數(shù)***********//
; void Sub_Card(uchar *p)
; {uchar i,B_Flag;
.dbline 377
; uchar temp[14];
; i=Read_Card(temp);
mov R16,R28
mov R17,R29
rcall _Read_Card
mov R22,R16
.dbline 378
; if((i==3)&&(!(temp[9]<p[0])))
cpi R16,3
breq X4
rjmp L193
X4:
mov R30,R20
mov R31,R21
ldd R2,z+0
ldd R3,y+9
cp R3,R2
brsh X5
rjmp L193
X5:
.dbline 379
; {if(temp[13]<p[4]) {temp[13]=temp[13]+10-p[4];B_Flag=1;}
.dbline 379
ldd R2,z+4
ldd R3,y+13
cp R3,R2
brsh L196
.dbline 379
.dbline 379
mov R30,R20
mov R31,R21
ldd R2,z+4
mov R24,R3
subi R24,246 ; addi 10
sub R24,R2
std y+13,R24
.dbline 379
ldi R22,1
.dbline 379
rjmp L197
L196:
.dbline 380
; else temp[13]=temp[13]-p[4];
mov R30,R20
mov R31,R21
ldd R2,z+4
ldd R3,y+13
sub R3,R2
std y+13,R3
L197:
.dbline 382
; //以上處理小數(shù)點右邊的數(shù)字;
; if(B_Flag==1)
cpi R22,1
brne L203
.dbline 383
; {if(temp[12]==0) {temp[12]=9;B_Flag=0;}
.dbline 383
ldd R2,y+12
tst R2
brne L205
.dbline 383
.dbline 383
ldi R24,9
std y+12,R24
.dbline 383
clr R22
.dbline 383
rjmp L206
L205:
.dbline 384
ldd R24,y+12
subi R24,1
std y+12,R24
L206:
.dbline 384
; else temp[12]=temp[12]-1;}
L203:
.dbline 386
; //以上對存在借位情況時對小數(shù)點左邊第一位進行預(yù)處理;
; if(temp[12]<p[3]) {temp[12]=temp[12]+10-p[3];B_Flag=1;}
mov R30,R20
mov R31,R21
ldd R2,z+3
ldd R3,y+12
cp R3,R2
brsh L211
.dbline 386
.dbline 386
mov R30,R20
mov R31,R21
ldd R2,z+3
mov R24,R3
subi R24,246 ; addi 10
sub R24,R2
std y+12,R24
.dbline 386
ldi R22,1
.dbline 386
rjmp L212
L211:
.dbline 387
; else temp[12]=temp[12]-p[3];
mov R30,R20
mov R31,R21
ldd R2,z+3
ldd R3,y+12
sub R3,R2
std y+12,R3
L212:
.dbline 389
; //以上處理小數(shù)點小數(shù)點左邊第一位數(shù)字;
; if(B_Flag==1)
cpi R22,1
brne L218
.dbline 390
; {if(temp[11]==0) {temp[11]=9;B_Flag=0;}
.dbline 390
ldd R2,y+11
tst R2
brne L220
.dbline 390
.dbline 390
ldi R24,9
std y+11,R24
.dbline 390
clr R22
.dbline 390
rjmp L221
L220:
.dbline 391
ldd R24,y+11
subi R24,1
std y+11,R24
L221:
.dbline 391
; else temp[11]=temp[11]-1;}
L218:
.dbline 393
; //以上對存在借位情況時對小數(shù)點左邊第二位進行預(yù)處理;
; if(temp[11]<p[2]) {temp[11]=temp[11]+10-p[2];B_Flag=1;}
mov R30,R20
mov R31,R21
ldd R2,z+2
ldd R3,y+11
cp R3,R2
brsh L226
.dbline 393
.dbline 393
mov R30,R20
mov R31,R21
ldd R2,z+2
mov R24,R3
subi R24,246 ; addi 10
sub R24,R2
std y+11,R24
.dbline 393
ldi R22,1
.dbline 393
rjmp L227
L226:
.dbline 394
; else temp[11]=temp[11]-p[2];
mov R30,R20
mov R31,R21
ldd R2,z+2
ldd R3,y+11
sub R3,R2
std y+11,R3
L227:
.dbline 396
; //以上處理小數(shù)點小數(shù)點左邊第二位數(shù)字;
; if(B_Flag==1)
cpi R22,1
brne L233
.dbline 397
; {if(temp[10]==0) {temp[10]=9;B_Flag=0;}
.dbline 397
ldd R2,y+10
tst R2
brne L235
.dbline 397
.dbline 397
ldi R24,9
std y+10,R24
.dbline 397
clr R22
.dbline 397
rjmp L236
L235:
.dbline 398
ldd R24,y+10
subi R24,1
std y+10,R24
L236:
.dbline 398
; else temp[10]=temp[10]-1;}
L233:
.dbline 400
; //以上對存在借位情況時對小數(shù)點左邊第三位進行預(yù)處理;
; if(temp[10]<p[1]) {temp[10]=temp[10]+10-p[1];B_Flag=1;}
mov R30,R20
mov R31,R21
ldd R2,z+1
ldd R3,y+10
cp R3,R2
brsh L241
.dbline 400
.dbline 400
mov R30,R20
mov R31,R21
ldd R2,z+1
mov R24,R3
subi R24,246 ; addi 10
sub R24,R2
std y+10,R24
.dbline 400
ldi R22,1
.dbline 400
rjmp L242
L241:
.dbline 401
; else temp[10]=temp[10]-p[1];
mov R30,R20
mov R31,R21
ldd R2,z+1
ldd R3,y+10
sub R3,R2
std y+10,R3
L242:
.dbline 403
; //以上處理小數(shù)點小數(shù)點左邊第三位數(shù)字;
; if(B_Flag==1)
cpi R22,1
brne L248
.dbline 404
; {if(temp[9]==0) {temp[9]=0;B_Flag=0;}
.dbline 404
ldd R2,y+9
tst R2
brne L250
.dbline 404
.dbline 404
clr R2
std y+9,R2
.dbline 404
clr R22
.dbline 404
rjmp L251
L250:
.dbline 405
ldd R24,y+9
subi R24,1
std y+9,R24
L251:
.dbline 405
; else temp[9]=temp[9]-1;}
L248:
.dbline 407
mov R30,R20
mov R31,R21
ldd R2,z+0
ldd R3,y+9
sub R3,R2
std y+9,R3
.dbline 410
mov R18,R3
ldi R16,41
rcall _WriteMainMemory
.dbline 411
ldd R18,y+10
ldi R16,42
rcall _WriteMainMemory
.dbline 412
ldd R18,y+11
ldi R16,43
rcall _WriteMainMemory
.dbline 413
ldd R18,y+12
ldi R16,44
rcall _WriteMainMemory
.dbline 414
ldd R18,y+13
ldi R16,45
rcall _WriteMainMemory
.dbline 415
L193:
.dbline -2
.dbline 416
; //以上對存在借位情況時對小數(shù)點左邊第二位進行預(yù)處理;
; temp[9]=temp[9]-p[0];
; //以上處理小數(shù)點小數(shù)點左邊第二位數(shù)字;
;
; WriteMainMemory(41,temp[9]);
; WriteMainMemory(42,temp[10]);
; WriteMainMemory(43,temp[11]);
; WriteMainMemory(44,temp[12]);
; WriteMainMemory(45,temp[13]);
; }
; }
L192:
adiw R28,14
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 c
.dbsym r B_Flag 22 c
.dbsym l temp 0 A[14:14]c
.dbsym r p 20 pc
.dbend
.dbfunc e Display _Display fV
; i -> R20
; sel -> R22
; p -> R10,R11
.even
_Display::
rcall push_gset3
mov R10,R16
mov R11,R17
.dbline -1
.dbline 420
;
; //*****************數(shù)碼管顯示函數(shù)********************//
; void Display(uchar *p)
; {uchar sel,i;
.dbline 421
; sel=0x01;
ldi R22,1
.dbline 422
; for(i=0;i<6;i++)
clr R20
rjmp L267
L264:
.dbline 423
.dbline 423
mov R30,R20
clr R31
add R30,R10
adc R31,R11
ldd R30,z+0
clr R31
ldi R24,<_table
ldi R25,>_table
add R30,R24
adc R31,R25
ldd R2,z+0
out 0x1b,R2
.dbline 424
out 0x18,R22
.dbline 425
ldi R16,2
ldi R17,0
rcall _DelayMs
.dbline 426
lsl R22
.dbline 426
L265:
.dbline 422
inc R20
L267:
.dbline 422
cpi R20,6
brlo L264
.dbline -2
.dbline 427
; {PORTA=table[p[i]];
; PORTB=sel;
; DelayMs(2);
; sel=sel<<1;}
; }
L263:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r sel 22 c
.dbsym r p 10 pc
.dbend
.dbfunc e Key_Scan _Key_Scan fc
; recode -> R20
; sccode -> R22
.even
_Key_Scan::
rcall push_gset2
.dbline -1
.dbline 432
;
;
; //****************鍵盤掃描函數(shù)***********************//
; uchar Key_Scan(void)
; {uchar sccode,recode;
.dbline 433
; PORTC=0xf0;
ldi R24,240
out 0x15,R24
.dbline 434
; if((PINC&0xf0)!=0xf0)
in R24,0x13
andi R24,240
cpi R24,240
breq L269
.dbline 435
; {DelayMs(10);
.dbline 435
ldi R16,10
ldi R17,0
rcall _DelayMs
.dbline 436
; if((PINC&0xf0)!=0xf0)
in R24,0x13
andi R24,240
cpi R24,240
breq L271
.dbline 437
; {sccode=0xfe;
.dbline 437
ldi R22,254
rjmp L274
L273:
.dbline 439
; while(sccode&0x10!=0x00)
; {PORTC=sccode; //對第一行鍵盤測試
.dbline 439
out 0x15,R22
.dbline 440
; if((PINC&0xf0)!=0xf0)
in R24,0x13
andi R24,240
cpi R24,240
breq L276
.dbline 441
; {recode=(PINC&0xf0)|0x0f;
.dbline 441
in R20,0x13
andi R20,240
ori R20,15
.dbline 442
; return((~sccode)+(~recode));}
mov R2,R20
com R2
mov R16,R22
com R16
add R16,R2
rjmp L268
L276:
.dbline 444
lsl R22
ori R22,1
.dbline 445
L274:
.dbline 438
sbrc R22,0
rjmp L273
.dbline 446
; else
; sccode=(sccode<<1)|0x01;
; }
; }
L271:
.dbline 447
; }
L269:
.dbline 448
; return(0x00);
clr R16
.dbline -2
L268:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r recode 20 c
.dbsym r sccode 22 c
.dbend
.dbfunc e Key_Process _Key_Process fV
; value -> R22
; temp -> R22
; p -> R20,R21
.even
_Key_Process::
rcall push_gset2
mov R20,R16
mov R21,R17
.dbline -1
.dbline 453
; }
;
; //******************按鍵處理函數(shù)*******************//
; void Key_Process(uchar *p)
; {uchar temp,value;
.dbline 454
; temp=Key_Scan();
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -