📄 pp.s
字号:
; CopyRam(RxUartDbuf+2,RxUartLeng,writecaltemp,16);//写信息到卡
ldi R24,16
std y+2,R24
ldi R24,<_writecaltemp
ldi R25,>_writecaltemp
std y+1,R25
std y+0,R24
lds R18,_RxUartLeng
ldi R16,<_RxUartDbuf+2
ldi R17,>_RxUartDbuf+2
rcall _CopyRam
.dbline 284
; checktemp=0;
clr R2
sts _checktemp,R2
.dbline 285
ldi R20,2
rjmp L140
L137:
.dbline 285
.dbline 285
ldi R24,<_writecal1
ldi R25,>_writecal1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
lds R2,_checktemp
eor R2,R30
sts _checktemp,R2
.dbline 285
L138:
.dbline 285
inc R20
L140:
.dbline 285
; for(i=2;i<=11;i++){checktemp^=writecal1[i];}
ldi R24,11
cp R24,R20
brsh L137
.dbline 286
clr R20
rjmp L144
L141:
.dbline 286
.dbline 286
ldi R24,<_writecaltemp
ldi R25,>_writecaltemp
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
lds R3,_checktemp
eor R3,R2
sts _checktemp,R3
.dbline 286
L142:
.dbline 286
inc R20
L144:
.dbline 286
; for(i=0;i<16;i++){checktemp^=writecaltemp[i];}
cpi R20,16
brlo L141
.dbline 287
; RxGsmAddr=3;RxUartAddr=1;RxUartWait=20;
ldi R24,3
sts _RxGsmAddr,R24
.dbline 287
ldi R24,1
sts _RxUartAddr,R24
.dbline 287
ldi R24,20
ldi R25,0
sts _RxUartWait+1,R25
sts _RxUartWait,R24
.dbline 288
; TxRomUart(writecal1,12);TxRamUart(writecaltemp,16);TxRamUart(&checktemp,1);
ldi R18,12
ldi R19,0
ldi R16,<_writecal1
ldi R17,>_writecal1
rcall _TxRomUart
.dbline 288
ldi R18,16
ldi R19,0
ldi R16,<_writecaltemp
ldi R17,>_writecaltemp
rcall _TxRamUart
.dbline 288
ldi R18,1
ldi R19,0
ldi R16,<_checktemp
ldi R17,>_checktemp
rcall _TxRamUart
.dbline 289
; return;
rjmp L120
L129:
.dbline 291
; }
; else {RxGsmAddr=1;return;}
.dbline 291
ldi R24,1
sts _RxGsmAddr,R24
.dbline 291
rjmp L120
L145:
.dbline 294
; }
; case(3)://判断写卡是否成功
; {
.dbline 295
; if(RxUartAddr) return;
lds R2,_RxUartAddr
tst R2
breq L146
.dbline 295
rjmp L120
L146:
.dbline 296
; if(CmpsRom(RxUartDbuf,RxUartLeng,writecal1,2)) {RxCalAddr=1;RxGsmAddr=1;OutToneCount=4;TxRomUart("EEWriteERROR ",13);TxRomUart(" ",16);return;}
ldi R24,2
std y+2,R24
ldi R24,<_writecal1
ldi R25,>_writecal1
std y+1,R25
std y+0,R24
lds R18,_RxUartLeng
ldi R16,<_RxUartDbuf
ldi R17,>_RxUartDbuf
rcall _CmpsRom
tst R16
breq L148
.dbline 296
.dbline 296
ldi R24,1
sts _RxCalAddr,R24
.dbline 296
sts _RxGsmAddr,R24
.dbline 296
ldi R24,4
sts _OutToneCount,R24
.dbline 296
ldi R18,13
ldi R19,0
ldi R16,<L150
ldi R17,>L150
rcall _TxRomUart
.dbline 296
ldi R18,16
ldi R19,0
ldi R16,<L151
ldi R17,>L151
rcall _TxRomUart
.dbline 296
rjmp L120
L148:
.dbline 297
; if(CmpsRom(RxUartDbuf+3,RxUartLeng,writecal1+3,1)) {RxCalAddr=1;RxGsmAddr=1;OutToneCount=4;TxRomUart("EEWriteERROR ",13);TxRomUart(" ",16);return;}
ldi R24,1
std y+2,R24
ldi R24,<_writecal1+3
ldi R25,>_writecal1+3
std y+1,R25
std y+0,R24
lds R18,_RxUartLeng
ldi R16,<_RxUartDbuf+3
ldi R17,>_RxUartDbuf+3
rcall _CmpsRom
tst R16
breq L152
.dbline 297
.dbline 297
ldi R24,1
sts _RxCalAddr,R24
.dbline 297
sts _RxGsmAddr,R24
.dbline 297
ldi R24,4
sts _OutToneCount,R24
.dbline 297
ldi R18,13
ldi R19,0
ldi R16,<L150
ldi R17,>L150
rcall _TxRomUart
.dbline 297
ldi R18,16
ldi R19,0
ldi R16,<L151
ldi R17,>L151
rcall _TxRomUart
.dbline 297
rjmp L120
L152:
.dbline 298
ldi R18,13
ldi R19,0
ldi R16,<L156
ldi R17,>L156
rcall _TxRomUart
.dbline 299
ldi R18,16
ldi R19,0
ldi R16,<L151
ldi R17,>L151
rcall _TxRomUart
.dbline 300
ldi R24,1
sts _RxGsmAddr,R24
.dbline 300
L121:
.dbline -2
L120:
adiw R28,3
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e RxCal _RxCal fV
.even
_RxCal::
rcall push_gset1
sbiw R28,3
.dbline -1
.dbline 306
; TxRomUart("EEWrite OK ",13);//EE
; TxRomUart(" ",16);
; RxGsmAddr=1;return;
; }
; }
; }
; //***************************************************************接收卡信息42//
; void RxCal(void)
; {
.dbline 307
; switch(RxCalAddr)
lds R20,_RxCalAddr
clr R21
cpi R20,0
cpc R20,R21
breq L161
X22:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L162
cpi R20,2
ldi R30,0
cpc R21,R30
breq L166
cpi R20,3
ldi R30,0
cpc R21,R30
brne X24
rjmp L171
X24:
cpi R20,4
ldi R30,0
cpc R21,R30
brne X25
rjmp L184
X25:
rjmp L158
X23:
.dbline 308
; {
L161:
.dbline 310
; case(0)://检测停止
; {
.dbline 311
; RxCalAddr=0;return;
clr R2
sts _RxCalAddr,R2
.dbline 311
rjmp L157
L162:
.dbline 314
; }
; case(1)://检测卡是否还在
; {
.dbline 315
; if(!(PIND&0x04)) return;
sbic 0x10,2
rjmp L163
.dbline 315
rjmp L157
L163:
.dbline 316
; TxRomUart("EE ",13);//GG
ldi R18,13
ldi R19,0
ldi R16,<L165
ldi R17,>L165
rcall _TxRomUart
.dbline 317
; TxRomUart(" ",16);
ldi R18,16
ldi R19,0
ldi R16,<L151
ldi R17,>L151
rcall _TxRomUart
.dbline 318
; WriteCommandLCM(0x01,1); //清屏
ldi R18,1
ldi R16,1
rcall _WriteCommandLCM
.dbline 319
; DisplayListChar(0, 0, table_1,12);
ldi R24,12
std y+2,R24
ldi R24,<_table_1
ldi R25,>_table_1
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _DisplayListChar
.dbline 320
; RxCalAddr=2;RxCalDely=0;return;
ldi R24,2
sts _RxCalAddr,R24
.dbline 320
clr R2
sts _RxCalDely,R2
.dbline 320
rjmp L157
L166:
.dbline 323
; }
; case(2)://检测100ms去抖动读卡
; {
.dbline 324
; if(PIND&0x04) RxCalDely=0;
sbis 0x10,2
rjmp L167
.dbline 324
clr R2
sts _RxCalDely,R2
L167:
.dbline 325
; if(++RxCalDely<100) {OutLedAddr=1;return;}
lds R24,_RxCalDely
subi R24,255 ; addi 1
mov R2,R24
sts _RxCalDely,R2
cpi R24,100
brsh L169
.dbline 325
.dbline 325
ldi R24,1
sts _OutLedAddr,R24
.dbline 325
rjmp L157
L169:
.dbline 326
; RxCalAddr=3;RxUartAddr=1;OutLedAddr=2;RxUartWait=0;TxRomUart(readcal1,13);TxRomUart(" ",16);
ldi R24,3
sts _RxCalAddr,R24
.dbline 326
ldi R24,1
sts _RxUartAddr,R24
.dbline 326
ldi R24,2
sts _OutLedAddr,R24
.dbline 326
clr R2
clr R3
sts _RxUartWait+1,R3
sts _RxUartWait,R2
.dbline 326
ldi R18,13
ldi R19,0
ldi R16,<_readcal1
ldi R17,>_readcal1
rcall _TxRomUart
.dbline 326
ldi R18,16
ldi R19,0
ldi R16,<L151
ldi R17,>L151
rcall _TxRomUart
.dbline 327
; return;
rjmp L157
L171:
.dbline 330
; }
; case(3)://判断读卡是否成功
; {
.dbline 331
; if(RxUartAddr) return;
lds R2,_RxUartAddr
tst R2
breq L172
.dbline 331
rjmp L157
L172:
.dbline 332
; if(CmpsRom(RxUartDbuf,RxUartLeng,readcal1,2)) {TxRomUart("EERead ERROR ",13);TxRomUart(" ",16);RxCalAddr=1;OutToneCount=4;return;}//EE
ldi R24,2
std y+2,R24
ldi R24,<_readcal1
ldi R25,>_readcal1
std y+1,R25
std y+0,R24
lds R18,_RxUartLeng
ldi R16,<_RxUartDbuf
ldi R17,>_RxUartDbuf
rcall _CmpsRom
tst R16
breq L174
.dbline 332
.dbline 332
ldi R18,13
ldi R19,0
ldi R16,<L176
ldi R17,>L176
rcall _TxRomUart
.dbline 332
ldi R18,16
ldi R19,0
ldi R16,<L151
ldi R17,>L151
rcall _TxRomUart
.dbline 332
ldi R24,1
sts _RxCalAddr,R24
.dbline 332
ldi R24,4
sts _OutToneCount,R24
.dbline 332
rjmp L157
L174:
.dbline 333
; if(CmpsRom(RxUartDbuf+3,RxUartLeng,readcal1+3,1)) {TxRomUart("EERead ERROR ",13);TxRomUart(" ",16);RxCalAddr=1;OutToneCount=4;return;}//EE
ldi R24,1
std y+2,R24
ldi R24,<_readcal1+3
ldi R25,>_readcal1+3
std y+1,R25
std y+0,R24
lds R18,_RxUartLeng
ldi R16,<_RxUartDbuf+3
ldi R17,>_RxUartDbuf+3
rcall _CmpsRom
tst R16
breq L177
.dbline 333
.dbline 333
ldi R18,13
ldi R19,0
ldi R16,<L176
ldi R17,>L176
rcall _TxRomUart
.dbline 333
ldi R18,16
ldi R19,0
ldi R16,<L151
ldi R17,>L151
rcall _TxRomUart
.dbline 333
ldi R24,1
sts _RxCalAddr,R24
.dbline 333
ldi R24,4
sts _OutToneCount,R24
.dbline 333
rjmp L157
L177:
.dbline 334
; CopyRam(RxUartDbuf+4,RxUartLeng,NameBuf,7);
ldi R24,7
std y+2,R24
ldi R24,<_NameBuf
ldi R25,>_NameBuf
std y+1,R25
std y+0,R24
lds R18,_RxUartLeng
ldi R16,<_RxUartDbuf+4
ldi R17,>_RxUartDbuf+4
rcall _CopyRam
.dbline 335
; CopyRam(RxUartDbuf+11,RxUartLeng,NumBuf,9);
ldi R24,9
std y+2,R24
ldi R24,<_NumBuf
ldi R25,>_NumBuf
std y+1,R25
std y+0,R24
lds R18,_RxUartLeng
ldi R16,<_RxUartDbuf+11
ldi R17,>_RxUartDbuf+11
rcall _CopyRam
.dbline 336
; TxRomUart("DD",2);//DD
ldi R18,2
ldi R19,0
ldi R16,<L135
ldi R17,>L135
rcall _TxRomUart
.dbline 337
; TxRamUart(NameBuf,7);
ldi R18,7
ldi R19,0
ldi R16,<_NameBuf
ldi R17,>_NameBuf
rcall _TxRamUart
.dbline 339
; //TxRomUart("CC",2);//CC
; TxRamUart(NumBuf,9);
ldi R18,9
ldi R19,0
ldi R16,<_NumBuf
ldi R17,>_NumBuf
rcall _TxRamUart
.dbline 340
; TxRomUart("Read OK ",11);//EE
ldi R18,11
ldi R19,0
ldi R16,<L183
ldi R17,>L183
rcall _TxRomUart
.dbline 341
; RxCalAddr=4;OutToneCount=2;RxUartAddr=1;//接收处理
ldi R24,4
sts _RxCalAddr,R24
.dbline 341
ldi R24,2
sts _OutToneCount,R24
.dbline 341
ldi R24,1
sts _RxUartAddr,R24
.dbline 342
; return;
rjmp L157
L184:
.dbline 345
.dbline 346
ldi R24,5
std y+2,R24
ldi R24,<_Name
ldi R25,>_Name
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _DisplayListChar
.dbline 347
ldi R24,7
std y+2,R24
ldi R24,<_NameBuf
ldi R25,>_NameBuf
std y+1,R25
std y+0,R24
clr R18
ldi R16,5
rcall _DisplayListChar1
.dbline 348
ldi R24,4
std y+2,R24
ldi R24,<_Num
ldi R25,>_Num
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _DisplayListChar
.dbline 349
ldi R24,9
std y+2,R24
ldi R24,<_NumBuf
ldi R25,>_NumBuf
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,4
rcall _DisplayListChar1
.dbline 350
ldi R24,1
sts _RxCalAddr,R24
.dbline 350
L158:
.dbline -2
L157:
adiw R28,3
rcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.dbfunc e Time0 _Time0 fV
.even
_Time0::
rcall push_gset2
.dbline -1
.dbline 356
; }
; case(4):
; {
; DisplayListChar(0, 0, Name,5);
; DisplayListChar1(5, 0, NameBuf,7);
; DisplayListChar(0, 1, Num,4);
; DisplayListChar1(4, 1, NumBuf,9);
; RxCalAddr=1;return;
; }
; }
; }
; //*********************************************调用分时任务//
; void Time0(void)
; {
L186:
.dbline 357
L187:
.dbline 357
; while(TCNT0<(fosc/64/500));//毫秒
ldi R20,250
ldi R21,0
ldi R22,0
ldi R23,0
in R2,0x32
clr R3
clr R4
clr R5
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlt L186
.dbline 358
; TCNT0=0;
clr R2
out 0x32,R2
.dbline 359
; RxCal();
rcall _RxCal
.dbline 360
; RxGsm();//远程接收
rcall _RxGsm
.dbline -2
L185:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; j -> <dead>
; i -> <dead>
.even
_main::
sbiw R28,3
.dbline -1
.dbline 365
;
; }
; //***************************************************主程序//
; void main(void)
; {
.dbline 367
; unsigned char i,j;
; init_atmega();
rcall _init_atmega
.dbline 368
; delay_ms(400); //启动等待,等LCM讲入工作状态
ldi R16,400
ldi R17,1
rcall _delay_ms
.dbline 369
; LCMInit(); //LCM初始化
rcall _LCMInit
.dbline 370
; delay_ms(10); //延时片刻
ldi R16,10
ldi R17,0
rcall _delay_ms
.dbline 371
; DisplayListChar(0, 0, table_1,12);
ldi R24,12
std y+2,R24
ldi R24,<_table_1
ldi R25,>_table_1
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _DisplayListChar
.dbline 372
; RxCalAddr=2;
ldi R24,2
sts _RxCalAddr,R24
.dbline 373
; RxGsmAddr=1;
ldi R24,1
sts _RxGsmAddr,R24
.dbline 374
; OutLedAddr=1;
sts _OutLedAddr,R24
.dbline 375
; OutToneAddr=1;
sts _OutToneAddr,R24
rjmp L191
L190:
.dbline 377
.dbline 378
rcall _Time0
.dbline 379
L191:
.dbline 376
rjmp L190
X26:
.dbline -2
L189:
adiw R28,3
.dbline 0 ; func end
ret
.dbsym l j 4 c
.dbsym l i 4 c
.dbend
.area bss(ram, con, rel)
.dbfile I:\刷卡器\pp.c
_RxCalDely::
.blkb 1
.dbfile I:\刷卡器/define.h
.dbsym e RxCalDely _RxCalDely c
_RxCalAddr::
.blkb 1
.dbsym e RxCalAddr _RxCalAddr c
_RxGsmAddr::
.blkb 1
.dbsym e RxGsmAddr _RxGsmAddr c
_OutToneDely::
.blkb 2
.dbsym e OutToneDely _OutToneDely i
_OutToneCount1::
.blkb 1
.dbsym e OutToneCount1 _OutToneCount1 c
_OutToneCount::
.blkb 1
.dbsym e OutToneCount _OutToneCount c
_OutToneAddr::
.blkb 1
.dbsym e OutToneAddr _OutToneAddr c
_OutLedDely::
.blkb 2
.dbsym e OutLedDely _OutLedDely i
_OutLedAddr::
.blkb 1
.dbsym e OutLedAddr _OutLedAddr c
_RxUartDely::
.blkb 2
.dbsym e RxUartDely _RxUartDely i
_RxUartWait::
.blkb 2
.dbsym e RxUartWait _RxUartWait i
_RxUartLeng::
.blkb 2
.dbsym e RxUartLeng _RxUartLeng i
_RxUartTemp::
.blkb 1
.dbsym e RxUartTemp _RxUartTemp c
_RxUartAddr::
.blkb 1
.dbsym e RxUartAddr _RxUartAddr c
_RxUartDbuf::
.blkb 250
.dbsym e RxUartDbuf _RxUartDbuf A[250:250]c
_NameBuf::
.blkb 7
.dbsym e NameBuf _NameBuf A[7:7]c
_NumBuf::
.blkb 9
.dbsym e NumBuf _NumBuf A[9:9]c
_checktemp::
.blkb 1
.dbsym e checktemp _checktemp c
_writecaltemp::
.blkb 16
.dbsym e writecaltemp _writecaltemp A[16:16]c
.area lit(rom, con, rel)
L183:
.byte 'R,'e,'a,'d,32,32,32,32,'O,'K,32,0
L176:
.byte 'E,'E,'R,'e,'a,'d,32,'E,'R,'R,'O,'R,32,0
L165:
.byte 'E,'E,32,32,32,32,32,32,32,32,32,32,32,0
L156:
.byte 'E,'E,'W,'r,'i,'t,'e,32,32,32,'O,'K,32,0
L151:
.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.byte 0
L150:
.byte 'E,'E,'W,'r,'i,'t,'e,'E,'R,'R,'O,'R,32,0
L135:
.byte 'D,'D,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -