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

📄 26l.s

📁 接触式IC卡的读写函数
💻 S
📖 第 1 页 / 共 2 页
字号:
;    i=readx(); stop();
	rcall _readx
	mov R20,R16
	.dbline 123
	rcall _stop
	.dbline 124
;    delayus(10);
	ldi R16,10
	ldi R17,0
	rcall _delayus
	.dbline 125
;    return(i);
	mov R16,R20
	.dbline -2
L35:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r address 20 c
	.dbend
	.dbfunc e x24c02_write _x24c02_write fV
;           info -> R20
;        address -> R22
	.even
_x24c02_write::
	rcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 128
; }
; void x24c02_write(uchar address,uchar info)
; {  
	.dbline 130
;    //CLI();
;    start(); writex(0xa0);
	rcall _start
	.dbline 130
	ldi R16,160
	rcall _writex
	.dbline 131
;    clock(); writex(address);
	rcall _clock
	.dbline 131
	mov R16,R22
	rcall _writex
	.dbline 132
;    clock(); writex(info);
	rcall _clock
	.dbline 132
	mov R16,R20
	rcall _writex
	.dbline 133
;    clock(); stop();
	rcall _clock
	.dbline 133
	rcall _stop
	.dbline 134
;    delayus(50);
	ldi R16,50
	ldi R17,0
	rcall _delayus
	.dbline -2
L36:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r info 20 c
	.dbsym r address 22 c
	.dbend
	.dbfunc e jiancheicka _jiancheicka fV
;              a -> R20
	.even
_jiancheicka::
	rcall push_gset2
	.dbline -1
	.dbline 139
;    //SEI();
; }
;    
; void jiancheicka(void)
; {
	.dbline 140
;   uchar a=0;
	clr R20
	.dbline 141
;  DDRB&=~(1<<5);
	cbi 0x17,5
	.dbline 142
;  PORTB|=(1<<5);
	sbi 0x18,5
	.dbline 143
;   if(((PINB&0X20)==0)&(kawei==1))
	sbic 0x16,5
	rjmp L40
	ldi R22,1
	ldi R23,0
	rjmp L41
L40:
	clr R22
	clr R23
L41:
	lds R24,_kawei
	cpi R24,1
	brne L42
	ldi R20,1
	ldi R21,0
	rjmp L43
L42:
	clr R20
	clr R21
L43:
	mov R2,R22
	mov R3,R23
	and R2,R20
	and R3,R21
	tst R2
	brne X1
	tst R3
	breq L38
X1:
	.dbline 144
;   {
	.dbline 145
;    delayus(100);
	ldi R16,100
	ldi R17,0
	rcall _delayus
	.dbline 146
;     if(((PINB&0X20)==0)&(kawei==1))
	sbic 0x16,5
	rjmp L46
	ldi R22,1
	ldi R23,0
	rjmp L47
L46:
	clr R22
	clr R23
L47:
	lds R24,_kawei
	cpi R24,1
	brne L48
	ldi R20,1
	ldi R21,0
	rjmp L49
L48:
	clr R20
	clr R21
L49:
	mov R2,R22
	mov R3,R23
	and R2,R20
	and R3,R21
	tst R2
	brne X2
	tst R3
	breq L44
X2:
	.dbline 147
; 	{ 
	.dbline 148
; 	  kawei=0;
	clr R2
	sts _kawei,R2
	.dbline 149
;                           kashu[0]=x24c02_read(2);
	ldi R16,2
	rcall _x24c02_read
	sts _kashu,R16
	.dbline 150
;                              delayus(200);
	ldi R16,200
	ldi R17,0
	rcall _delayus
	.dbline 151
; 							  kashu[1]=x24c02_read(4);
	ldi R16,4
	rcall _x24c02_read
	sts _kashu+1,R16
	.dbline 152
;                              delayus(200);
	ldi R16,200
	ldi R17,0
	rcall _delayus
	.dbline 153
; 							 fengming(10);
	ldi R16,10
	rcall _fengming
	.dbline 154
;    }
L44:
	.dbline 155
;   }
L38:
	.dbline 156
;     if(((PINB&0X20)!=0)&(kawei==0))
	sbis 0x16,5
	rjmp L53
	ldi R22,1
	ldi R23,0
	rjmp L54
L53:
	clr R22
	clr R23
L54:
	lds R2,_kawei
	tst R2
	brne L55
	ldi R20,1
	ldi R21,0
	rjmp L56
L55:
	clr R20
	clr R21
L56:
	mov R2,R22
	mov R3,R23
	and R2,R20
	and R3,R21
	tst R2
	brne X3
	tst R3
	breq L51
X3:
	.dbline 157
;   {
	.dbline 158
;    delayus(100);
	ldi R16,100
	ldi R17,0
	rcall _delayus
	.dbline 159
;     if(((PINB&0X20)!=0)&(kawei==0))
	sbis 0x16,5
	rjmp L59
	ldi R22,1
	ldi R23,0
	rjmp L60
L59:
	clr R22
	clr R23
L60:
	lds R2,_kawei
	tst R2
	brne L61
	ldi R20,1
	ldi R21,0
	rjmp L62
L61:
	clr R20
	clr R21
L62:
	mov R2,R22
	mov R3,R23
	and R2,R20
	and R3,R21
	tst R2
	brne X4
	tst R3
	breq L57
X4:
	.dbline 160
; 	{
	.dbline 161
; 	 kawei=1;
	ldi R24,1
	sts _kawei,R24
	.dbline 162
; 	 fengming(10);
	ldi R16,10
	rcall _fengming
	.dbline 163
;      }
L57:
	.dbline 164
L51:
	.dbline -2
L37:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r a 20 c
	.dbend
	.dbfunc e xianshu _xianshu fV
	.even
_xianshu::
	.dbline -1
	.dbline 170
; 	}	 
; }    							 
; 	 
; 	 
; 	 
; void xianshu(void)
; { 
	.dbline 172
;   //anjianweiguan;
;   DDRA=0Xff;
	ldi R24,255
	out 0x1a,R24
	.dbline 173
;   PORTA=0X7F;
	ldi R24,127
	out 0x1b,R24
	.dbline 174
;   PORTB&=~(0<<1);
	in R24,0x18
	andi R24,255
	out 0x18,R24
	.dbline 175
;   PORTA=disp[kashu[0]]&0x7f;
	ldi R24,<_disp
	ldi R25,>_disp
	lds R30,_kashu
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	andi R24,127
	out 0x1b,R24
	.dbline 176
;   delayms(1);
	ldi R16,1
	ldi R17,0
	rcall _delayms
	.dbline 177
;   PORTB|=(0<<3); 
	in R2,0x18
	out 0x18,R2
	.dbline 178
;   PORTA=disp[kashu[1]]&0x7f;
	ldi R24,<_disp
	ldi R25,>_disp
	lds R30,_kashu+1
	clr R31
	sbrc R30,7
	com R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	andi R24,127
	out 0x1b,R24
	.dbline 179
;   PORTB&=~(0<<3);
	in R24,0x18
	andi R24,255
	out 0x18,R24
	.dbline 180
;   delayms(1);
	ldi R16,1
	ldi R17,0
	rcall _delayms
	.dbline 181
;   PORTB|=(0<<3);
	in R2,0x18
	out 0x18,R2
	.dbline 183
;   //anjianweikai;
;     DDRA=0X80;
	ldi R24,128
	out 0x1a,R24
	.dbline 184
;   PORTA=0x7f;
	ldi R24,127
	out 0x1b,R24
	.dbline 185
;   ;
	.dbline -2
L63:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e anjian _anjian fV
	.even
_anjian::
	.dbline -1
	.dbline 189
; }
;   
;  void anjian(void)
;  {
	.dbline 191
;   
;   DDRA=0X80;
	ldi R24,128
	out 0x1a,R24
	.dbline 192
;   PORTA=0x7f;
	ldi R24,127
	out 0x1b,R24
	.dbline 193
; delayus(10);
	ldi R16,10
	ldi R17,0
	rcall _delayus
	.dbline 194
;  if((PINA&0X4B)!=0x4B)
	in R24,0x19
	andi R24,75
	cpi R24,75
	brne X5
	rjmp L66
X5:
	.dbline 195
;  {
	.dbline 197
;   
;     DDRA=0X80;
	ldi R24,128
	out 0x1a,R24
	.dbline 198
;   PORTA=0x7f;
	ldi R24,127
	out 0x1b,R24
	.dbline 199
;   delayms(1);
	ldi R16,1
	ldi R17,0
	rcall _delayms
	.dbline 200
;   if((PINA&0X4b)!=0X4b)
	in R24,0x19
	andi R24,75
	cpi R24,75
	brne X6
	rjmp L68
X6:
	.dbline 201
;   {
	.dbline 202
;    fengming(10);
	ldi R16,10
	rcall _fengming
	.dbline 203
;      DDRA=0X80;
	ldi R24,128
	out 0x1a,R24
	.dbline 204
;   PORTA=0x7f;
	ldi R24,127
	out 0x1b,R24
	.dbline 205
;    if((PINA&0X40)==0)            //+
	sbic 0x19,6
	rjmp L70
	.dbline 206
;    {
	.dbline 207
;    kashu[1]++;
	lds R24,_kashu+1
	subi R24,255    ; addi 1
	sts _kashu+1,R24
	.dbline 208
;    if(kashu[1]>9)
	ldi R24,9
	lds R2,_kashu+1
	cp R24,R2
	brge L81
	.dbline 209
;    {
	.dbline 210
;     kashu[1]=0;
	clr R2
	sts _kashu+1,R2
	.dbline 211
; 	kashu[0]++;
	lds R24,_kashu
	subi R24,255    ; addi 1
	sts _kashu,R24
	.dbline 212
; 	if(kashu[0]>9)
	ldi R24,9
	lds R2,_kashu
	cp R24,R2
	brge L81
	.dbline 213
; 	{
	.dbline 214
; 	 kashu[0]=9;
	sts _kashu,R24
	.dbline 215
; 	 kashu[1]=9;
	sts _kashu+1,R24
	.dbline 216
; 	 }
	.dbline 217
;     } 
	rjmp L81
L80:
	.dbline 219
	.dbline 220
	rcall _xianshu
	.dbline 221
L81:
	.dbline 218
;     while((PINA&0X40)==0)
	sbis 0x19,6
	rjmp L80
	.dbline 222
; 	 {
; 	  xianshu();
;     }	
;    }
L70:
	.dbline 223
; 	if((PINA&0X08)==0)  //-档
	sbic 0x19,3
	rjmp L83
	.dbline 224
; 	{
	.dbline 225
; 	 kashu[1]--;
	lds R24,_kashu+1
	subi R24,1
	sts _kashu+1,R24
	.dbline 226
; 	 if(kashu[1]<0)
	lds R24,_kashu+1
	cpi R24,0
	brge L94
	.dbline 227
; 	 {
	.dbline 228
; 	  kashu[1]=0;
	clr R2
	sts _kashu+1,R2
	.dbline 229
; 	  kashu[0]--;
	lds R24,_kashu
	subi R24,1
	sts _kashu,R24
	.dbline 230
; 	  if(kashu[0]<0)
	lds R24,_kashu
	cpi R24,0
	brge L94
	.dbline 231
; 	  {
	.dbline 232
; 	   kashu[0]=0;
	sts _kashu,R2
	.dbline 233
; 	   kashu[1]=0;
	sts _kashu+1,R2
	.dbline 234
; 	  }
	.dbline 235
; 	 }  
	rjmp L94
L93:
	.dbline 237
	.dbline 238
	rcall _xianshu
	.dbline 239
L94:
	.dbline 236
; 	 while((PINA&0X08)==0)
	sbis 0x19,3
	rjmp L93
	.dbline 240
; 	 {
; 	  xianshu();
; 	 } 
; 	}
L83:
	.dbline 241
; 	if((PINA&0X02)==0)  //2档
	sbic 0x19,1
	rjmp L96
	.dbline 242
; 	{
	.dbline 243
; 	 jianshu=1;
	ldi R24,1
	sts _jianshu,R24
	rjmp L99
L98:
	.dbline 245
	.dbline 246
	rcall _xianshu
	.dbline 247
L99:
	.dbline 244
; 	 while((PINA&0X02)==0)
	sbis 0x19,1
	rjmp L98
	.dbline 248
; 	 {
; 	  xianshu();
; 	 }
; 	} 
L96:
	.dbline 249
; 	if((PINA&0X01)==0)
	sbic 0x19,0
	rjmp L101
	.dbline 250
; 	{
	.dbline 251
; 	 jianshu=2;
	ldi R24,2
	sts _jianshu,R24
	rjmp L104
L103:
	.dbline 253
	.dbline 254
	rcall _xianshu
	.dbline 255
L104:
	.dbline 252
; 	 while((PINA&0X01)==0)
	sbis 0x19,0
	rjmp L103
	.dbline 256
; 	 {
; 	  xianshu();
; 	 }
; 	} 
L101:
	.dbline 257
;    }	
L68:
	.dbline 258
L66:
	.dbline -2
L65:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 264
;   }	
;   //anjianweiguan;
; }
; 
; 
;  void main(void)        //主程序
; {
	.dbline 265
;     MCUCR=0;
	clr R2
	out 0x35,R2
	.dbline 266
;     DDRA = 0XFF;      /*方向输出*/ 
	ldi R24,255
	out 0x1a,R24
	.dbline 267
;     PORTA = 0X7F;      /*高电平*/ 
	ldi R24,127
	out 0x1b,R24
	.dbline 268
; 	DDRB = 0xCA;
	ldi R24,202
	out 0x17,R24
	.dbline 269
; 	PORTB = 0x35;
	ldi R24,53
	out 0x18,R24
	.dbline 270
; 	kashu[0]=4;
	ldi R24,4
	sts _kashu,R24
	.dbline 271
; 	kashu[1]=5;
	ldi R24,5
	sts _kashu+1,R24
	rjmp L109
L108:
	.dbline 278
	.dbline 279
	rcall _jiancheicka
	.dbline 280
	rcall _anjian
	.dbline 281
	rcall _xianshu
	.dbline 282
L109:
	.dbline 277
	rjmp L108
X7:
	.dbline -2
L106:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -