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

📄 图康科技.lst

📁 基于ATmega8开发的关于医疗康复的机器人
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
      C6 E5CF      LDI	R28,0x5F
      C7 E0D4      LDI	R29,4
      C8 BFCD      OUT	0x3D,R28
      C9 BFDE      OUT	0x3E,R29
      CA 51C0      SUBI	R28,0x10
      CB 40D0      SBCI	R29,0
      CC EA0A      LDI	R16,0xAA
      CD 8308      STD	Y+0,R16
      CE 2400      CLR	R0
      CF ECE5      LDI	R30,0xC5
      D0 E0F1      LDI	R31,1
      D1 E011      LDI	R17,1
      D2 3FE1      CPI	R30,0xF1
      D3 07F1      CPC	R31,R17
      D4 F011      BEQ	0x00D7
      D5 9201      ST	R0,Z+
      D6 CFFB      RJMP	0x00D2
      D7 8300      STD	Z+0,R16
      D8 E2E6      LDI	R30,0x26
      D9 E0F0      LDI	R31,0
      DA E6A0      LDI	R26,0x60
      DB E0B0      LDI	R27,0
      DC E011      LDI	R17,1
      DD E000      LDI	R16,0
      DE BF0B      OUT	0x3B,R16
      DF 38EB      CPI	R30,0x8B
      E0 07F1      CPC	R31,R17
      E1 F021      BEQ	0x00E6
      E2 95C8      LPM
      E3 9631      ADIW	R30,1
      E4 920D      ST	R0,X+
      E5 CFF9      RJMP	0x00DF
      E6 D001      RCALL	_main
_exit:
      E7 CFFF      RJMP	_exit
