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

📄 main.s

📁 一个单片机的完整开发程序AVR的
💻 S
📖 第 1 页 / 共 5 页
字号:
;       nques_id -> y+212
;          adc_l -> R12
;          adc_h -> R22
;       key_flag -> y+211
;        adc_rel -> R20,R21
;      keyc_flag -> y+210
;              d -> y+209
;        adc_old -> y+207
;         n_ques -> y+100
;          n_num -> R14
;            key -> y+206
;        ques_id -> y+205
;            ans -> y+0
;              j -> y+204
;              k -> y+203
;              i -> y+202
	.even
_main::
	sbiw R28,63
	sbiw R28,63
	sbiw R28,63
	sbiw R28,29  ; offset = 218
	.dbline -1
	.dbline 188
; }
; 
; void main()
; {
	.dbline 193
;  	 unsigned char i,j,k,temp,ques_id,key,key_flag,d,d1,
; 	               n_ques[100],n_num,nques_id,score,ans[100],keya_flag,
; 	               keyb_flag,keyc_flag,keyd_flag,keye_flag,adc_h,adc_l;
; 	 unsigned int adc_rel,adc_old;
; 	 guest_id=EEPROMread(0x02);
	ldi R16,2
	ldi R17,0
	xcall _EEPROMread
	sts _guest_id,R16
	.dbline 194
; 	 host_id=EEPROMread(0x03);
	ldi R16,3
	ldi R17,0
	xcall _EEPROMread
	sts _host_id,R16
	.dbline 195
; 	 i=0;
	clr R0
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R0
	.dbline 196
; 	 j=0;
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R0
	.dbline 197
; 	 k=0;
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R0
	.dbline 198
; 	 t=0;
	clr R2
	sts _t,R2
	.dbline 199
; 	 temp=0;
	movw R30,R28
	subi R30,39  ; addi 217
	sbci R31,255
	std z+0,R0
	.dbline 200
; 	 ques_num=0;
	sts _ques_num,R2
	.dbline 201
; 	 ques_id=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	std z+0,R0
	.dbline 202
; 	 nques_id=1;
	movw R30,R28
	subi R30,44  ; addi 212
	sbci R31,255
	std z+0,R0
	.dbline 203
; 	 keya_flag=0;
	clr R0
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	std z+0,R0
	.dbline 204
; 	 keyb_flag=0;
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	std z+0,R0
	.dbline 205
; 	 keyc_flag=0;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+0,R0
	.dbline 206
; 	 keyd_flag=0;
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	std z+0,R0
	.dbline 207
; 	 keye_flag=0;
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	std z+0,R0
	.dbline 208
; 	 key_flag=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,45  ; addi 211
	sbci R31,255
	std z+0,R0
	.dbline 209
; 	 init_devices();
	xcall _init_devices
	.dbline 210
; 	 init_lcd();
	xcall _init_lcd
	.dbline 211
; 	 display(0x00);
	clr R16
	xcall _display
	.dbline 224
;    //temp=EEPROMread(0x04);
;    //ques_num=EEPROMread(0x05);
;    //score=EEPROMread(0x06);
;    //for(i=0;i<100;i++)
;    //{
;    // ques[i]=EEPROMread(i+7);
;   // } 
;   //for(i=0;i<100;i++)
;    //{
;    // ans[i]=EEPROMread(i+107);
;   // } 
; 	// while(1);
; 	  if((PIND|0x9f)==0x9f)
	in R24,0x10
	ori R24,159
	cpi R24,159
	breq X4
	xjmp L60
X4:
	.dbline 225
; 	 {
	xjmp L63
L62:
	.dbline 227
; 	  while(key!=5)
; 	  {
	.dbline 228
; 		 if(keyc_flag==0)
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R0,z+0
	tst R0
	brne L65
	.dbline 229
; 		{
	.dbline 230
; 		 i=host_id/10;
	ldi R17,10
	lds R16,_host_id
	xcall div8u
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 231
; 		 k=host_id-(10*i);
	ldi R24,10
	mov R0,R16
	mul R24,R0
	lds R2,_host_id
	sub R2,R0
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R2
	.dbline 232
; 		 lcd_buffer[9]=0x02;
	ldi R24,2
	sts _lcd_buffer+9,R24
	.dbline 233
; 		 lcd_buffer[1]=0;
	clr R2
	sts _lcd_buffer+1,R2
	.dbline 234
; 		}
	xjmp L66
L65:
	.dbline 236
; 		else
; 		{
	.dbline 237
; 		 i=guest_id/10;
	ldi R17,10
	lds R16,_guest_id
	xcall div8u
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 238
; 		 k=guest_id-10*i;
	ldi R24,10
	mov R0,R16
	mul R24,R0
	lds R2,_guest_id
	sub R2,R0
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R2
	.dbline 239
; 		 lcd_buffer[1]=0x02;
	ldi R24,2
	sts _lcd_buffer+1,R24
	.dbline 240
; 		 lcd_buffer[9]=0;
	clr R2
	sts _lcd_buffer+9,R2
	.dbline 241
; 		}
L66:
	.dbline 242
; 		lcd_buffer[7]=table[i];
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _lcd_buffer+7,R2
	.dbline 243
; 		lcd_buffer[15]=table[k]&0xef;
	movw R26,R28
	subi R26,53  ; addi 203
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	andi R24,239
	sts _lcd_buffer+15,R24
	.dbline 244
; 		send_data(14,lcd_buffer[7]);
	mov R18,R2
	ldi R16,14
	xcall _send_data
	.dbline 245
; 		send_data(30,lcd_buffer[15]);
	lds R18,_lcd_buffer+15
	ldi R16,30
	xcall _send_data
	.dbline 246
; 		send_data(2,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 247
; 		send_data(18,lcd_buffer[9]);
	lds R18,_lcd_buffer+9
	ldi R16,18
	xcall _send_data
	.dbline 248
; 		key=key_scan();
	xcall _key_scan
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	std z+0,R16
	.dbline 249
; 		if(key==3)
	cpi R16,3
	brne L77
	.dbline 250
; 		keyc_flag=~keyc_flag;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R0,z+0
	com R0
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+0,R0
L77:
	.dbline 251
; 		if(key==7)
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,7
	brne L79
	.dbline 252
; 		{
	.dbline 253
; 		 if(keyc_flag==0)
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R0,z+0
	tst R0
	brne L81
	.dbline 254
; 		 host_id++;
	lds R24,_host_id
	subi R24,255    ; addi 1
	sts _host_id,R24
	xjmp L82
L81:
	.dbline 256
; 		 else
; 		 guest_id++;
	lds R24,_guest_id
	subi R24,255    ; addi 1
	sts _guest_id,R24
L82:
	.dbline 257
; 		}
L79:
	.dbline 258
; 		if(key==4)
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,4
	brne L83
	.dbline 259
; 		{
	.dbline 260
; 		 if(keyc_flag==0)
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R0,z+0
	tst R0
	brne L85
	.dbline 261
; 		 host_id--;
	lds R24,_host_id
	subi R24,1
	sts _host_id,R24
	xjmp L86
L85:
	.dbline 263
; 		 else
; 		 guest_id--;
	lds R24,_guest_id
	subi R24,1
	sts _guest_id,R24
L86:
	.dbline 264
; 		}
L83:
	.dbline 265
; 		if(host_id>80||host_id<1)
	ldi R24,80
	lds R2,_host_id
	cp R24,R2
	brlo L89
	mov R24,R2
	cpi R24,1
	brsh L87
L89:
	.dbline 266
; 		host_id=1;
	ldi R24,1
	sts _host_id,R24
L87:
	.dbline 267
; 		if(guest_id>80||guest_id<1)
	ldi R24,80
	lds R2,_guest_id
	cp R24,R2
	brlo L92
	mov R24,R2
	cpi R24,1
	brsh L90
L92:
	.dbline 268
; 		guest_id=1;
	ldi R24,1
	sts _guest_id,R24
L90:
	.dbline 269
; 		if(key==5)
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,5
	breq X5
	xjmp L93
X5:
	.dbline 270
; 		{
	.dbline 271
; 		 lcd_buffer[0]=table[i];
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _lcd_buffer,R2
	.dbline 272
; 		 lcd_buffer[6]=table[k];
	movw R26,R28
	subi R26,53  ; addi 203
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _lcd_buffer+6,R2
	.dbline 274
; 		
; 		 PORTB&=~BIT(PB5);
	cbi 0x18,5
	.dbline 275
; 		 PORTC&=~BIT(PC1);
	cbi 0x15,1
	xjmp L97
L96:
	.dbline 277
; 		 while(!((PIND|0x97)==0x97))
; 		{ 
	.dbline 278
; 		 if(t<50)
	lds R24,_t
	cpi R24,50
	brsh L99
	.dbline 279
; 		 {
	.dbline 280
; 		 send_data(0x10,table[0]|0x10);
	lds R18,_table
	ori R18,16
	ldi R16,16
	xcall _send_data
	.dbline 281
;     	 send_data(0,lcd_buffer[0]);
	lds R18,_lcd_buffer
	clr R16
	xcall _send_data
	.dbline 282
;     	 send_data(12,lcd_buffer[6]);
	lds R18,_lcd_buffer+6
	ldi R16,12
	xcall _send_data
	.dbline 283
; 		 }
L99:
	.dbline 284
; 		 if(t>50)
	ldi R24,50
	lds R2,_t
	cp R24,R2
	brsh L102
	.dbline 285
; 		 {
	.dbline 286
; 		 send_data(0x10,0);
	clr R18
	ldi R16,16
	xcall _send_data
	.dbline 287
;     	 send_data(0,0);
	clr R18
	clr R16
	xcall _send_data
	.dbline 288
;     	 send_data(12,0);
	clr R18
	ldi R16,12
	xcall _send_data
	.dbline 289
; 		 }
L102:
	.dbline 290
L97:
	.dbline 276
	in R24,0x10
	ori R24,151
	cpi R24,151
	brne L96
	.dbline 291
; 		}
; 		 EEPROMwrite(0x02,guest_id);
	lds R18,_guest_id
	ldi R16,2
	ldi R17,0
	xcall _EEPROMwrite
	.dbline 292
; 		 EEPROMwrite(0x03,host_id);
	lds R18,_host_id
	ldi R16,3
	ldi R17,0
	xcall _EEPROMwrite
	.dbline 293
; 		}
L93:
	.dbline 294
L63:
	.dbline 226
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,5
	breq X6
	xjmp L62
X6:
	.dbline 295
;       }
; 	 }
L60:
	.dbline 296
; 	i=guest_id/10;
	ldi R17,10
	lds R16,_guest_id
	xcall div8u
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 297
; 	j=guest_id-10*i;
	ldi R24,10
	mov R0,R16
	mul R24,R0
	lds R2,_guest_id
	sub R2,R0
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R2
	.dbline 298
; 	lcd_buffer[0]=table[i];
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _lcd_buffer,R2
	.dbline 299
; 	lcd_buffer[6]=table[j];
	movw R26,R28
	subi R26,52  ; addi 204
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _lcd_buffer+6,R2
	.dbline 300
; 	send_data(0x10,table[0]|0x10);
	lds R18,_table
	ori R18,16
	ldi R16,16
	xcall _send_data
	.dbline 301
;     send_data(0,lcd_buffer[0]);
	lds R18,_lcd_buffer
	clr R16
	xcall _send_data
	.dbline 302
;     send_data(12,lcd_buffer[6]);
	lds R18,_lcd_buffer+6
	ldi R16,12
	xcall _send_data
	.dbline 304
; 	
; 	work_state();
	sbi 0x15,4
	.dbline 305
;     rece_state();
	cbi 0x15,2
	.dbline 307
; 	
; 	for(i=0;i<100;i++)
	clr R0
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R0
	xjmp L109
L106:
	.dbline 308
	.dbline 309
	ldi R24,<_ques
	ldi R25,>_ques
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 310
	movw R24,R28
	subi R24,156  ; offset = 100
	sbci R25,255
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 311
	movw R24,R28
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 312
L107:
	.dbline 307
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R0
L109:
	.dbline 307
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R24,z+0
	cpi R24,100
	brsh X7
	xjmp L106
X7:
	.dbline 313
; 	{		
; 		ques[i]=0;
; 		n_ques[i]=0;
; 		ans[i]=0;
; 	}
; 	d=0xF0;
	ldi R24,240
	movw R30,R28
	subi R30,47  ; addi 209
	sbci R31,255
	std z+0,R24
	xjmp L111
L110:
	.dbline 316
; 
;  while(1)
;  {
	.dbline 317
;   n_num=0;
	clr R14
	.dbline 318
;   if(t==1)
	lds R24,_t
	cpi R24,1
	breq X8
	xjmp L113
X8:
	.dbline 319
;   {
	.dbline 320
;     i=receive();
	xcall _receive
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 321
; 	if(i)
	mov R0,R16
	tst R16
	breq L115
	.dbline 322
;   	for(j=0;j<11;j++)
	clr R0
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R0
	xjmp L120
L117:
	.dbline 323
	ldi R24,<_data
	ldi R25,>_data
	movw R26,R28
	subi R26,52  ; addi 204
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	movw R30,R28
	subi R30,47  ; addi 209
	sbci R31,255
	ldd R0,z+0
	eor R0,R2
	movw R30,R28
	subi R30,47  ; addi 209
	sbci R31,255
	std z+0,R0
L118:
	.dbline 322
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R0
L120:
	.dbline 322
	movw R30,R28

⌨️ 快捷键说明

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