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

📄 ps2_study.s

📁 基于ps/2接口协议的键盘学习机,采用128*64LCD显示,使用单片机为,mega16
💻 S
📖 第 1 页 / 共 5 页
字号:
	ldi R18,4
	ldi R16,18
	xcall _LCD_char
	.dbline 408
;    LCD_char(36,4,l,0);
	clr R2
	std y+2,R2
	ldi R24,<_l
	ldi R25,>_l
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,36
	xcall _LCD_char
	.dbline 409
;    LCD_char(54,4,m,0);
	clr R2
	std y+2,R2
	ldi R24,<_m
	ldi R25,>_m
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,54
	xcall _LCD_char
	.dbline 410
;    LCD_char(9,0,p,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_p
	ldi R25,>_p
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,9
	xcall _LCD_char
	.dbline 411
;    LCD_char(18,0,q,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_q
	ldi R25,>_q
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,18
	xcall _LCD_char
	.dbline 412
;    LCD_char(27,0,r,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_r
	ldi R25,>_r
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,27
	xcall _LCD_char
	.dbline 413
;    LCD_char(45,0,t,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_t
	ldi R25,>_t
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,45
	xcall _LCD_char
	.dbline 414
;    LCD_char(54,0,u,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_u
	ldi R25,>_u
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,54
	xcall _LCD_char
	.dbline 415
;    LCD_char(9,4,w,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_w
	ldi R25,>_w
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,9
	xcall _LCD_char
	.dbline 416
;    LCD_char(18,4,x,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_x
	ldi R25,>_x
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,18
	xcall _LCD_char
	.dbline 417
;    LCD_char(27,4,y,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_y
	ldi R25,>_y
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,27
	xcall _LCD_char
	.dbline 418
;   if(wed1==2)
	lds R24,_wed1
	cpi R24,2
	breq X1
	xjmp L112
X1:
	.dbline 419
;    {
	.dbline 421
;  
;    LCD_char(0,0,c,0);
	clr R2
	std y+2,R2
	ldi R24,<_c
	ldi R25,>_c
	std y+0,R24
	std y+1,R25
	clr R18
	clr R16
	xcall _LCD_char
	.dbline 423
;    //LCD_char(9,0,b,0);
;    LCD_char(18,0,f,0);
	clr R2
	std y+2,R2
	ldi R24,<_f
	ldi R25,>_f
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,18
	xcall _LCD_char
	.dbline 426
;   // LCD_char(27,0,d,0);
;    //LCD_char(36,0,e,0);
;    LCD_char(45,0,a,0);
	clr R2
	std y+2,R2
	ldi R24,<_a
	ldi R25,>_a
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,45
	xcall _LCD_char
	.dbline 428
;   // LCD_char(54,0,g,0);
;    LCD_char(0,4,v,0);
	clr R2
	std y+2,R2
	ldi R24,<_v
	ldi R25,>_v
	std y+0,R24
	std y+1,R25
	ldi R18,4
	clr R16
	xcall _LCD_char
	.dbline 431
;   // LCD_char(9,4,i,0);
;    //LCD_char(18,4,j,0);
;    LCD_char(27,4,h,0);
	clr R2
	std y+2,R2
	ldi R24,<_h
	ldi R25,>_h
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,27
	xcall _LCD_char
	.dbline 433
;    //LCD_char(36,4,l,0);
;    LCD_char(45,4,o,0);
	clr R2
	std y+2,R2
	ldi R24,<_o
	ldi R25,>_o
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,45
	xcall _LCD_char
	.dbline 435
;    //LCD_char(54,4,m,0);
;    LCD_char(0,0,n,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_n
	ldi R25,>_n
	std y+0,R24
	std y+1,R25
	clr R18
	clr R16
	xcall _LCD_char
	.dbline 439
;   // LCD_char(9,0,p,1);
;   // LCD_char(18,0,q,1);
;   // LCD_char(27,0,r,1);
;    LCD_char(36,0,k,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_k
	ldi R25,>_k
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,36
	xcall _LCD_char
	.dbline 442
;   // LCD_char(45,0,t,1);
;   // LCD_char(54,0,u,1);
;    LCD_char(0,4,s,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_s
	ldi R25,>_s
	std y+0,R24
	std y+1,R25
	ldi R18,4
	clr R16
	xcall _LCD_char
	.dbline 450
;   // LCD_char(9,4,w,1);
;   // LCD_char(18,4,x,1);
;   // LCD_char(27,4,y,1);
;    //LCD_char(36,4,z,1);
;    //LCD_char(45,4,o,1);
;   // LCD_char(54,4,x,1);
;    //LCD_char(0,4,v,1);
;    flag_char1=0;
	clr R2
	sts _flag_char1,R2
	.dbline 451
;    flag_w=1;
	ldi R24,1
	sts _flag_w,R24
	.dbline 452
;    }
L112:
	.dbline 453
;    if(wed1==1)
	lds R24,_wed1
	cpi R24,1
	breq X2
	xjmp L114
X2:
	.dbline 454
;    {
	.dbline 455
;      LCD_char(0,0,z,0);
	clr R2
	std y+2,R2
	ldi R24,<_z
	ldi R25,>_z
	std y+0,R24
	std y+1,R25
	clr R18
	clr R16
	xcall _LCD_char
	.dbline 457
;   // LCD_char(9,0,b,0);
;    LCD_char(18,0,s,0);
	clr R2
	std y+2,R2
	ldi R24,<_s
	ldi R25,>_s
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,18
	xcall _LCD_char
	.dbline 460
;    //LCD_char(27,0,d,0);
;   // LCD_char(36,0,e,0);
;    LCD_char(45,0,n,0);
	clr R2
	std y+2,R2
	ldi R24,<_n
	ldi R25,>_n
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,45
	xcall _LCD_char
	.dbline 462
;   // LCD_char(54,0,g,0);
;    LCD_char(0,4,o,0);
	clr R2
	std y+2,R2
	ldi R24,<_o
	ldi R25,>_o
	std y+0,R24
	std y+1,R25
	ldi R18,4
	clr R16
	xcall _LCD_char
	.dbline 465
;   // LCD_char(9,4,i,0);
;   // LCD_char(18,4,j,0);
;    LCD_char(27,4,v,0);
	clr R2
	std y+2,R2
	ldi R24,<_v
	ldi R25,>_v
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,27
	xcall _LCD_char
	.dbline 467
;   // LCD_char(36,4,l,0);
;    LCD_char(45,4,f,0);
	clr R2
	std y+2,R2
	ldi R24,<_f
	ldi R25,>_f
	std y+0,R24
	std y+1,R25
	ldi R18,4
	ldi R16,45
	xcall _LCD_char
	.dbline 469
;  //  LCD_char(54,4,m,0);
;    LCD_char(0,0,h,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_h
	ldi R25,>_h
	std y+0,R24
	std y+1,R25
	clr R18
	clr R16
	xcall _LCD_char
	.dbline 473
;   // LCD_char(9,0,p,1);
;   // LCD_char(18,0,q,1);
;    //LCD_char(27,0,r,1);
;    LCD_char(36,0,c,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_c
	ldi R25,>_c
	std y+0,R24
	std y+1,R25
	clr R18
	ldi R16,36
	xcall _LCD_char
	.dbline 476
;   // LCD_char(45,0,t,1);
;   // LCD_char(54,0,u,1);
;    LCD_char(0,4,k,1);
	ldi R24,1
	std y+2,R24
	ldi R24,<_k
	ldi R25,>_k
	std y+0,R24
	std y+1,R25
	ldi R18,4
	clr R16
	xcall _LCD_char
	.dbline 484
;   // LCD_char(9,4,w,1);
;   // LCD_char(18,4,x,1);
;   // LCD_char(27,4,y,1);
;    //LCD_char(36,4,z,1);
;    //LCD_char(45,4,o,1);
;   // LCD_char(54,4,x,1);
;    //LCD_char(0,4,v,1);
;    flag_char1=0;
	clr R2
	sts _flag_char1,R2
	.dbline 485
;    flag_w=1;
	ldi R24,1
	sts _flag_w,R24
	.dbline 486
;    }
L114:
	.dbline 487
;   }
L110:
	.dbline 488
	lds R24,_wed1
	subi R24,255    ; addi 1
	sts _wed1,R24
	.dbline 489
	cpi R24,3
	brne L116
	.dbline 490
	.dbline 491
	ldi R24,1
	sts _wed1,R24
	.dbline 492
L116:
	.dbline -2
	.dbline 494
;   wed1++;
;   if(wed1==3)
;   {
;    wed1=1;
;   }
;   
; }
L109:
	adiw R28,3
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e key _key fV
	.even
_key::
	xcall push_gset2
	.dbline -1
	.dbline 499
; 
; 
; 
; void key(void)
; {
	.dbline 500
;    if(data_key[key_i-1]==0x5a)//enter
	ldi R24,<_data_key-1
	ldi R25,>_data_key-1
	lds R30,_key_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,90
	breq X31
	xjmp L119
X31:
	.dbline 501
;     {
	.dbline 502
; 	 if(flag_enter==1)
	lds R24,_flag_enter
	cpi R24,1
	brne L122
	.dbline 503
; 	 {
	.dbline 504
; 	  TCCR0=0x00;
	clr R2
	out 0x33,R2
	.dbline 505
; 	  flag_score=1;
	ldi R24,1
	sts _flag_score,R24
	.dbline 506
; 	  flag_over=1;
	sts _flag_over,R24
	.dbline 508
; 	  //flag_enter=0;
; 	  flag_char1=0;
	sts _flag_char1,R2
	.dbline 510
; 	  
; 	 }
L122:
	.dbline 511
; 	 if(flag_enter==0)
	lds R2,_flag_enter
	tst R2
	brne L124
	.dbline 512
; 	 {
	.dbline 513
; 	 flag_1=0;
	clr R2
	sts _flag_1,R2
	.dbline 514
;      flag_char1=1;
	ldi R24,1
	sts _flag_char1,R24
	.dbline 515
; 	 x_station=0;
	sts _x_station,R2
	.dbline 516
; 	 y_station=2;
	ldi R24,2
	sts _y_station,R24
	.dbline 517
; 	 flag_error=0;
	sts _flag_error,R2
	.dbline 518
; 	 flag_over=0;
	sts _flag_over,R2
	.dbline 519
; 	 LR=0;
	sts _LR,R2
	.dbline 520
; 	 rig=0;
	clr R2
	sts _rig,R2
	.dbline 521
; 	 key_i=1;
	ldi R24,1
	sts _key_i,R24
	.dbline 522
; 	 flag_enter=1;
	sts _flag_enter,R24
	.dbline 523
; 	 char_display();
	xcall _char_display
	.dbline 524
; 	 flag_ts=0;
	clr R2
	sts _flag_ts,R2
	.dbline 525
;      flag_cout=0;
	sts _flag_cout,R2
	.dbline 526
;      flag_ms=0;
	clr R3
	sts _flag_ms+1,R3
	sts _flag_ms,R2
	.dbline 527
;      flag_time0=0;
	sts _flag_time0,R2
	.dbline 528
; 	  TCNT0=0X38;
	ldi R24,56
	out 0x32,R24
	.dbline 529
; 	 TCCR0=(1<<CS01);//8分频
	ldi R24,2
	out 0x33,R24
	.dbline 530
; 	 }
L124:
	.dbline 531
; 	 data_key[1]=0;
	clr R2
	sts _data_key+1,R2
	.dbline 532
; 	  data_key[2]=0;
	sts _data_key+2,R2
	.dbline 534
; 	  
; 	}
L119:
	.dbline 536
; 	
; 	if((data_key[key_i-1]==0x76)&(flag_w==1))//esc
	ldi R24,<_data_key-1
	ldi R25,>_data_key-1
	lds R30,_key_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,118
	brne L131
	ldi R22,1
	ldi R23,0
	xjmp L132
L131:
	clr R22
	clr R23
L132:
	lds R24,_flag_w
	cpi R24,1
	brne L133
	ldi R20,1
	ldi R21,0
	xjmp L134
L133:
	clr R20
	clr R21
L134:
	movw R2,R22
	and R2,R20
	and R3,R21
	tst R2
	brne X3
	tst R3
	breq L128
X3:
	.dbline 537
; 	{
	.dbline 539
; 	  //if(data_key[3]==0xe0)
; 	  {
	.dbline 540
; 	  flag_esc=1;
	ldi R24,1
	sts _flag_esc,R24
	.dbline 541
; 	  flag_1=0;
	clr R2
	sts _flag_1,R2
	.dbline 542
;       flag_char1=1;
	sts _flag_char1,R24
	.dbline 543
; 	  x_station=0;
	sts _x_station,R2
	.dbline 544
; 	  y_station=2;
	ldi R24,2
	sts _y_station,R24
	.dbline 545
; 	  flag_error=0;
	sts _flag_error,R2
	.dbline 546
; 	  flag_over=0;
	sts _flag_over,R2
	.dbline 547
; 	  flag_score=0;
	sts _flag_score,R2
	.dbline 548
; 	  LR=0;
	clr R2
	sts _LR,R2
	.dbline 549
; 	  rig=0;
	sts _rig,R2
	.dbline 550
; 	  char_display();
	xcall _char_display
	.dbline 551
; 	  key_i=1;
	ldi R24,1
	sts _key_i,R24
	.dbline 552
; 	  flag_ts=0;
	clr R2
	sts _flag_ts,R2
	.dbline 553
;       flag_cout=0;
	sts _flag_cout,R2
	.dbline 554
;       flag_ms=0;
	clr R3
	sts _flag_ms+1,R3
	sts _flag_ms,R2
	.dbline 555
;       flag_time0=0;
	sts _flag_time0,R2
	.dbline 556
; 	   TCNT0=0X38;
	ldi R24,56
	out 0x32,R24
	.dbline 557
; 	  TCCR0=(1<<CS01);//8分频
	ldi R24,2
	out 0x33,R24
	.dbline 558
; 	  }
	.dbline 559
; 	}
L128:
	.dbline 560
; 	if(flag_over==0)
	lds R2,_flag_over
	tst R2
	breq X32
	xjmp L135
X32:
	.dbline 561
; 	{
	.dbline 562
; 	if((data_key[key_i-1]==0x71)&(flag_w==1))///del
	ldi R24,<_data_key-1
	ldi R25,>_data_key-1
	lds R30,_key_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,113
	brne L140
	ldi R22,1
	ldi R23,0
	xjmp L141
L140:
	clr R22
	clr R23
L141:
	lds R24,_flag_w
	cpi R24,1
	brne L142
	ldi R20,1
	ldi R21,0
	xjmp L143
L142:
	clr R20
	clr R21
L143:
	movw R2,R22
	and R2,R20
	and R3,R21
	tst R2
	brne X4
	tst R3
	breq L137
X4:
	.dbline 563
; 	{
	.dbline 565
; 	  //if(data_key[3]==0xe0)
; 	  {
	.dbline 566
; 	  flag_del=1;
	ldi R24,1
	sts _flag_del,R24
	.dbline 567
; 	  key_i=1;
	sts _key_i,R24
	.dbline 568
; 	  }
	.dbline 569
; 	}
L137:
	.dbline 570
; 	if((data_key[key_i-1]==0x1c)&(flag_w==1))///a
	ldi R24,<_data_key-1
	ldi R25,>_data_key-1
	lds R30,_key_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,28
	brne L147
	ldi R22,1
	ldi R23,0
	xjmp L148
L147:
	clr R22
	clr R23
L148:
	lds R24,_flag_w
	cpi R24,1
	brne L149
	ldi R20,1
	ldi R21,0
	xjmp L150
L149:
	clr R20
	clr R21
L150:
	movw R2,R22
	and R2,R20
	and R3,R21
	tst R2
	brne X5
	tst R3
	breq L144
X5:
	.dbline 571
; 	{
	.dbline 572
; 	  flag_a=1;
	ldi R24,1
	sts _flag_a,R24
	.dbline 573
; 	  flag_cout++;
	lds R24,_flag_cout
	subi R24,255    ; addi 1
	sts _flag_cout,R24
	.dbline 574
; 	  key_i=1;
	ldi R24,1
	sts _key_i,R24
	.dbline 575
; 	}
L144:
	.dbline 576
; 	if((data_key[key_i-1]==0x32)&(flag_w==1))///b
	ldi R24,<_data_key-1
	ldi R25,>_data_key-1
	lds R30,_key_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,50
	brne L154
	ldi R22,1
	ldi R23,0
	xjmp L155
L154:
	clr R22
	clr R23
L155:
	lds R24,_flag_w
	cpi R24,1
	brne L156
	ldi R20,1
	ldi R21,0
	xjmp L157
L156:
	clr R20
	clr R21
L157:
	movw R2,R22
	and R2,R20
	and 

⌨️ 快捷键说明

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