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

📄 设计最后.s

📁 PS2控制代码123456789
💻 S
📖 第 1 页 / 共 5 页
字号:
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,6
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 431
;  write_ASCII(0xf9,7,32,table1[rezult%1000000000/100000000]);
	ldi R20,0
	ldi R21,202
	ldi R22,154
	ldi R23,59
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,0
	ldi R21,225
	ldi R22,245
	ldi R23,5
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,7
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 432
;  write_ASCII(0xf9,8,32,table1[rezult%100000000/10000000]);
	ldi R20,0
	ldi R21,225
	ldi R22,245
	ldi R23,5
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,128
	ldi R21,150
	ldi R22,152
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,8
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 433
;  write_ASCII(0xf9,9,32,table1[rezult%10000000/1000000]);
	ldi R20,128
	ldi R21,150
	ldi R22,152
	ldi R23,0
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,64
	ldi R21,66
	ldi R22,15
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,9
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 434
;  write_ASCII(0xf9,10,32,table1[rezult%1000000/100000]);
	ldi R20,64
	ldi R21,66
	ldi R22,15
	ldi R23,0
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,160
	ldi R21,134
	ldi R22,1
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,10
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 435
;  write_ASCII(0xf9,11,32,table1[rezult%100000/10000]);
	ldi R20,160
	ldi R21,134
	ldi R22,1
	ldi R23,0
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,16
	ldi R21,39
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,11
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 436
;  write_ASCII(0xf9,12,32,table1[rezult%10000/1000]);
	ldi R20,16
	ldi R21,39
	ldi R22,0
	ldi R23,0
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,232
	ldi R21,3
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,12
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 437
;  write_ASCII(0xf9,13,32,table1[rezult%1000/100]);
	ldi R20,232
	ldi R21,3
	ldi R22,0
	ldi R23,0
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,100
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,13
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 438
;  write_ASCII(0xf9,14,32,table1[rezult%100/10]);
	ldi R20,100
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,14
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 439
;  write_ASCII(0xf9,15,32,table1[rezult%10]);
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_rezult+2
	lds R5,_rezult+2+1
	lds R2,_rezult
	lds R3,_rezult+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,15
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline -2
L74:
	adiw R28,4
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 20
	jmp _PS2_KEY
	.area text(rom, con, rel)
	.dbfile F:\调试\计算器\设计最后.c
	.dbfunc e PS2_KEY _PS2_KEY fV
	.even
