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

📄 jianpan.lst

📁 实现3*3 键盘的控制。从而实现用键盘来对单片机进行控制。
💻 LST
📖 第 1 页 / 共 4 页
字号:
    03A3 2FE4      MOV	R30,R20
    03A4 27FF      CLR	R31
    03A5 0FE8      ADD	R30,R24
    03A6 1FF9      ADC	R31,R25
    03A7 91E4      LPM	R30,0(Z)
    03A8 30E2      CPI	R30,2
    03A9 F021      BEQ	0x03AE
    03AA E081      LDI	R24,1
    03AB E090      LDI	R25,0
    03AC 016C      MOVW	R12,R24
    03AD C002      RJMP	0x03B0
    03AE 24CC      CLR	R12
    03AF 24DD      CLR	R13
    03B0 E584      LDI	R24,0x54
    03B1 E090      LDI	R25,0
    03B2 2FE4      MOV	R30,R20
    03B3 27FF      CLR	R31
    03B4 0FE8      ADD	R30,R24
    03B5 1FF9      ADC	R31,R25
    03B6 91E4      LPM	R30,0(Z)
    03B7 30E3      CPI	R30,3
    03B8 F021      BEQ	0x03BD
    03B9 E081      LDI	R24,1
    03BA E090      LDI	R25,0
    03BB 015C      MOVW	R10,R24
    03BC C002      RJMP	0x03BF
    03BD 24AA      CLR	R10
    03BE 24BB      CLR	R11
    03BF 0117      MOVW	R2,R14
    03C0 282C      OR	R2,R12
    03C1 283D      OR	R3,R13
    03C2 282A      OR	R2,R10
    03C3 283B      OR	R3,R11
    03C4 2022      TST	R2
    03C5 F411      BNE	0x03C8
    03C6 2033      TST	R3
    03C7 F019      BEQ	0x03CB
    03C8 306F      CPI	R22,0xF
    03C9 F409      BNE	0x03CB
    03CA DEC6      RCALL	_edit
(0370) 			
(0371) 		}
(0372) 	}
(0373) 	display();
    03CB DD69      RCALL	_display
    03CC 3F6F      CPI	R22,0xFF
    03CD F009      BEQ	0x03CF
    03CE CECD      RJMP	0x029C
(0374) 	}
(0375)        mode=FREE;
    03CF E781      LDI	R24,0x71
    03D0 93800068  STS	0x68,R24
(0376) }
    03D2 940E04B8  CALL	pop_gset5
    03D4 9508      RET
(0377) 
(0378) void reset( void )
(0379) {
(0380) 	for(DelayCounter = 0; DelayCounter < 500;)
_reset:
    03D5 2422      CLR	R2
    03D6 2433      CLR	R3
    03D7 92300062  STS	0x62,R3
    03D9 92200061  STS	0x61,R2
    03DB C006      RJMP	0x03E2
(0381) 	{
(0382) 		PORTA = 0xFF;
    03DC EF8F      LDI	R24,0xFF
    03DD BB8B      OUT	0x1B,R24
(0383) 		PORTB <<= BIT(0);
    03DE B228      IN	R2,0x18
    03DF 0C22      LSL	R2
    03E0 BA28      OUT	0x18,R2
(0384) 		WDR();
    03E1 95A8      WDR
    03E2 91800061  LDS	R24,0x61
    03E4 91900062  LDS	R25,0x62
    03E6 3F84      CPI	R24,0xF4
    03E7 E0E1      LDI	R30,1
    03E8 079E      CPC	R25,R30
    03E9 F390      BCS	0x03DC
(0385) 	}
(0386) 	SysCounter = 0;
(0387) 	DelayCounter=0;
(0388) 	Cursor = 0;
(0389) 	CursorDir = 0;
    03EA 2422      CLR	R2
    03EB 2433      CLR	R3
    03EC 92300064  STS	0x64,R3
    03EE 92200063  STS	0x63,R2
    03F0 92300062  STS	0x62,R3
    03F2 92200061  STS	0x61,R2
    03F4 9220006B  STS	0x6B,R2
    03F6 9220006C  STS	0x6C,R2
(0390) 	//p_speed=speed_table[0];
(0391) }
    03F8 9508      RET
