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

📄 xkey.lst

📁 AVR单片机视频教程的课件和每一次课的源程序是学习AVR单片机的首选 第7节
💻 LST
字号:
__start:
__text_start:
    0030 E5CF      LDI	R28,0x5F
    0031 E0D4      LDI	R29,4
    0032 BFCD      OUT	P3D,R28
    0033 BFDE      OUT	P3E,R29
    0034 51C0      SUBI	R28,0x10
    0035 40D0      SBCI	R29,0
    0036 EA0A      LDI	R16,0xAA
    0037 8308      STD	R16,0+Y
    0038 2400      CLR	R0
    0039 E6E0      LDI	R30,0x60
    003A E0F0      LDI	R31,0
    003B E010      LDI	R17,0
    003C 36E0      CPI	R30,0x60
    003D 07F1      CPC	R31,R17
    003E F011      BEQ	0x0041
    003F 9201      ST	R0,Z+
    0040 CFFB      RJMP	0x003C
    0041 8300      STD	R16,0+Z
    0042 E6E0      LDI	R30,0x60
    0043 E0F0      LDI	R31,0
    0044 E6A0      LDI	R26,0x60
    0045 E0B0      LDI	R27,0
    0046 E010      LDI	R17,0
    0047 36E0      CPI	R30,0x60
    0048 07F1      CPC	R31,R17
    0049 F021      BEQ	0x004E
    004A 95C8      LPM
    004B 9631      ADIW	R30,1
    004C 920D      ST	R0,X+
    004D CFF9      RJMP	0x0047
    004E 940E00A3  CALL	_main
_exit:
    0050 CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
    0051 D0B8      RCALL	push_gset2
FILE: I:\AVR视频教程\视频教程\lesson7\XKEY\lesson5.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define  uchar unsigned char
(0004) #define  uint  unsigned int
(0005) 
(0006) void delay(uint ms)
(0007) {
(0008)         uint i,j;
(0009) 	for(i=0;i<ms;i++)
    0052 2744      CLR	R20
    0053 2755      CLR	R21
    0054 C00B      RJMP	0x0060
(0010) 	   {
(0011) 	   for(j=0;j<1141;j++);
    0055 2766      CLR	R22
    0056 2777      CLR	R23
    0057 C002      RJMP	0x005A
    0058 5F6F      SUBI	R22,0xFF
    0059 4F7F      SBCI	R23,0xFF
    005A 3765      CPI	R22,0x75
    005B E0E4      LDI	R30,4
    005C 077E      CPC	R23,R30
    005D F3D0      BCS	0x0058
    005E 5F4F      SUBI	R20,0xFF
    005F 4F5F      SBCI	R21,0xFF
    0060 1740      CP	R20,R16
    0061 0751      CPC	R21,R17
    0062 F390      BCS	0x0055
(0012)        }
(0013) }
    0063 D0AA      RCALL	pop_gset2
    0064 9508      RET