_PS2_KEY::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 449
; }
; 
; //*********************************************************//
;             /*PS2键盘中断处理*/
; //******************************************************** //
;    
; #pragma interrupt_handler PS2_KEY:6
;  
;   void PS2_KEY(void)
;   {
	.dbline 451
;    
;     if((count_jiema>0)&&(count_jiema<9))
	clr R2
	lds R3,_count_jiema
	cp R2,R3
	brsh L76
	mov R24,R3
	cpi R24,9
	brsh L76
	.dbline 452
;               {  
	.dbline 453
; 			    data=data>>1;
	lds R2,_data
	lsr R2
	sts _data,R2
	.dbline 454
;                  if(PINE&DATA1)
	sbis 0x1,5
	rjmp L78
	.dbline 455
; 	              data|=0x80;
	mov R24,R2
	ori R24,128
	sts _data,R24
L78:
	.dbline 456
;               }
L76:
	.dbline 457
;          count_jiema++;
	lds R24,_count_jiema
	subi R24,255    ; addi 1
	sts _count_jiema,R24
L80:
	.dbline 459
L81:
	.dbline 459
	sbis 0x1,4
	rjmp L80
	.dbline 461
	ldi R24,10
	lds R2,_count_jiema
	cp R24,R2
	brsh L83
	.dbline 462
	.dbline 464
	clr R2
	sts _count_jiema,R2
	.dbline 465
	ldi R24,1
	sts _flag,R24
	.dbline 466
	out 0x39,R2
	.dbline 468
L83:
	.dbline -2
L75:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e Decode _Decode fV
;        TempCyc -> R12
;       ScanCode -> R10
	.even
_Decode::
	xcall push_gset5
	mov R10,R16
	sbiw R28,9
	.dbline -1
	.dbline 476
; 		
; 		 while(!(PINE&0X10));	//
; 
;     if(count_jiema>10)
;              {
; 			//  putchar0(data);//测试键盘码用
;               count_jiema=0;
;               flag=1;
;               EIMSK=0x00;
; 			
;            }		 
;   }
; 
;  //*********************************************************//
;                      /*译码*/
;  //******************************************************** // 
;  
;    void Decode(unsigned char ScanCode) //注意:如SHIFT+G为12H 34H F0H 34H F0H 12H,也就是说shift的通码+G的通码+shift的断码+G的断码
;    {
	.dbline 479
; 	unsigned char TempCyc;	
; 
; 	if (!Key_UP)                //
	lds R2,_Key_UP
	tst R2
	breq X6
	xjmp L86
X6:
	.dbline 480
; 		{
	.dbline 481
; 			switch (ScanCode)
	mov R12,R10
	clr R13
	movw R24,R12
	cpi R24,88
	ldi R30,0
	cpc R25,R30
	breq L93
	cpi R24,89
	ldi R30,0
	cpc R25,R30
	breq L94
	ldi R24,89
	cp R24,R12
	cpc R25,R13
	brlt L181
L180:
	movw R24,R12
	cpi R24,18
	ldi R30,0
	cpc R25,R30
	breq L92
	xjmp L88
L181:
	movw R24,R12
	cpi R24,102
	ldi R30,0
	cpc R25,R30
	breq L95
	cpi R24,102
	ldi R30,0
	cpc R25,R30
	brlt L88
L182:
	movw R24,R12
	cpi R24,240
	ldi R30,0
	cpc R25,R30
	breq L91
	xjmp L88
X2:
	.dbline 482
; 				{
L91:
	.dbline 484
; 					case 0xF0 :	                // 当收到0xF0,Key_UP置1表示断码开始,把Shift = 1;解锁。否则下次总是显示大写字母
; 					Key_UP = 1;
	ldi R24,1
	sts _Key_UP,R24
	.dbline 485
; 					break;
	xjmp L87
L92:
	.dbline 488
; 
; 					case 0x12 :	                  // 左 SHIFT
; 						  Shift = 1;
	ldi R24,1
	sts _Shift,R24
	.dbline 489
; 					         break;
	xjmp L87
L93:
	.dbline 491
; 							 
;                     case 0x58 :	  Shift=~Shift;break;
	lds R2,_Shift
	com R2
	sts _Shift,R2
	.dbline 491
	xjmp L87
L94:
	.dbline 493
; 					case 0x59 :	                 // 右 SHIFT
; 						      Shift = 1;
	ldi R24,1
	sts _Shift,R24
	.dbline 494
; 					            break;
	xjmp L87
L95:
	.dbline 496
; 					case 0x66 :		//DEL键	
; 	                 if (DisNumx==-1)
	lds R24,_DisNumx
	cpi R24,255
	brne L96
	.dbline 497
; 					  {
	.dbline 498
; 					    DisNumy=DisNumy-8;
	lds R24,_DisNumy
	subi R24,8
	sts _DisNumy,R24
	.dbline 499
; 					    DisNumx=15;
	ldi R24,15
	sts _DisNumx,R24
	.dbline 500
; 					  }
	xjmp L87
L96:
	.dbline 502
; 					 else  
; 					  {  
	.dbline 503
; 					    write_asiic(DisNumx, DisNumy, UnShifted[40][1]);
	lds R2,_UnShifted+80+1
	std y+0,R2
	lds R18,_DisNumy
	lds R16,_DisNumx
	xcall _write_asiic
	.dbline 504
; 					    DisNumx--;   
	lds R24,_DisNumx
	subi R24,1
	sts _DisNumx,R24
	.dbline 505
; 					  }	
	.dbline 506
;                        break;
	xjmp L87
L88:
	.dbline 508
; 					default:						
; 							if (DisNumx > 15)
	ldi R24,15
	lds R2,_DisNumx
	cp R24,R2
	brsh L100
	.dbline 509
; 							{
	.dbline 510
;                                DisNumy=DisNumy+8;
	lds R24,_DisNumy
	subi R24,248    ; addi 8
	sts _DisNumy,R24
	.dbline 511
;                                 if( DisNumy==64)DisNumy=0;
	cpi R24,64
	brne L102
	.dbline 511
	clr R2
	sts _DisNumy,R2
L102:
	.dbline 512
; 								DisplayListChar(0, DisNumy);//清LCD第二行
	lds R18,_DisNumy
	clr R16
	xcall _DisplayListChar
	.dbline 513
;                                  DisNumx=0;
	clr R2
	sts _DisNumx,R2
	.dbline 516
; 								 
; 								                 
;                              }
L100:
	.dbline 517
; 				    if(!Shift)	//如果SHIFT没按下
	lds R2,_Shift
	tst R2
	breq X7
	xjmp L104
X7:
	.dbline 518
; 							{   
	.dbline 519
	clr R12
	xjmp L109

⌨️ 快捷键说明

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