(0392) //
(0393) void main(void)
(0394) {
(0395) 	uchar i;
(0396) 	init_devices();
_main:
  KeyIndex             --> R20
  i                    --> R22
    03F9 DD30      RCALL	_init_devices
(0397) 	reset();
    03FA DFDA      RCALL	_reset
(0398) 	send(7,0x79);
    03FB E729      LDI	R18,0x79
    03FC E007      LDI	R16,7
    03FD DC71      RCALL	_send
    03FE C070      RJMP	0x046F
(0399) 	while( 1 )
(0400) 	{
(0401) 		mode=FREE;	
(0402) 		WDR();
    03FF E781      LDI	R24,0x71
    0400 93800068  STS	0x68,R24
    0402 95A8      WDR
(0403) 		if( !(PIND & BIT(PD2)) )	// 检测按键状态
    0403 9982      SBIC	0x10,2
    0404 C02B      RJMP	0x0430
(0404) 		{ 
(0405) 			display();					//延时
    0405 DD2F      RCALL	_display
(0406) 			display();					//延时
    0406 DD2E      RCALL	_display
(0407) 			if( !(PIND & BIT(PD2)) )	//再次检测按键状态
    0407 9982      SBIC	0x10,2
    0408 C066      RJMP	0x046F
(0408) 		  	{
(0409) 				uchar KeyIndex = scan_key();	// 读取扫描序号
    0409 DC94      RCALL	_scan_key
    040A 2F40      MOV	R20,R16
    040B C002      RJMP	0x040E
(0410) 				while( !(PIND & BIT(PD2)) ) { WDR(); display(); };	//等待按键松开
    040C 95A8      WDR
    040D DD27      RCALL	_display
    040E 9B82      SBIS	0x10,2
    040F CFFC      RJMP	0x040C
(0411) 				for( i = 0; i < 5; i ++ ) { display(); }		//延时
    0410 2766      CLR	R22
    0411 C002      RJMP	0x0414
    0412 DD22      RCALL	_display
    0413 9563      INC	R22
    0414 3065      CPI	R22,5
    0415 F3E0      BCS	0x0412
(0412) 				//按下编辑键
(0413) 				if(KeySet[KeyIndex]==EDIT)
    0416 E584      LDI	R24,0x54
    0417 E090      LDI	R25,0
    0418 2FE4      MOV	R30,R20
    0419 27FF      CLR	R31
    041A 0FE8      ADD	R30,R24
    041B 1FF9      ADC	R31,R25
    041C 91E4      LPM	R30,0(Z)
    041D 30EE      CPI	R30,0xE
    041E F429      BNE	0x0424
(0414) 				{
(0415) 					mode=0x79;    //''E'
(0416) 					edit();
    041F E789      LDI	R24,0x79
    0420 93800068  STS	0x68,R24
    0422 DE6E      RCALL	_edit
(0417) 				}
    0423 C04B      RJMP	0x046F
(0418) 				else if(KeySet[KeyIndex]==ENTER)	    
    0424 E584      LDI	R24,0x54
    0425 E090      LDI	R25,0
    0426 2FE4      MOV	R30,R20
    0427 27FF      CLR	R31
    0428 0FE8      ADD	R30,R24
    0429 1FF9      ADC	R31,R25
    042A 91E4      LPM	R30,0(Z)
    042B 30EF      CPI	R30,0xF
    042C F009      BEQ	0x042E
    042D C041      RJMP	0x046F
(0419) 				{
(0420) 					transmit();
    042E DC95      RCALL	_transmit
(0421) 				}
(0422) 			}
(0423) 		}
    042F C03F      RJMP	0x046F
(0424) 		else
(0425) 		{
(0426) 			if( SysCounter > 500 )
    0430 EF84      LDI	R24,0xF4
    0431 E091      LDI	R25,1
    0432 90200063  LDS	R2,0x63
    0434 90300064  LDS	R3,0x64
    0436 1582      CP	R24,R2
    0437 0593      CPC	R25,R3
    0438 F528      BCC	0x045E
(0427) 			{
(0428) 				SysCounter = 0;	
(0429) 				if( CursorDir == 0 )
    0439 2422      CLR	R2
    043A 2433      CLR	R3
    043B 92300064  STS	0x64,R3
    043D 92200063  STS	0x63,R2
    043F 9020006C  LDS	R2,0x6C
    0441 2022      TST	R2
    0442 F461      BNE	0x044F
(0430) 				{
(0431) 					if( ++Cursor == 7 ) { CursorDir = 1; }
    0443 9180006B  LDS	R24,0x6B
    0445 5F8F      SUBI	R24,0xFF
    0446 2E28      MOV	R2,R24
    0447 9220006B  STS	0x6B,R2
    0449 3087      CPI	R24,7
    044A F499      BNE	0x045E
    044B E081      LDI	R24,1
    044C 9380006C  STS	0x6C,R24
(0432) 				}
    044E C00F      RJMP	0x045E
(0433) 				else if( CursorDir == 1 )
    044F 9180006C  LDS	R24,0x6C
    0451 3081      CPI	R24,1
    0452 F459      BNE	0x045E
(0434) 				{
(0435) 					if( --Cursor == 0 )	{ CursorDir = 0; }
    0453 9180006B  LDS	R24,0x6B
    0455 5081      SUBI	R24,1
    0456 2E28      MOV	R2,R24
    0457 9220006B  STS	0x6B,R2
    0459 2388      TST	R24
    045A F419      BNE	0x045E
    045B 2422      CLR	R2
    045C 9220006C  STS	0x6C,R2
(0436) 				}
(0437) 			}
(0438) 			PORTA = 0x40;	//显示'_'
    045E E480      LDI	R24,0x40
    045F BB8B      OUT	0x1B,R24
(0439) 			PORTB = 0xFF;
    0460 EF8F      LDI	R24,0xFF
    0461 BB88      OUT	0x18,R24
(0440) 			PORTB &= ~BIT( Cursor );
    0462 9110006B  LDS	R17,0x6B
    0464 E001      LDI	R16,1
    0465 940E04E2  CALL	lsl8
    0467 2E20      MOV	R2,R16
    0468 9420      COM	R2
    0469 B238      IN	R3,0x18
    046A 2032      AND	R3,R2
    046B BA38      OUT	0x18,R3
(0441) 			delay(1);
    046C E001      LDI	R16,1
    046D E010      LDI	R17,0
    046E DBF0      RCALL	_delay
    046F CF8F      RJMP	0x03FF
(0442) 		}
(0443) 	}
(0444) }
FILE: <library>
    0470 9508      RET