(0014) 
(0015) uchar key_press()
(0016) {
(0017)     uchar j;
(0018)     DDRD|=0X0F;
_key_press:
  j                    --> R16
    0065 B381      IN	R24,P11
    0066 608F      ORI	R24,0xF
    0067 BB81      OUT	P11,R24
(0019) 	PORTD|=0X0F;
    0068 B382      IN	R24,P12
    0069 608F      ORI	R24,0xF
    006A BB82      OUT	P12,R24
(0020) 	
(0021) 	DDRD&=0XF0;
    006B B381      IN	R24,P11
    006C 7F80      ANDI	R24,0xF0
    006D BB81      OUT	P11,R24
(0022) 	
(0023) 	j=PIND;
    006E B300      IN	R16,P10
(0024) 	j=j&0X0F;//00001111
    006F 700F      ANDI	R16,0xF
(0025) 	if(j==0X0F)
    0070 300F      CPI	R16,0xF
    0071 F411      BNE	0x0074
(0026) 	{
(0027) 	  return 0;
    0072 2700      CLR	R16
    0073 C001      RJMP	0x0075
(0028) 	}
(0029) 	else
(0030) 	{
(0031) 	 return 1;
    0074 E001      LDI	R16,1
    0075 9508      RET
_key_scan:
  key                  --> R20
    0076 D093      RCALL	push_gset2
(0032) 	}
(0033) 	
(0034) }
(0035) 
(0036) uchar key_scan()
(0037) {
(0038)     uchar key;
(0039)     delay(10);
    0077 E00A      LDI	R16,0xA
    0078 E010      LDI	R17,0
    0079 DFD7      RCALL	_delay
(0040) 	if(key_press())
    007A DFEA      RCALL	_key_press
    007B 2300      TST	R16
    007C F111      BEQ	0x009F
(0041) 	{
(0042) 	key=PIND;
    007D B340      IN	R20,P10
(0043) 	key&=0X0F;
    007E 704F      ANDI	R20,0xF
(0044) 	switch(key)
    007F 2F64      MOV	R22,R20
    0080 2777      CLR	R23
    0081 3067      CPI	R22,7
    0082 E0E0      LDI	R30,0
    0083 077E      CPC	R23,R30
    0084 F099      BEQ	0x0098
    0085 306B      CPI	R22,0xB
    0086 E0E0      LDI	R30,0
    0087 077E      CPC	R23,R30
    0088 F069      BEQ	0x0096
    0089 306D      CPI	R22,0xD
    008A E0E0      LDI	R30,0
    008B 077E      CPC	R23,R30
    008C F039      BEQ	0x0094
    008D 306E      CPI	R22,0xE
    008E E0E0      LDI	R30,0
    008F 077E      CPC	R23,R30
    0090 F009      BEQ	0x0092
    0091 C008      RJMP	0x009A
(0045) 	{
(0046) 	   case 0X0E: 
(0047) 	       key=1;
    0092 E041      LDI	R20,1
(0048) 		   break;
    0093 C007      RJMP	0x009B
(0049) 	   case 0X0D:
(0050) 	       key=2;
    0094 E042      LDI	R20,2
(0051) 		   break;
    0095 C005      RJMP	0x009B
(0052) 	   	 case 0X0B: 
(0053) 	       key=3;
    0096 E043      LDI	R20,3
(0054) 		   break;
    0097 C003      RJMP	0x009B
(0055) 	   case 0X07:
(0056) 	       key=4;
    0098 E044      LDI	R20,4
(0057) 		   break; 
    0099 C001      RJMP	0x009B
(0058) 	   default:	
(0059) 	       key=16;     	   
    009A E140      LDI	R20,0x10
(0060) 	}
(0061) 	  while(key_press());
    009B DFC9      RCALL	_key_press
    009C 2300      TST	R16
    009D F7E9      BNE	0x009B
(0062) 	}
    009E C001      RJMP	0x00A0
(0063) 	else
(0064) 	{
(0065) 	  key=16;
    009F E140      LDI	R20,0x10
(0066) 	}
(0067) 	return key;
    00A0 2F04      MOV	R16,R20
    00A1 D06C      RCALL	pop_gset2
    00A2 9508      RET
FILE: I:\AVR视频教程\视频教程\lesson7\XKEY\XKEY.C
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #include "lesson5.c"
(0004) void main()
(0005) {
(0006)     uchar i;
(0007)         DDRD|=0X30;
_main:
  i                    --> R22
    00A3 B381      IN	R24,P11
    00A4 6380      ORI	R24,0x30
    00A5 BB81      OUT	P11,R24
(0008) 	
(0009) 	TCCR1A=0X63;
    00A6 E683      LDI	R24,0x63
    00A7 BD8F      OUT	P2F,R24
(0010) 	TCCR1B=0X13;
    00A8 E183      LDI	R24,0x13
    00A9 BD8E      OUT	P2E,R24
(0011) 	
(0012) 	OCR1A=1249;
    00AA EE81      LDI	R24,0xE1
    00AB E094      LDI	R25,4
    00AC 9390004B  STS	R25,0x4B
    00AE 9380004A  STS	R24,0x4A
(0013) 	OCR1B=31;
    00B0 E18F      LDI	R24,0x1F
    00B1 E090      LDI	R25,0
    00B2 93900049  STS	R25,0x49
    00B4 93800048  STS	R24,0x48
    00B6 C03A      RJMP	0x00F1
(0014) 	
(0015) 	while(1)
(0016) 	{
(0017) 	   if(key_press())
    00B7 DFAD      RCALL	_key_press
    00B8 2300      TST	R16
    00B9 F1B9      BEQ	0x00F1
(0018) 	   {
(0019) 	       i=key_scan();
    00BA DFBB      RCALL	_key_scan
    00BB 2F60      MOV	R22,R16
(0020) 		   switch(i)
    00BC 2F46      MOV	R20,R22
    00BD 2755      CLR	R21
    00BE 3041      CPI	R20,1
    00BF E0E0      LDI	R30,0
    00C0 075E      CPC	R21,R30
    00C1 F069      BEQ	0x00CF
    00C2 3042      CPI	R20,2
    00C3 E0E0      LDI	R30,0
    00C4 075E      CPC	R21,R30
    00C5 F081      BEQ	0x00D6
    00C6 3043      CPI	R20,3
    00C7 E0E0      LDI	R30,0
    00C8 075E      CPC	R21,R30
    00C9 F099      BEQ	0x00DD
    00CA 3044      CPI	R20,4
    00CB E0E0      LDI	R30,0
    00CC 075E      CPC	R21,R30
    00CD F0B1      BEQ	0x00E4
    00CE C01C      RJMP	0x00EB
(0021) 		   {
(0022) 		     case 1:
(0023) 			    OCR1B=31;
    00CF E18F      LDI	R24,0x1F
    00D0 E090      LDI	R25,0
    00D1 93900049  STS	R25,0x49
    00D3 93800048  STS	R24,0x48
(0024) 				break;
    00D5 C01B      RJMP	0x00F1
(0025) 			 case 2:
(0026) 			    OCR1B=62;
    00D6 E38E      LDI	R24,0x3E
    00D7 E090      LDI	R25,0
    00D8 93900049  STS	R25,0x49
    00DA 93800048  STS	R24,0x48
(0027) 				break;
    00DC C014      RJMP	0x00F1
(0028) 			 case 3:
(0029) 			    OCR1B=93; 
    00DD E58D      LDI	R24,0x5D
    00DE E090      LDI	R25,0
    00DF 93900049  STS	R25,0x49
    00E1 93800048  STS	R24,0x48
(0030) 				break;
    00E3 C00D      RJMP	0x00F1
(0031) 			case 4:
(0032) 			    OCR1B=124; 
    00E4 E78C      LDI	R24,0x7C
    00E5 E090      LDI	R25,0
    00E6 93900049  STS	R25,0x49
    00E8 93800048  STS	R24,0x48
(0033) 				break;
    00EA C006      RJMP	0x00F1
(0034) 			default:
(0035) 			    OCR1B=31;		
    00EB E18F      LDI	R24,0x1F
    00EC E090      LDI	R25,0
    00ED 93900049  STS	R25,0x49
    00EF 93800048  STS	R24,0x48
    00F1 CFC5      RJMP	0x00B7
(0036) 		   }
(0037) 	   }
(0038) 	}
(0039) }FILE: <library>
    00F2 9508      RET
push_gset1:
    00F3 935A      ST	R21,-Y
    00F4 934A      ST	R20,-Y
    00F5 9508      RET
pop_gset1:
    00F6 E0E1      LDI	R30,1
pop:
    00F7 9149      LD	R20,Y+
    00F8 9159      LD	R21,Y+
    00F9 FDE0      SBRC	R30,0
    00FA 9508      RET
    00FB 9169      LD	R22,Y+
    00FC 9179      LD	R23,Y+
    00FD FDE1      SBRC	R30,1
    00FE 9508      RET
    00FF 90A9      LD	R10,Y+
    0100 90B9      LD	R11,Y+
    0101 FDE2      SBRC	R30,2
    0102 9508      RET
    0103 90C9      LD	R12,Y+
    0104 90D9      LD	R13,Y+
    0105 FDE3      SBRC	R30,3
    0106 9508      RET
    0107 90E9      LD	R14,Y+
    0108 90F9      LD	R15,Y+
    0109 9508      RET
push_gset2:
    010A 937A      ST	R23,-Y
    010B 936A      ST	R22,-Y
    010C 940C00F3  JMP	push_gset1
pop_gset2:
    010E E0E2      LDI	R30,2
    010F 940C00F7  JMP	pop

⌨️ 快捷键说明

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