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

📄 jzjp.lst

📁 avr基础程序大全
💻 LST
字号:
Interrupt Vectors
    00000 940C 0037 JMP	__text_start|__start

Program Code (text area)
__text_start|__start:
    00037 E5CF      LDI	R28,0x5F
    00038 E0D4      LDI	R29,4
    00039 BFCD      OUT	0x3D,R28
    0003A BFDE      OUT	0x3E,R29
    0003B 51CE      SUBI	R28,0x1E
    0003C 40D0      SBCI	R29,0
    0003D EA0A      LDI	R16,0xAA
    0003E 8308      ST	Y,R16
    0003F 2400      CLR	R0
    00040 E7E9      LDI	R30,0x79
    00041 E0F0      LDI	R31,0
    00042 E010      LDI	R17,0
    00043 37E9      CPI	R30,0x79
    00044 07F1      CPC	R31,R17
    00045 F011      BEQ	0x0048
    00046 9201      ST	Z+,R0
    00047 CFFB      RJMP	0x0043
    00048 8300      ST	Z,R16
    00049 E5E4      LDI	R30,0x54
    0004A E0F0      LDI	R31,0
    0004B E6A0      LDI	R26,0x60
    0004C E0B0      LDI	R27,0
    0004D E010      LDI	R17,0
    0004E E000      LDI	R16,0
    0004F BF0B      OUT	0x3B,R16
    00050 36ED      CPI	R30,0x6D
    00051 07F1      CPC	R31,R17
    00052 F021      BEQ	0x0057
    00053 95C8      LPM
    00054 9631      ADIW	R30,1
    00055 920D      ST	X+,R0
    00056 CFF9      RJMP	0x0050
    00057 940E 0139 CALL	_main
_exit:
    00059 CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
    0005A 940E 0146 CALL	push_xgsetF000