mod16u:
    0471 9468      BSET	6
    0472 C001      RJMP	xdiv16u
div16u:
    0473 94E8      BCLR	6
xdiv16u:
    0474 92EA      ST	R14,-Y
    0475 92FA      ST	R15,-Y
    0476 938A      ST	R24,-Y
    0477 24EE      CLR	R14
    0478 24FF      CLR	R15
    0479 E180      LDI	R24,0x10
    047A 0F00      LSL	R16
    047B 1F11      ROL	R17
    047C 1CEE      ROL	R14
    047D 1CFF      ROL	R15
    047E 16E2      CP	R14,R18
    047F 06F3      CPC	R15,R19
    0480 F018      BCS	0x0484
    0481 1AE2      SUB	R14,R18
    0482 0AF3      SBC	R15,R19
    0483 9503      INC	R16
    0484 958A      DEC	R24
    0485 F7A1      BNE	0x047A
    0486 F416      BRTC	0x0489
    0487 2D0E      MOV	R16,R14
    0488 2D1F      MOV	R17,R15
    0489 9189      LD	R24,Y+
    048A 90F9      LD	R15,Y+
    048B 90E9      LD	R14,Y+
    048C 9508      RET
mod8u:
    048D 9468      BSET	6
    048E C001      RJMP	xdiv8u
