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

📄 图康科技.lst

📁 基于ATmega8开发的关于医疗康复的机器人
💻 LST
📖 第 1 页 / 共 5 页
字号:
     597 C058      RJMP	0x05F0
     598 9180 01ED LDS	R24,0x01ED
     59A 3F8F      CPI	R24,0xFF
     59B F009      BEQ	0x059D
     59C C053      RJMP	0x05F0
(0165) 			(get[14]==0xff)&&(get[20]==0xff)){
(0166)      		
(0167) 			get[2]=0x00;					//各节点控制指令清零
     59D 2422      CLR	R2
     59E 9220 01DB STS	get+2,R2
(0168)      		get[8]=0x00;
     5A0 9220 01E1 STS	0x01E1,R2
(0169)      		get[14]=0x00;
     5A2 9220 01E7 STS	0x01E7,R2
(0170)      		get[20]=0x00;		
     5A4 9220 01ED STS	0x01ED,R2
(0171)   			
(0172) 			if(i<((p[1]-1)*5+1)){		  	//未到达设定的循环开始步数
     5A6 91E0 01D7 LDS	R30,p
     5A8 91F0 01D8 LDS	R31,p+1
     5AA 8021      LDD	R2,Z+1
     5AB E085      LDI	R24,5
     5AC 9D82      MUL	R24,R2
     5AD 2D80      MOV	R24,R0
     5AE 5085      SUBI	R24,5
     5AF 5F8F      SUBI	R24,0xFF
     5B0 9020 012D LDS	R2,i
     5B2 1628      CP	R2,R24
     5B3 F410      BCC	0x05B6
(0173)   				step_for();					//相应处理函数
     5B4 DEA7      RCALL	_step_for
(0174)   			}//end if  	
     5B5 C025      RJMP	0x05DB
(0175)  			else if((i>(p[1]-1)*5+1)&&(j==1)){ 	//已经到达设定的运动步数
     5B6 91E0 01D7 LDS	R30,p
     5B8 91F0 01D8 LDS	R31,p+1
     5BA 8021      LDD	R2,Z+1
     5BB E085      LDI	R24,5
     5BC 9D82      MUL	R24,R2
     5BD 01C0      MOVW	R24,R0
     5BE 9705      SBIW	R24,5
     5BF 9601      ADIW	R24,1
     5C0 9020 012D LDS	R2,i
     5C2 2433      CLR	R3
     5C3 1582      CP	R24,R2
     5C4 0593      CPC	R25,R3
     5C5 F434      BGE	0x05CC
     5C6 9180 012E LDS	R24,j
     5C8 3081      CPI	R24,1
     5C9 F411      BNE	0x05CC
(0176)  				step_back(); 				//相应处理函数
     5CA DF06      RCALL	_step_back
(0177)   			}//end else if
     5CB C00F      RJMP	0x05DB
(0178)   			else{ 							//是否到达运动循环开始的第一步
(0179) 				j=1;							
     5CC E081      LDI	R24,1
     5CD 9380 012E STS	j,R24
(0180) 				i=((p[1]-1)*5+2);			//准备执行下一步
     5CF 91E0 01D7 LDS	R30,p
     5D1 91F0 01D8 LDS	R31,p+1
     5D3 8021      LDD	R2,Z+1
     5D4 E085      LDI	R24,5
     5D5 9D82      MUL	R24,R2
     5D6 2D80      MOV	R24,R0
     5D7 5085      SUBI	R24,5
     5D8 5F8E      SUBI	R24,0xFE
     5D9 9380 012D STS	i,R24
(0181) 			}//end else
(0182) 			if(i==(p[0]*5+2)){				//是否到达最后一步
     5DB 91E0 01D7 LDS	R30,p
     5DD 91F0 01D8 LDS	R31,p+1
     5DF 8020      LDD	R2,Z+0
     5E0 E085      LDI	R24,5
     5E1 9D82      MUL	R24,R2
     5E2 2D80      MOV	R24,R0
     5E3 5F8E      SUBI	R24,0xFE
     5E4 9020 012D LDS	R2,i
     5E6 1628      CP	R2,R24
     5E7 F441      BNE	0x05F0
(0183) 				i=(p[1]-1)*5+2;				//重新从第一条指令开始执行
     5E8 8021      LDD	R2,Z+1
     5E9 E085      LDI	R24,5
     5EA 9D82      MUL	R24,R2
     5EB 2D80      MOV	R24,R0
     5EC 5085      SUBI	R24,5
     5ED 5F8E      SUBI	R24,0xFE
     5EE 9380 012D STS	i,R24
     5F0 CF8B      RJMP	0x057C
     5F1 9508      RET
_Keyscan:
  KeyCode              --> R20
     5F2 934A      ST	R20,-Y
     5F3 935A      ST	R21,-Y
FILE: F:\Work\Data\程序\修订版~1.1\Key_ment.c
(0001) /*****************************************************
(0002) * File name      : Keyscan.C
(0003) * Description    : Header file of  LCD_S.H
(0004) * Platform       : ICCAVR 
(0005) * Author         : xiao xue      
(0006) * Email          : ay1509@yahoo.com
(0007) * Date           : 2008-03-13
(0008) * Description    :Keyboard Scan
(0009) *********************头文件**************************/
(0010) #include "main_H.h"
(0011) /***************************************************
(0012) *函    数:KeyScan
(0013) *函数功能:按键扫描程序
(0014) *入口参数:无
(0015) *返 回 值:键码
(0016) *备    注:
(0017) ****************************************************/
(0018) uchar Keyscan(void)
(0019) {
(0020)    uchar KeyCode=0x00;
     5F4 2744      CLR	R20
(0021)    if((PIND&0xfb)==0xfb)  	//判断有无键按下,没有则直接返回
     5F5 B380      IN	R24,0x10
     5F6 7F8B      ANDI	R24,0xFB
     5F7 3F8B      CPI	R24,0xFB
     5F8 F411      BNE	0x05FB
(0022)    		return(0);
     5F9 2700      CLR	R16
     5FA C043      RJMP	0x063E
(0023)    else{ 
(0024)     	delay_nms(15); 		//延时去抖动		
     5FB E00F      LDI	R16,0xF
     5FC E010      LDI	R17,0
     5FD DD37      RCALL	_delay_nms
(0025)    		KeyCode = PIND&0xfb;//获得D口键值
     5FE B340      IN	R20,0x10
     5FF 7F4B      ANDI	R20,0xFB
(0026)    		if (KeyCode == 0xfb)//再次继续判断有无键按下,无则返回
     600 3F4B      CPI	R20,0xFB
     601 F411      BNE	0x0604
(0027)     		return(0);  
     602 2700      CLR	R16
     603 C03A      RJMP	0x063E
(0028)    		while ((PIND&0xfb) != 0xfb); 	//等待弹起
     604 B380      IN	R24,0x10
     605 7F8B      ANDI	R24,0xFB
     606 3F8B      CPI	R24,0xFB
     607 F7E1      BNE	0x0604
(0029) 	 		delay_nms(15);				//延时去抖动
     608 E00F      LDI	R16,0xF
     609 E010      LDI	R17,0
     60A DD2A      RCALL	_delay_nms
(0030)    		while ((PIND&0xfb) != 0xfb); 	//再次判断是否弹起
     60B B380      IN	R24,0x10
     60C 7F8B      ANDI	R24,0xFB
     60D 3F8B      CPI	R24,0xFB
     60E F7E1      BNE	0x060B
(0031)    		switch(KeyCode){
     60F 2755      CLR	R21
     610 3D4B      CPI	R20,0xDB
     611 E0E0      LDI	R30,0
     612 075E      CPC	R21,R30
     613 F119      BEQ	0x0637
     614 ED8B      LDI	R24,0xDB
     615 E090      LDI	R25,0
     616 1784      CP	R24,R20
     617 0795      CPC	R25,R21
     618 F06C      BLT	0x0626
     619 374B      CPI	R20,0x7B
     61A E0E0      LDI	R30,0
     61B 075E      CPC	R21,R30
     61C F0F1      BEQ	0x063B
     61D 374B      CPI	R20,0x7B
     61E E0E0      LDI	R30,0
     61F 075E      CPC	R21,R30
     620 F0E4      BLT	0x063D
     621 3B4B      CPI	R20,0xBB
     622 E0E0      LDI	R30,0
     623 075E      CPC	R21,R30
     624 F0A1      BEQ	0x0639
     625 C017      RJMP	0x063D
     626 3E4B      CPI	R20,0xEB
     627 E0E0      LDI	R30,0
     628 075E      CPC	R21,R30
     629 F059      BEQ	0x0635
     62A 3E4B      CPI	R20,0xEB
     62B E0E0      LDI	R30,0
     62C 075E      CPC	R21,R30
     62D F07C      BLT	0x063D
     62E 3F43      CPI	R20,0xF3
     62F E0E0      LDI	R30,0
     630 075E      CPC	R21,R30
     631 F009      BEQ	0x0633
     632 C00A      RJMP	0x063D
(0032)       		case 0xf3:return(1);break;		//按键1
     633 E001      LDI	R16,1
     634 C009      RJMP	0x063E
(0033) 	   		case 0xeb:return(2);break;		//按键2
     635 E002      LDI	R16,2
     636 C007      RJMP	0x063E
(0034) 	   		case 0xdb:return(3);break;		//按键3
     637 E003      LDI	R16,3
     638 C005      RJMP	0x063E
(0035) 	   		case 0xbb:return(4);break;		
     639 E004      LDI	R16,4
     63A C003      RJMP	0x063E
(0036) 	   		case 0x7b:return(5);break;		
     63B E005      LDI	R16,5
     63C C001      RJMP	0x063E
(0037) 			default: return(6);break;	   	//其他特殊情况	 
     63D E006      LDI	R16,6
     63E 9159      LD	R21,Y+
     63F 9149      LD	R20,Y+
     640 9508      RET
(0038)    		}//end switch
(0039)    }//end else
(0040) }
(0041) 	
(0042) /***************************************************
(0043) *函    数:KeyInit
(0044) *函数功能:按键端口初始化
(0045) *入口参数:无
(0046) *返 回 值:无
(0047) *备    注:
(0048) ****************************************************/
(0049) void KeyInit(void)
(0050) {
(0051) 	DDRD=0x04;     	//键盘初化
_KeyInit:
     641 E084      LDI	R24,4
     642 BB81      OUT	0x11,R24
(0052) 	PORTD=0xfb;   	//键盘初值
     643 EF8B      LDI	R24,0xFB
     644 BB82      OUT	0x12,R24
     645 9508      RET
(0053) 	
(0054) }
(0055) /***************************************************
(0056) *函    数:data_memory
(0057) *函数功能:对键盘设定的数据进行存储
(0058) *入口参数:无
(0059) *返 回 值:无
(0060) *备    注:
(0061) ****************************************************/
(0062) void data_memory(void)
(0063) {
(0064)    	switch(temp){						//存储运动模式
_data_memory:
     646 9100 0110 LDS	R16,temp
     648 2711      CLR	R17
     649 3000      CPI	R16,0
     64A 0701      CPC	R16,R17
     64B F069      BEQ	0x0659
     64C 3001      CPI	R16,1
     64D E0E0      LDI	R30,0
     64E 071E      CPC	R17,R30
     64F F081      BEQ	0x0660
     650 3002      CPI	R16,2
     651 E0E0      LDI	R30,0
     652 071E      CPC	R17,R30
     653 F099      BEQ	0x0667
     654 3003      CPI	R16,3
     655 E0E0      LDI	R30,0
     656 071E      CPC	R17,R30
     657 F0B1      BEQ	0x066E
     658 C01B      RJMP	0x0674
(0065)  		case 0: p=Pretty;break;			//天女散花
     659 E381      LDI	R24,0x31
     65A E091      LDI	R25,1
     65B 9390 01D8 STS	p+1,R25
     65D 9380 01D7 STS	p,R24
     65F C014      RJMP	0x0674
(0066)   		case 1: p=Thest;break;			//扩胸运动
     660 E586      LDI	R24,0x56
     661 E091      LDI	R25,1
     662 9390 01D8 STS	p+1,R25
     664 9380 01D7 STS	p,R24
     666 C00D      RJMP	0x0674
(0067)   		case 2: p=Armup;break;			//振臂运动
     667 E78B      LDI	R24,0x7B
     668 E091      LDI	R25,1
     669 9390 01D8 STS	p+1,R25
     66B 9380 01D7 STS	p,R24
     66D C006      RJMP	0x0674
(0068)   		case 3: p=Armdown;break;  		//甩臂运动
     66E EA80      LDI	R24,0xA0
     66F E091      LDI	R25,1
     670 9390 01D8 STS	p+1,R25
     672 9380 01D7 STS	p,R24
(0069)    }//end switch
(0070)    	switch(temp1){                      //存储幅度值
     674 9100 0111 LDS	R16,temp1
     676 2711      CLR	R17
     677 3000      CPI	R16,0
     678 0701      CPC	R16,R17
     679 F089      BEQ	0x068B
     67A 3001      CPI	R16,1
     67B E0E0      LDI	R30,0
     67C 071E      CPC	R17,R30
     67D F0A1      BEQ	0x0692
     67E 3002      CPI	R16,2
     67F E0E0      LDI	R30,0
     680 071E      CPC	R17,R30
     681 F0B9      BEQ	0x0699
     682 3003      CPI	R16,3
     683 E0E0      LDI	R30,0
     684 071E      CPC	R17,R30
     685 F0D1      BEQ	0x06A0
     686 3004      CPI	R16,4
     687 E0E0      LDI	R30,0
     688 071E      CPC	R17,R30
     689 F0E9      BEQ	0x06A7
     68A C022      RJMP	0x06AD
(0071)  		case 0: status[1]=0x3C;break;
     68B E38C      LDI	R24,0x3C
     68C E090      LDI	R25,0
     68D 9390 01C8 STS	status+3,R25
     68F 9380 01C7 STS	status+2,R24
     691 C01B      RJMP	0x06AD
(0072)   		case 1: status[1]=0x46;break;
     692 E486      LDI	R24,0x46
     693 E090      LDI	R25,0
     694 9390 01C8 STS	status+3,R25
     696 9380 01C7 STS	status+2,R24
     698 C014      RJMP	0x06AD
(0073)   		case 2: status[1]=0x50;break;
     699 E580      LDI	R24,0x50
     69A E090      LDI	R25,0
     69B 9390 01C8 STS	status+3,R25
     69D 9380 01C7 STS	status+2,R24
     69F C00D      RJMP	0x06AD
(0074)   		case 3: status[1]=0x5A;break;
     6A0 E58A      LDI	R24,0x5A
     6A1 E090      LDI	R25,0
     6A2 9390 01C8 STS	status+3,R25
     6A4 9380 01C7 STS	status+2,R24
     6A6 C006      RJMP	0x06AD
(0075)   		case 4: status[1]=0x64;break;
     6A7 E684      LDI	R24,0x64
     6A8 E090      LDI	R25,0
     6A9 9390 01C8 STS	status+3,R25
     6AB 9380 01C7 STS	status+2,R24
(0076)    	}
(0077)  	switch(temp2){						//存储时间值
     6AD 9100 0112 LDS	R16,temp2
     6AF 2711      CLR	R17
     6B0 3000      CPI	R16,0
     6B1 0701      CPC	R16,R17
     6B2 F089      BEQ	0x06C4
     6B3 3001      CPI	R16,1
     6B4 E0E0      LDI	R30,0
     6B5 071E      CPC	R17,R30
     6B6 F0A1      BEQ	0x06CB
     6B7 3002      CPI	R16,2
     6B8 E0E0      LDI	R30,0
     6B9 071E      CPC	R17,R30
     6BA F0B9      BEQ	0x06D2
     6BB 3003      CPI	R16,3
     6BC E0E0      LDI	R30,0
     6BD 071E      CPC	R17,R30
     6BE F0D1      BEQ	0x06D9
     6BF 3004      CPI	R16,4
     6C0 E0E0      LDI	R30,0
     6C1 071E      CPC	R17,R30
     6C2 F0E9      BEQ	0x06E0
     6C3 C022      RJMP	0x06E6
(0078)   		case 0: status[2]=300;break;       
     6C4 E28C      LDI	R24,0x2C
     6C5 E091      LDI	R25,1
     6C6 9390 01CA STS	0x01CA,R25
     6C8 9380 01C9 STS	0x01C9,R24
     6CA C01B      RJMP	0x06E6
(0079)   		case 1: status[2]=600;break;
     6CB E588      LDI	R24,0x58
     6CC E092      LDI	R25,2
     6CD 9390 01CA STS	0x01CA,R25
     6CF 9380 01C9 STS	0x01C9,R24
     6D1 C014      RJMP	0x06E6
(0080)   		case 2: status[2]=900;break;
     6D2 E884      LDI	R24,0x84
     6D3 E093      LDI	R25,3
     6D4 9390 01CA STS	0x01CA,R25
     6D6 9380 01C9 STS	0x01C9,R24
     6D8 C00D      RJMP	0x06E6
(0081)   		case 3: status[2]=1200;break;
     6D9 EB80      LDI	R24,0xB0
     6DA E094      LDI	R25,4
     6DB 9390 01CA STS	0x01CA,R25
     6DD 9380 01C9 STS	0x01C9,R24
     6DF C006      RJMP	0x06E6
(0082)   		case 4: status[2]=1500;break;
     6E0 ED8C      LDI	R24,0xDC
     6E1 E095      LDI	R25,5
     6E2 9390 01CA STS	0x01CA,R25
     6E4 9380 01C9 STS	0x01C9,R24
(0083)    	}
(0084)    	moto1[2]=status[0];      		//存储模式控制字
     6E6 9020 01C5 LDS	R2,status
     6E8 9030 01C6 LDS	R3,status+1
     6EA 9220 0116 STS	moto1+2,R2
(0085)    	moto2[2]=status[0];     
     6EC 9220 011C STS	moto2+2,R2
(0086)    	moto3[2]=status[0];	  
     6EE 9220 0122 STS	moto3+2,R2
(0087)    	moto4[2]=status[0];    
   

⌨️ 快捷键说明

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