⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pp.s

📁 刷卡器的源代码(上位机,下位机,PCB板图)
💻 S
📖 第 1 页 / 共 3 页
字号:
; 	   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 + -