FILE: E:\AVR自编程序\11实验板\10矩阵键盘\矩阵键盘.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define  uchar unsigned char
(0004) #define  uint  unsigned int
(0005) 
(0006) uchar const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
(0007) 		           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0XFF};
(0008) uchar const LED_W[8] = {0,1,2,3,4,5,6,7};					   
(0009) void delay(uint ms)
(0010) {
(0011)         uint i,j;
(0012) 	for(i=0;i<ms;i++)
    0005C 2744      CLR	R20
    0005D 2755      CLR	R21
    0005E C00B      RJMP	0x006A
(0013) 	   {
(0014) 	   for(j=0;j<1141;j++);
    0005F 2766      CLR	R22
    00060 2777      CLR	R23
    00061 C002      RJMP	0x0064
    00062 5F6F      SUBI	R22,0xFF
    00063 4F7F      SBCI	R23,0xFF
    00064 3765      CPI	R22,0x75
    00065 E0E4      LDI	R30,4
    00066 077E      CPC	R23,R30
    00067 F3D0      BCS	0x0062
    00068 5F4F      SUBI	R20,0xFF
    00069 4F5F      SBCI	R21,0xFF
    0006A 1740      CP	R20,R16
    0006B 0751      CPC	R21,R17
    0006C F390      BCS	0x005F
    0006D 940C 014B JMP	pop_xgsetF000
_show:
  k                    --> R10
  j                    --> R12
    0006F 92AA      ST	-Y,R10
    00070 92CA      ST	-Y,R12
    00071 2EA2      MOV	R10,R18
    00072 2EC0      MOV	R12,R16
(0015)        }
(0016) }
(0017) void show(uchar j,uchar k)
(0018) {
(0019)       PORTA = table[j];		 // i 值的 个位数
    00073 E680      LDI	R24,0x60
    00074 E090      LDI	R25,0
    00075 2DEC      MOV	R30,R12
    00076 27FF      CLR	R31
    00077 0FE8      ADD	R30,R24
    00078 1FF9      ADC	R31,R25
    00079 8020      LD	R2,Z
    0007A BA2B      OUT	0x1B,R2
(0020) 		PORTC = LED_W[k];		 //点亮第一位数码管
    0007B E781      LDI	R24,0x71
    0007C E090      LDI	R25,0
    0007D 2DEA      MOV	R30,R10
    0007E 27FF      CLR	R31
    0007F 0FE8      ADD	R30,R24
    00080 1FF9      ADC	R31,R25
    00081 8020      LD	R2,Z
    00082 BA25      OUT	0x15,R2
(0021) 		
(0022) 		delay(2);
    00083 E002      LDI	R16,2
    00084 E010      LDI	R17,0
    00085 DFD4      RCALL	_delay
    00086 90C9      LD	R12,Y+
    00087 90A9      LD	R10,Y+
    00088 9508      RET
(0023) }
(0024) uchar key_press()
(0025) { 
(0026)      uchar i;
(0027)      DDRB=0XFF;
_key_press:
  i                    --> R16
    00089 EF8F      LDI	R24,0xFF
    0008A BB87      OUT	0x17,R24
(0028) 	 PORTB=0XF0;
    0008B EF80      LDI	R24,0xF0
    0008C BB88      OUT	0x18,R24
(0029) 	 
(0030) 	 DDRB=0X0F;
    0008D E08F      LDI	R24,0xF
    0008E BB87      OUT	0x17,R24
(0031) 	 
(0032) 	 i=PINB;
    0008F B306      IN	R16,0x16
(0033) 	 if(i==0XF0)
    00090 3F00      CPI	R16,0xF0
    00091 F421      BNE	0x0096
(0034) 	 {
(0035) 	   DDRB=0XFF;
    00092 EF8F      LDI	R24,0xFF
    00093 BB87      OUT	0x17,R24
(0036) 	   return 0;
    00094 2700      CLR	R16
    00095 C003      RJMP	0x0099
(0037) 	 }
(0038) 	 else
(0039) 	 {
(0040) 	   DDRB=0XFF;
    00096 EF8F      LDI	R24,0xFF
    00097 BB87      OUT	0x17,R24
(0041) 	   return 1;
    00098 E001      LDI	R16,1
    00099 9508      RET
_key_scan:
  j                    --> R10
  key                  --> R20
  i                    --> R22
    0009A 940E 0150 CALL	push_xgsetF00C
(0042) 	 }
(0043) }
(0044) 
(0045) uchar key_scan()
(0046) {
(0047)      uchar key,i=0X7F,j;
    0009C E76F      LDI	R22,0x7F
(0048)      delay(10);
    0009D E00A      LDI	R16,0xA
    0009E E010      LDI	R17,0
    0009F DFBA      RCALL	_delay
(0049) 	 if(key_press())
    000A0 DFE8      RCALL	_key_press
    000A1 2300      TST	R16
    000A2 F409      BNE	0x00A4
    000A3 C091      RJMP	0x0135
(0050) 	 {
(0051) 	    do
(0052) 		{
(0053) 		 i=(i<<1|i>>7);
    000A4 2E26      MOV	R2,R22
    000A5 9426      LSR	R2
    000A6 9426      LSR	R2
    000A7 9426      LSR	R2
    000A8 9426      LSR	R2
    000A9 9426      LSR	R2
    000AA 9426      LSR	R2
    000AB 9426      LSR	R2
    000AC 2E36      MOV	R3,R22
    000AD 0C33      LSL	R3
    000AE 2832      OR	R3,R2
    000AF 2D63      MOV	R22,R3
(0054) 		 PORTB=i;
    000B0 BA38      OUT	0x18,R3
(0055) 		 DDRB=0X0F;
    000B1 E08F      LDI	R24,0xF
    000B2 BB87      OUT	0x17,R24
(0056) 		 
(0057) 		 key=PINB;
    000B3 B346      IN	R20,0x16
(0058) 		 j=key&0XF0;
    000B4 2F84      MOV	R24,R20
    000B5 7F80      ANDI	R24,0xF0
    000B6 2EA8      MOV	R10,R24
(0059) 		 
(0060) 	    }while(j==0XF0);
    000B7 2D8A      MOV	R24,R10
    000B8 3F80      CPI	R24,0xF0
    000B9 F351      BEQ	0x00A4
(0061) 		
(0062) 		while(key_press());
    000BA DFCE      RCALL	_key_press
    000BB 2300      TST	R16
    000BC F7E9      BNE	0x00BA
(0063) 		switch(key)
    000BD 2F64      MOV	R22,R20
    000BE 2777      CLR	R23
    000BF 3B67      CPI	R22,0xB7
    000C0 E0E0      LDI	R30,0
    000C1 077E      CPC	R23,R30
    000C2 F409      BNE	0x00C4
    000C3 C06B      RJMP	0x012F
    000C4 3B6B      CPI	R22,0xBB
    000C5 E0E0      LDI	R30,0
    000C6 077E      CPC	R23,R30
    000C7 F409      BNE	0x00C9
    000C8 C05E      RJMP	0x0127
    000C9 3B6D      CPI	R22,0xBD
    000CA E0E0      LDI	R30,0
    000CB 077E      CPC	R23,R30
    000CC F409      BNE	0x00CE
    000CD C051      RJMP	0x011F
    000CE 3B6E      CPI	R22,0xBE
    000CF E0E0      LDI	R30,0
    000D0 077E      CPC	R23,R30
    000D1 F409      BNE	0x00D3
    000D2 C044      RJMP	0x0117
    000D3 EB8E      LDI	R24,0xBE
    000D4 E090      LDI	R25,0
    000D5 1786      CP	R24,R22
    000D6 0797      CPC	R25,R23
    000D7 F0A4      BLT	0x00EC
    000D8 3767      CPI	R22,0x77
    000D9 E0E0      LDI	R30,0
    000DA 077E      CPC	R23,R30
    000DB F409      BNE	0x00DD
    000DC C054      RJMP	0x0131
    000DD 376B      CPI	R22,0x7B
    000DE E0E0      LDI	R30,0
    000DF 077E      CPC	R23,R30
    000E0 F409      BNE	0x00E2
    000E1 C047      RJMP	0x0129
    000E2 376D      CPI	R22,0x7D
    000E3 E0E0      LDI	R30,0
    000E4 077E      CPC	R23,R30
    000E5 F409      BNE	0x00E7
    000E6 C03A      RJMP	0x0121
    000E7 376E      CPI	R22,0x7E
    000E8 E0E0      LDI	R30,0
    000E9 077E      CPC	R23,R30
    000EA F171      BEQ	0x0119
    000EB C047      RJMP	0x0133
    000EC 3D67      CPI	R22,0xD7
    000ED E0E0      LDI	R30,0
    000EE 077E      CPC	R23,R30
    000EF F409      BNE	0x00F1
    000F0 C03C      RJMP	0x012D
    000F1 3D6B      CPI	R22,0xDB
    000F2 E0E0      LDI	R30,0
    000F3 077E      CPC	R23,R30
    000F4 F181      BEQ	0x0125
    000F5 3D6D      CPI	R22,0xDD
    000F6 E0E0      LDI	R30,0
    000F7 077E      CPC	R23,R30
    000F8 F121      BEQ	0x011D
    000F9 3D6E      CPI	R22,0xDE
    000FA E0E0      LDI	R30,0
    000FB 077E      CPC	R23,R30
    000FC F0C1      BEQ	0x0115
    000FD 3D67      CPI	R22,0xD7
    000FE E0E0      LDI	R30,0
    000FF 077E      CPC	R23,R30
    00100 F40C      BGE	0x0102
    00101 C031      RJMP	0x0133
    00102 3E67      CPI	R22,0xE7
    00103 E0E0      LDI	R30,0
    00104 077E      CPC	R23,R30
    00105 F129      BEQ	0x012B
    00106 3E6B      CPI	R22,0xEB
    00107 E0E0      LDI	R30,0
    00108 077E      CPC	R23,R30
    00109 F0C9      BEQ	0x0123
    0010A 3E6D      CPI	R22,0xED
    0010B E0E0      LDI	R30,0
    0010C 077E      CPC	R23,R30
    0010D F069      BEQ	0x011B
    0010E 3E6E      CPI	R22,0xEE
    0010F E0E0      LDI	R30,0
    00110 077E      CPC	R23,R30
    00111 F009      BEQ	0x0113
    00112 C020      RJMP	0x0133
(0064) 		{
(0065)        case 0xEE:
(0066) 	   		key=0x0;
    00113 2744      CLR	R20
(0067) 			break;
    00114 C021      RJMP	0x0136
(0068) 	   case 0xDE:
(0069) 	   		key=0x1;
    00115 E041      LDI	R20,1
(0070) 			break; 
    00116 C01F      RJMP	0x0136
(0071) 	   case 0xBE:
(0072) 	   		key=0x2;
    00117 E042      LDI	R20,2
(0073) 			break;
    00118 C01D      RJMP	0x0136
(0074) 	   case 0x7E:
(0075) 	   		key=0x3;
    00119 E043      LDI	R20,3
(0076) 			break;
    0011A C01B      RJMP	0x0136
(0077) 	   case 0xED:
(0078) 	   		key=0x4;
    0011B E044      LDI	R20,4
(0079) 			break;
    0011C C019      RJMP	0x0136
(0080) 	   case 0xDD:
(0081) 	   		key=0x5;
    0011D E045      LDI	R20,5
(0082) 			break;
    0011E C017      RJMP	0x0136
(0083) 	   case 0xBD:
(0084) 	   		key=0x6;
    0011F E046      LDI	R20,6
(0085) 			break;
    00120 C015      RJMP	0x0136
(0086) 	   case 0x7D:
(0087) 	   		key=0x7;
    00121 E047      LDI	R20,7
(0088) 			break;
    00122 C013      RJMP	0x0136
(0089) 	   case 0xEB:
(0090) 	   		key=0x8;
    00123 E048      LDI	R20,0x8
(0091) 			break;
    00124 C011      RJMP	0x0136
(0092) 	   case 0xDB:
(0093) 	   		key=0x9;
    00125 E049      LDI	R20,0x9
(0094) 			break;
    00126 C00F      RJMP	0x0136
(0095) 	   case 0xBB:
(0096) 	   		key=0xA;
    00127 E04A      LDI	R20,0xA
(0097) 			break;
    00128 C00D      RJMP	0x0136
(0098) 	   case 0x7B:
(0099) 	   		key=0xB;
    00129 E04B      LDI	R20,0xB
(0100) 			break;
    0012A C00B      RJMP	0x0136
(0101) 	   case 0xE7:
(0102) 	   		key=0xC;
    0012B E04C      LDI	R20,0xC
(0103) 			break;
    0012C C009      RJMP	0x0136
(0104) 	   case 0xD7:
(0105) 	   		key=0xD;
    0012D E04D      LDI	R20,0xD
(0106) 			break;
    0012E C007      RJMP	0x0136
(0107) 	   case 0xB7:
(0108) 	   		key=0xE;
    0012F E04E      LDI	R20,0xE
(0109) 			break;
    00130 C005      RJMP	0x0136
(0110) 	   case 0x77:
(0111) 	   		key=0xF;
    00131 E04F      LDI	R20,0xF
(0112) 			break;
    00132 C003      RJMP	0x0136
(0113) 	   default:
(0114) 	        key=16;		
    00133 E140      LDI	R20,0x10
(0115) 		}
(0116) 	 }
    00134 C001      RJMP	0x0136
(0117) 	 else
(0118) 	 {
(0119) 	    key=16;
    00135 E140      LDI	R20,0x10
(0120) 	 }
(0121) 	 return key;
    00136 2F04      MOV	R16,R20
    00137 940C 0157 JMP	pop_xgsetF00C
(0122) }
(0123) void main()
(0124) {
(0125)      uchar l;
(0126)      DDRA=0xff;// 0001 1000
_main:
  l                    --> R10
    00139 EF8F      LDI	R24,0xFF
    0013A BB8A      OUT	0x1A,R24
(0127)  	 DDRB=0XFF;
    0013B BB87      OUT	0x17,R24
    0013C C007      RJMP	0x0144
(0128) 	 while(1)
(0129) 	 {
(0130) 	   if(key_press())
    0013D DF4B      RCALL	_key_press
    0013E 2300      TST	R16
    0013F F021      BEQ	0x0144
(0131) 	   {
(0132) 	      l=key_scan();
    00140 DF59      RCALL	_key_scan
    00141 2EA0      MOV	R10,R16
(0133) 		  show(l,0);
FILE: <library>
    00142 2722      CLR	R18
    00143 DF2B      RCALL	_show
    00144 CFF8      RJMP	0x013D
    00145 9508      RET
push_xgsetF000:
    00146 937A      ST	-Y,R23
    00147 936A      ST	-Y,R22
    00148 935A      ST	-Y,R21
    00149 934A      ST	-Y,R20
    0014A 9508      RET
pop_xgsetF000:
    0014B 9149      LD	R20,Y+
    0014C 9159      LD	R21,Y+
    0014D 9169      LD	R22,Y+
    0014E 9179      LD	R23,Y+
    0014F 9508      RET
push_xgsetF00C:
    00150 937A      ST	-Y,R23
    00151 936A      ST	-Y,R22
    00152 935A      ST	-Y,R21
    00153 934A      ST	-Y,R20
    00154 92BA      ST	-Y,R11
    00155 92AA      ST	-Y,R10
    00156 9508      RET
pop_xgsetF00C:
    00157 90A9      LD	R10,Y+
    00158 90B9      LD	R11,Y+
    00159 9149      LD	R20,Y+
    0015A 9159      LD	R21,Y+
    0015B 9169      LD	R22,Y+
    0015C 9179      LD	R23,Y+
    0015D 9508      RET

⌨️ 快捷键说明

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