div8u:
    048F 94E8      BCLR	6
xdiv8u:
    0490 932A      ST	R18,-Y
    0491 92FA      ST	R15,-Y
    0492 92EA      ST	R14,-Y
    0493 24FF      CLR	R15
    0494 24EE      CLR	R14
    0495 E120      LDI	R18,0x10
    0496 0F00      LSL	R16
    0497 1CFF      ROL	R15
    0498 1CEE      ROL	R14
    0499 16E1      CP	R14,R17
    049A F010      BCS	0x049D
    049B 1AE1      SUB	R14,R17
    049C 9503      INC	R16
    049D 952A      DEC	R18
    049E F7B9      BNE	0x0496
    049F F40E      BRTC	0x04A1
    04A0 2D0E      MOV	R16,R14
    04A1 90E9      LD	R14,Y+
    04A2 90F9      LD	R15,Y+
    04A3 9129      LD	R18,Y+
    04A4 9508      RET
empy16s:
    04A5 920A      ST	R0,-Y
    04A6 921A      ST	R1,-Y
    04A7 938A      ST	R24,-Y
    04A8 939A      ST	R25,-Y
    04A9 9F02      MUL	R16,R18
    04AA 01C0      MOVW	R24,R0
    04AB 9F12      MUL	R17,R18
    04AC 0D90      ADD	R25,R0
    04AD 9F03      MUL	R16,R19
    04AE 0D90      ADD	R25,R0
    04AF 018C      MOVW	R16,R24
    04B0 9199      LD	R25,Y+
    04B1 9189      LD	R24,Y+
    04B2 9019      LD	R1,Y+
    04B3 9009      LD	R0,Y+
    04B4 9508      RET
pop_gset2:
    04B5 E0E2      LDI	R30,2
    04B6 940C04BF  JMP	pop
pop_gset5:
    04B8 27EE      CLR	R30
    04B9 940C04BF  JMP	pop
push_gset1:
    04BB 935A      ST	R21,-Y
    04BC 934A      ST	R20,-Y
    04BD 9508      RET
pop_gset1:
    04BE E0E1      LDI	R30,1
pop:
    04BF 9149      LD	R20,Y+
    04C0 9159      LD	R21,Y+
    04C1 FDE0      SBRC	R30,0
    04C2 9508      RET
    04C3 9169      LD	R22,Y+
    04C4 9179      LD	R23,Y+
    04C5 FDE1      SBRC	R30,1
    04C6 9508      RET
    04C7 90A9      LD	R10,Y+
    04C8 90B9      LD	R11,Y+
    04C9 FDE2      SBRC	R30,2
    04CA 9508      RET
    04CB 90C9      LD	R12,Y+
    04CC 90D9      LD	R13,Y+
    04CD FDE3      SBRC	R30,3
    04CE 9508      RET
    04CF 90E9      LD	R14,Y+
    04D0 90F9      LD	R15,Y+
    04D1 9508      RET
push_gset2:
    04D2 937A      ST	R23,-Y
    04D3 936A      ST	R22,-Y
    04D4 940C04BB  JMP	push_gset1
push_gset3:
    04D6 92BA      ST	R11,-Y
    04D7 92AA      ST	R10,-Y
    04D8 940C04D2  JMP	push_gset2
push_gset4:
    04DA 92DA      ST	R13,-Y
    04DB 92CA      ST	R12,-Y
    04DC 940C04D6  JMP	push_gset3
push_gset5:
    04DE 92FA      ST	R15,-Y
    04DF 92EA      ST	R14,-Y
    04E0 940C04DA  JMP	push_gset4
lsl8:
    04E2 2311      TST	R17
    04E3 F019      BEQ	0x04E7
    04E4 0F00      LSL	R16
    04E5 951A      DEC	R17
    04E6 CFFB      RJMP	lsl8
    04E7 9508      RET

⌨️ 快捷键说明

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