FILE: F:\Work\Data\程序\修订版~1.1\main.c
(0001) /*****************************************************
(0002) * File name      : main.C
(0003) * Description    : Header file of  main_H.H
(0004) * Platform       : ICCAVR 
(0005) * Author         : xiao xue      
(0006) * Email          : ay1509@yahoo.com
(0007) * Date           : 2008-03-13
(0008) * Description    : 
(0009) /********************头文件*************************/
(0010) #include"main_H.h"
(0011) 
(0012) void main(void)
(0013) {  
(0014)  	SEI(); 
_main:
      E8 9478      BSET	7
(0015)  	RS485_init();
      E9 D284      RCALL	_RS485_init
(0016)  	KeyInit();
      EA D556      RCALL	_KeyInit
(0017)  	lcd_init();
      EB D047      RCALL	_lcd_init
(0018)  	timer1_init();
      EC D6EB      RCALL	_timer1_init
(0019)  	delay_nms(1000);	
      ED EE08      LDI	R16,0xE8
      EE E013      LDI	R17,3
      EF D245      RCALL	_delay_nms
(0020)  	delay_nms(1000);	
      F0 EE08      LDI	R16,0xE8
      F1 E013      LDI	R17,3
      F2 D242      RCALL	_delay_nms
(0021)  	Send_485();
      F3 D2A4      RCALL	_Send_485
      F4 C020      RJMP	0x0115
(0022) 
(0023)  	while(1){
(0024) 		switch(flag){
      F5 9140 01D6 LDS	R20,flag
      F7 2755      CLR	R21
      F8 3041      CPI	R20,1
      F9 E0E0      LDI	R30,0
      FA 075E      CPC	R21,R30
      FB F049      BEQ	0x0105
      FC 3042      CPI	R20,2
      FD E0E0      LDI	R30,0
      FE 075E      CPC	R21,R30
      FF F039      BEQ	0x0107
     100 3043      CPI	R20,3
     101 E0E0      LDI	R30,0
     102 075E      CPC	R21,R30
     103 F029      BEQ	0x0109
     104 C005      RJMP	0x010A
(0025) 			case 1:
(0026) 				display();         	//flag=1液晶显示
     105 D23B      RCALL	_display
(0027) 				break;
     106 C003      RJMP	0x010A
(0028) 			case 2:
(0029) 				Send_485();   		//发送数据
     107 D290      RCALL	_Send_485
(0030) 				break;
     108 C001      RJMP	0x010A
(0031) 			case 3:
(0032) 				RS485_getchar();   	//决断模块
     109 D470      RCALL	_RS485_getchar
(0033) 				break;
(0034) 			default:break;
(0035) 		}//end switch
(0036)   		if(PIND!=0xfb){  	         	//判断有无键按下
     10A B380      IN	R24,0x10
     10B 3F8B      CPI	R24,0xFB
     10C F041      BEQ	0x0115
(0037)  			delay_nms(15);           	//延时消抖
     10D E00F      LDI	R16,0xF
     10E E010      LDI	R17,0
     10F D225      RCALL	_delay_nms
(0038)   			if ((PIND&0xfb)!= 0xfb)
     110 B380      IN	R24,0x10
     111 7F8B      ANDI	R24,0xFB
     112 3F8B      CPI	R24,0xFB
     113 F009      BEQ	0x0115
(0039)  				Keyment();             	//按键处理函数
     114 D5E4      RCALL	_Keyment
     115 CFDF      RJMP	0x00F5
     116 9508      RET
_wr_com:
  cmd                  --> R10
     117 92AA      ST	R10,-Y
     118 2EA0      MOV	R10,R16
FILE: F:\Work\Data\程序\修订版~1.1\LCD_HG1286.c
(0001) /*****************************************************
(0002) * File name      : LCD_HG1286.C
(0003) * Description    : Header file of  main_H.H
(0004) * Platform       : ICCAVR 
(0005) * Author         : xiao xue      
(0006) * Email          : ay1509@yahoo.com
(0007) * Date           : 2008-03-13
(0008) * Description    : LCD Show
(0009) /********************头文件*************************/
(0010) #include"main_H.h"
(0011) /***************写命令***************
(0012) *函    数:wr_com
(0013) *函数功能:写命令字
(0014) *入口参数:cmd
(0015) *返 回 值:无
(0016) *备    注:
(0017) ************************************/
(0018) void wr_com(uchar cmd)
(0019) {
(0020)  	PORTB=cmd;			//命令送至B端口
     119 BAA8      OUT	0x18,R10
(0021)  	RS_clear;          	//写命令
     11A 98AA      CBI	0x15,2
(0022)  	RW_clear;         	//写使能	
     11B 98AC      CBI	0x15,4
(0023)  	E_clear;         	//模块使能
     11C 98AD      CBI	0x15,5
(0024)  	delay_nus(300);
     11D E20C      LDI	R16,0x2C
     11E E011      LDI	R17,1
     11F D1FF      RCALL	_delay_nus
(0025)  	E_set;				//关闭使能
     120 9AAD      SBI	0x15,5
     121 90A9      LD	R10,Y+
     122 9508      RET
_wr_date:
  data                 --> R10
     123 92AA      ST	R10,-Y
     124 92BA      ST	R11,-Y
     125 0158      MOVW	R10,R16
(0026) }
(0027) 
(0028) /*****************写数据**************
(0029) *函    数:wr_date
(0030) *函数功能:写数据
(0031) *入口参数:*data
(0032) *返 回 值:无
(0033) *备    注:
(0034) ************************************/
(0035) void wr_date(uchar *data)
(0036) {
(0037)  	PORTB=*data;		//数据传至B端口
     126 01F5      MOVW	R30,R10
     127 8020      LDD	R2,Z+0
     128 BA28      OUT	0x18,R2
(0038)  	RS_set;        		//写数据
     129 9AAA      SBI	0x15,2
(0039)  	RW_clear;     		//写使能		
     12A 98AC      CBI	0x15,4
(0040)  	E_clear;     		//模块使能
     12B 98AD      CBI	0x15,5
(0041)  	delay_nus(300);
     12C E20C      LDI	R16,0x2C
     12D E011      LDI	R17,1
     12E D1F0      RCALL	_delay_nus
(0042)  	E_set;				//关闭使能
     12F 9AAD      SBI	0x15,5
     130 90B9      LD	R11,Y+
     131 90A9      LD	R10,Y+
     132 9508      RET
(0043) }
(0044) /******************初始化**********
(0045) *函    数:lcd_init
(0046) *函数功能:液晶始化
(0047) *入口参数:无
(0048) *返 回 值:无
(0049) *备    注:
(0050) **********************************/
(0051) void lcd_init(void)
(0052) { 	
(0053)  	DDRB=0xff;
_lcd_init:
     133 EF8F      LDI	R24,0xFF
     134 BB87      OUT	0x17,R24
(0054)  	DDRC=0xff;
     135 BB84      OUT	0x14,R24
(0055)  	PORTB=0XFF;
     136 BB88      OUT	0x18,R24
(0056)  	PORTC=0XFF;
     137 BB85      OUT	0x15,R24
(0057)  	wr_com(0x01);		//清DDRAM
     138 E001      LDI	R16,1
     139 DFDD      RCALL	_wr_com
(0058)  	wr_com(0x30);		//功能设置,一次送8位数据(基本指令集)
     13A E300      LDI	R16,0x30
     13B DFDB      RCALL	_wr_com
(0059)  	wr_com(0x02);		//DDRAM地址归位
     13C E002      LDI	R16,2
     13D DFD9      RCALL	_wr_com
(0060)  	wr_com(0x04);
     13E E004      LDI	R16,4
     13F DFD7      RCALL	_wr_com
(0061)  	wr_com(0x0C);		//整体显示,游标off,游标位置off		
     140 E00C      LDI	R16,0xC
     141 DFD5      RCALL	_wr_com
(0062)  	wr_com(0x80);		//设定DDRAM7位地址到地址计数器AC	
     142 E800      LDI	R16,0x80
     143 DFD3      RCALL	_wr_com
     144 9508      RET
_dis:
  k                    --> R10
  datas                --> Y,+8
  sum                  --> R12
  h                    --> R14
     145 D6EA      RCALL	push_xgset30FC
     146 2EC2      MOV	R12,R18
     147 2EE0      MOV	R14,R16
(0063) }
(0064) /******************显示数据******************
(0065) *h代表行数可取(1,2,3,4)
(0066) * SUM表示一次要显示汉字的总个数。(1--32)
(0067) ********************************************/
(0068) void dis(uchar h , uchar sum , uchar *datas )
(0069) { 
(0070) 	unsigned char k=0; 
     148 24AA      CLR	R10
(0071) 	switch (h){			//判断所要显示行
     149 2D4E      MOV	R20,R14
     14A 2755      CLR	R21
     14B 3041      CPI	R20,1
     14C E0E0      LDI	R30,0
     14D 075E      CPC	R21,R30
     14E F069      BEQ	0x015C
     14F 3042      CPI	R20,2
     150 E0E0      LDI	R30,0
     151 075E      CPC	R21,R30
     152 F061      BEQ	0x015F
     153 3043      CPI	R20,3
     154 E0E0      LDI	R30,0
     155 075E      CPC	R21,R30
     156 F059      BEQ	0x0162
     157 3044      CPI	R20,4
     158 E0E0      LDI	R30,0
     159 075E      CPC	R21,R30
     15A F051      BEQ	0x0165
     15B C014      RJMP	0x0170
(0072)  		case 1: wr_com(0x80);break;
     15C E800      LDI	R16,0x80
     15D DFB9      RCALL	_wr_com
     15E C011      RJMP	0x0170
(0073)  		case 2: wr_com(0x90);break;
     15F E900      LDI	R16,0x90
     160 DFB6      RCALL	_wr_com
     161 C00E      RJMP	0x0170
(0074)  		case 3: wr_com(0x88);break;
     162 E808      LDI	R16,0x88
     163 DFB3      RCALL	_wr_com
     164 C00B      RJMP	0x0170
(0075)  		case 4: wr_com(0x98);break;
     165 E908      LDI	R16,0x98
     166 DFB0      RCALL	_wr_com
     167 C008      RJMP	0x0170
(0076)     }//end switch 
(0077) 	while(k<=sum){		//显示数据个数
(0078)  		wr_date(&(*(datas+k))); 	//写入数据
     168 2D0A      MOV	R16,R10
     169 2711      CLR	R17
     16A 8408      LDD	R0,Y+8
     16B 8419      LDD	R1,Y+9
     16C 0D00      ADD	R16,R0
     16D 1D11      ADC	R17,R1
     16E DFB4      RCALL	_wr_date
(0079)  		k++;
     16F 94A3      INC	R10
     170 2C2C      MOV	R2,R12
     171 2433      CLR	R3
     172 2C4A      MOV	R4,R10
     173 2455      CLR	R5
     174 1424      CP	R2,R4
     175 0435      CPC	R3,R5
     176 F78C      BGE	0x0168
     177 C6AD      RJMP	pop_xgset30FC
_lcd_dis:
  datac                --> R20
  y                    --> R22
  x                    --> R10
     178 D6CA      RCALL	push_xgsetF00C
     179 2F62      MOV	R22,R18
     17A 2EA0      MOV	R10,R16
     17B 814E      LDD	R20,Y+6
     17C 815F      LDD	R21,Y+7
(0080)     }//end while
(0081) } 
(0082) /***********************定点显示数据*********************
(0083) *LCD显示子程序(一次写入两个字节)
(0084) *            x代表行数可取:1,2,3,4(十进制)
(0085) *            y代表列数可取:0X0,0X1————0X7(十六进制) 
(0086) *           *data代表显示数据
(0087) ********************************************************/
(0088) void lcd_dis(uchar x,uchar y,uchar *datac)
(0089) {
(0090) 	switch (x){				//判断所要显示行
     17D 24BB      CLR	R11
     17E 01C5      MOVW	R24,R10
     17F 3081      CPI	R24,1
     180 E0E0      LDI	R30,0
     181 079E      CPC	R25,R30
     182 F069      BEQ	0x0190
     183 3082      CPI	R24,2
     184 E0E0      LDI	R30,0
     185 079E      CPC	R25,R30
     186 F069      BEQ	0x0194
     187 3083      CPI	R24,3
     188 E0E0      LDI	R30,0
     189 079E      CPC	R25,R30
     18A F069      BEQ	0x0198
     18B 3084      CPI	R24,4
     18C E0E0      LDI	R30,0
     18D 079E      CPC	R25,R30
     18E F069      BEQ	0x019C
     18F C00F      RJMP	0x019F
(0091)  		case 1: wr_com(0x80+y);break;	//所要显示行和列
     190 2F06      MOV	R16,R22
     191 5800      SUBI	R16,0x80
     192 DF84      RCALL	_wr_com
     193 C00B      RJMP	0x019F
(0092)  		case 2: wr_com(0x90+y);break;
     194 2F06      MOV	R16,R22
     195 5700      SUBI	R16,0x70
     196 DF80      RCALL	_wr_com
     197 C007      RJMP	0x019F
(0093)  		case 3: wr_com(0x88+y);break;
     198 2F06      MOV	R16,R22
     199 5708      SUBI	R16,0x78
     19A DF7C      RCALL	_wr_com
     19B C003      RJMP	0x019F
(0094)  		case 4: wr_com(0x98+y);break;
     19C 2F06      MOV	R16,R22
     19D 5608      SUBI	R16,0x68
     19E DF78      RCALL	_wr_com
(0095)     }//end switch
(0096)  	wr_date(datac);			//定点显示数据第一个字节
     19F 018A      MOVW	R16,R20
     1A0 DF82      RCALL	_wr_date
(0097)  	wr_date(&(*(datac+1)));	//定点显示数据第二个字节
     1A1 018A      MOVW	R16,R20
     1A2 5F0F      SUBI	R16,0xFF
     1A3 4F1F      SBCI	R17,0xFF
     1A4 DF7E      RCALL	_wr_date
     1A5 C6A4      RJMP	pop_xgsetF00C
_clr:
  a                    --> Y,+0
  i                    --> R20
     1A6 934A      ST	R20,-Y
     1A7 9721      SBIW	R28,1
(0098) }
(0099) /**********************清屏函数***********************
(0100) *函    数:clr
(0101) *函数功能:清屏
(0102) *入口参数:无
(0103) *返 回 值:无
(0104) *备    注:
(0105) ****************************************************/
(0106) void clr(void)
(0107) {
(0108)  	uchar i,a=0x20;
     1A8 E280      LDI	R24,0x20
     1A9 8388      STD	Y+0,R24
(0109)  	wr_com(0x80);		//显示命令
     1AA E800      LDI	R16,0x80
     1AB DF6B      RCALL	_wr_com
(0110)  	for(i=1;i<=64;i++)
     1AC E041      LDI	R20,1
     1AD C003      RJMP	0x01B1

⌨️ 快捷键说明

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