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

📄 4x4key.lst

📁 4*4按键扫描程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0033) 	  PORTA|=(1<<ls138b);
     11B 9ADE      SBI	0x1B,6
(0034) 	  PORTA&=~(1<<ls138c);
     11C 98DD      CBI	0x1B,5
(0035) 	  s_ms(600); 
     11D E508      LDI	R16,0x58
     11E E012      LDI	R17,2
     11F DF2D      RCALL	_s_ms
(0036) 	  sendbyte(0);//数码管4
     120 2700      CLR	R16
     121 DF34      RCALL	_sendbyte
(0037) 	  PORTA|=(1<<ls138a);
     122 9ADF      SBI	0x1B,7
(0038) 	  PORTA|=(1<<ls138b);
     123 9ADE      SBI	0x1B,6
(0039) 	  PORTA&=~(1<<ls138c);
     124 98DD      CBI	0x1B,5
(0040) 	  s_ms(600); 
     125 E508      LDI	R16,0x58
     126 E012      LDI	R17,2
     127 DF25      RCALL	_s_ms
(0041) 	  sendbyte(0);//数码管5
     128 2700      CLR	R16
     129 DF2C      RCALL	_sendbyte
(0042) 	  PORTA&=~(1<<ls138a);
     12A 98DF      CBI	0x1B,7
(0043) 	  PORTA&=~(1<<ls138b);
     12B 98DE      CBI	0x1B,6
(0044) 	  PORTA|=(1<<ls138c);
     12C 9ADD      SBI	0x1B,5
(0045) 	  s_ms(600); 
     12D E508      LDI	R16,0x58
     12E E012      LDI	R17,2
     12F DF1D      RCALL	_s_ms
(0046) 	  sendbyte(0);//数码管6
     130 2700      CLR	R16
     131 DF24      RCALL	_sendbyte
(0047) 	  PORTA|=(1<<ls138a);
     132 9ADF      SBI	0x1B,7
(0048) 	  PORTA&=~(1<<ls138b);
     133 98DE      CBI	0x1B,6
(0049) 	  PORTA|=(1<<ls138c);
     134 9ADD      SBI	0x1B,5
(0050) 	  s_ms(600); 
     135 E508      LDI	R16,0x58
     136 E012      LDI	R17,2
     137 DF15      RCALL	_s_ms
(0051) 	  sendbyte(0);//数码管7
     138 2700      CLR	R16
     139 DF1C      RCALL	_sendbyte
(0052) 	  PORTA&=~(1<<ls138a);
     13A 98DF      CBI	0x1B,7
(0053) 	  PORTA|=(1<<ls138b);
     13B 9ADE      SBI	0x1B,6
(0054) 	  PORTA|=(1<<ls138c);
     13C 9ADD      SBI	0x1B,5
(0055) 	  s_ms(600); 
     13D E508      LDI	R16,0x58
     13E E012      LDI	R17,2
     13F DF0D      RCALL	_s_ms
(0056) 	  sendbyte(0);//数码管8
     140 2700      CLR	R16
     141 DF14      RCALL	_sendbyte
(0057) 	  PORTA|=(1<<ls138a);
     142 9ADF      SBI	0x1B,7
(0058) 	  PORTA|=(1<<ls138b);
     143 9ADE      SBI	0x1B,6
(0059) 	  PORTA|=(1<<ls138c);
     144 9ADD      SBI	0x1B,5
(0060) 	  s_ms(600);
     145 E508      LDI	R16,0x58
     146 E012      LDI	R17,2
     147 DF05      RCALL	_s_ms
     148 940C 01F4 JMP	pop_xgset003C
_turn:
  key                  --> R16
     14A 934A      ST	R20,-Y
     14B 935A      ST	R21,-Y
FILE: E:\产品\开发板\光盘\16实验程序\4x4键盘\4x4key_main.c
(0001) //4x4键盘试验程序
(0002) //使用板载的4x4键盘
(0003) //数码管显示按键值
(0004) 
(0005) #define uchar unsigned char 
(0006) #define uint unsigned int 
(0007) #include<iom128v.h>
(0008) #include"ch595.h"
(0009) #include"encoder.h"
(0010) #include"key_value.h"
(0011) #include"disp.h"
(0012) 
(0013) uchar a1,a2,a3;
(0014) 
(0015) //键值转换
(0016) turn(uchar key)
(0017) {
(0018) switch(key)
     14C 2F40      MOV	R20,R16
     14D 2755      CLR	R21
     14E 3241      CPI	R20,0x21
     14F E0E0      LDI	R30,0
     150 075E      CPC	R21,R30
     151 F409      BNE	0x0153
     152 C052      RJMP	0x01A5
     153 3242      CPI	R20,0x22
     154 E0E0      LDI	R30,0
     155 075E      CPC	R21,R30
     156 F409      BNE	0x0158
     157 C055      RJMP	0x01AD
     158 3244      CPI	R20,0x24
     159 E0E0      LDI	R30,0
     15A 075E      CPC	R21,R30
     15B F409      BNE	0x015D
     15C C058      RJMP	0x01B5
     15D 3248      CPI	R20,0x28
     15E E0E0      LDI	R30,0
     15F 075E      CPC	R21,R30
     160 F409      BNE	0x0162
     161 C05B      RJMP	0x01BD
     162 E288      LDI	R24,0x28
     163 E090      LDI	R25,0
     164 1784      CP	R24,R20
     165 0795      CPC	R25,R21
     166 F0AC      BLT	0x017C
     167 3141      CPI	R20,0x11
     168 E0E0      LDI	R30,0
     169 075E      CPC	R21,R30
     16A F409      BNE	0x016C
     16B C037      RJMP	0x01A3
     16C 3142      CPI	R20,0x12
     16D E0E0      LDI	R30,0
     16E 075E      CPC	R21,R30
     16F F409      BNE	0x0171
     170 C03A      RJMP	0x01AB
     171 3144      CPI	R20,0x14
     172 E0E0      LDI	R30,0
     173 075E      CPC	R21,R30
     174 F409      BNE	0x0176
     175 C03D      RJMP	0x01B3
     176 3148      CPI	R20,0x18
     177 E0E0      LDI	R30,0
     178 075E      CPC	R21,R30
     179 F409      BNE	0x017B
     17A C040      RJMP	0x01BB
     17B C046      RJMP	0x01C2
     17C 3441      CPI	R20,0x41
     17D E0E0      LDI	R30,0
     17E 075E      CPC	R21,R30
     17F F139      BEQ	0x01A7
     180 3442      CPI	R20,0x42
     181 E0E0      LDI	R30,0
     182 075E      CPC	R21,R30
     183 F159      BEQ	0x01AF
     184 3444      CPI	R20,0x44
     185 E0E0      LDI	R30,0
     186 075E      CPC	R21,R30
     187 F179      BEQ	0x01B7
     188 3448      CPI	R20,0x48
     189 E0E0      LDI	R30,0
     18A 075E      CPC	R21,R30
     18B F409      BNE	0x018D
     18C C032      RJMP	0x01BF
     18D 3441      CPI	R20,0x41
     18E E0E0      LDI	R30,0
     18F 075E      CPC	R21,R30
     190 F40C      BGE	0x0192
     191 C030      RJMP	0x01C2
     192 3841      CPI	R20,0x81
     193 E0E0      LDI	R30,0
     194 075E      CPC	R21,R30
     195 F099      BEQ	0x01A9
     196 3842      CPI	R20,0x82
     197 E0E0      LDI	R30,0
     198 075E      CPC	R21,R30
     199 F0B9      BEQ	0x01B1
     19A 3844      CPI	R20,0x84
     19B E0E0      LDI	R30,0
     19C 075E      CPC	R21,R30
     19D F0D9      BEQ	0x01B9
     19E 3848      CPI	R20,0x88
     19F E0E0      LDI	R30,0
     1A0 075E      CPC	R21,R30
     1A1 F0F9      BEQ	0x01C1
     1A2 C01F      RJMP	0x01C2
(0019) {
(0020)   case 0x11:        
(0021)   key=0x01;break; 
     1A3 E001      LDI	R16,1
     1A4 C01D      RJMP	0x01C2
(0022)   case 0x21:        
(0023)   key=0x02;break;
     1A5 E002      LDI	R16,2
     1A6 C01B      RJMP	0x01C2
(0024)   case 0x41:
(0025)   key=0x03;break;
     1A7 E003      LDI	R16,3
     1A8 C019      RJMP	0x01C2
(0026)   case 0x81:
(0027)   key=0x04;break;
     1A9 E004      LDI	R16,4
     1AA C017      RJMP	0x01C2
(0028)   case 0x12:
(0029)   key=0x05;break;
     1AB E005      LDI	R16,5
     1AC C015      RJMP	0x01C2
(0030)   case 0x22:
(0031)   key=0x06;break;
     1AD E006      LDI	R16,6
     1AE C013      RJMP	0x01C2
(0032)   case 0x42:
(0033)   key=0x07;break;
     1AF E007      LDI	R16,7
     1B0 C011      RJMP	0x01C2
(0034)   case 0x82:
(0035)   key=0x08;break;
     1B1 E008      LDI	R16,0x8
     1B2 C00F      RJMP	0x01C2
(0036)   case 0x14:
(0037)   key=0x09;break;
     1B3 E009      LDI	R16,0x9
     1B4 C00D      RJMP	0x01C2
(0038)   case 0x24:
(0039)   key=0x0a;break;
     1B5 E00A      LDI	R16,0xA
     1B6 C00B      RJMP	0x01C2
(0040)   case 0x44:
(0041)   key=0x0b;break;
     1B7 E00B      LDI	R16,0xB
     1B8 C009      RJMP	0x01C2
(0042)   case 0x84:
(0043)   key=0x0c;break;
     1B9 E00C      LDI	R16,0xC
     1BA C007      RJMP	0x01C2
(0044)   case 0x18:
(0045)   key=0x0d;break;
     1BB E00D      LDI	R16,0xD
     1BC C005      RJMP	0x01C2
(0046)   case 0x28:
(0047)   key=0x0e;break;
     1BD E00E      LDI	R16,0xE
     1BE C003      RJMP	0x01C2
(0048)   case 0x48:
(0049)   key=0xa0f;break;
     1BF E00F      LDI	R16,0xF
     1C0 C001      RJMP	0x01C2
(0050)   case 0x88:
(0051)   key=0x10;break;
     1C1 E100      LDI	R16,0x10
(0052)   }
(0053)   return(key);
     1C2 2711      CLR	R17
     1C3 9159      LD	R21,Y+
     1C4 9149      LD	R20,Y+
     1C5 9508      RET
(0054) }
(0055) 
(0056) //主函数
(0057) main()
(0058) {
(0059) uchar key,tem;
(0060) //端口初始化
(0061) DDRA=0xff;
_main:
  tem                  --> R10
  key                  --> R12
     1C6 EF8F      LDI	R24,0xFF
     1C7 BB8A      OUT	0x1A,R24
(0062) PORTA=0xff;
     1C8 BB8B      OUT	0x1B,R24
(0063) DDRC=0xff;
     1C9 BB84      OUT	0x14,R24
(0064) PORTC=0xff;
     1CA BB85      OUT	0x15,R24
(0065) DDRE=0x00;
     1CB 2422      CLR	R2
     1CC B822      OUT	0x02,R2
(0066) PORTE=0xff;
     1CD B983      OUT	0x03,R24
(0067) DDRF=0xfc;
     1CE EF8C      LDI	R24,0xFC
     1CF 9380 0061 STS	a2,R24
     1D1 C008      RJMP	0x01DA
(0068) while(1)
(0069)      {
(0070) 	 key=key_value();    //读取键值
     1D2 DEE3      RCALL	_key_value
     1D3 2EC0      MOV	R12,R16
(0071) 	 if(key!=0)
     1D4 2300      TST	R16
     1D5 F011      BEQ	0x01D8
(0072) 	   {
(0073) 	    tem=turn(key);   //转换译码
     1D6 DF73      RCALL	_turn
     1D7 2EA0      MOV	R10,R16
(0074) 	   }
(0075) 	 disp(tem);         //显示键值
FILE: <library>
     1D8 2D0A      MOV	R16,R10
     1D9 DF21      RCALL	_disp
     1DA CFF7      RJMP	0x01D2
     1DB 9508      RET
mod8u:
     1DC 9468      BSET	6
     1DD C001      RJMP	xdiv8u
div8u:
     1DE 94E8      BCLR	6
xdiv8u:
     1DF 932A      ST	R18,-Y
     1E0 92FA      ST	R15,-Y
     1E1 92EA      ST	R14,-Y
     1E2 24FF      CLR	R15
     1E3 24EE      CLR	R14
     1E4 E120      LDI	R18,0x10
     1E5 0F00      LSL	R16
     1E6 1CFF      ROL	R15
     1E7 1CEE      ROL	R14
     1E8 16E1      CP	R14,R17
     1E9 F010      BCS	0x01EC
     1EA 1AE1      SUB	R14,R17
     1EB 9503      INC	R16
     1EC 952A      DEC	R18
     1ED F7B9      BNE	0x01E5
     1EE F40E      BRTC	0x01F0
     1EF 2D0E      MOV	R16,R14
     1F0 90E9      LD	R14,Y+
     1F1 90F9      LD	R15,Y+
     1F2 9129      LD	R18,Y+
     1F3 9508      RET
pop_xgset003C:
     1F4 90A9      LD	R10,Y+
     1F5 90B9      LD	R11,Y+
     1F6 90C9      LD	R12,Y+
     1F7 90D9      LD	R13,Y+
     1F8 9508      RET
push_xgsetF0FC:
     1F9 937A      ST	R23,-Y
     1FA 936A      ST	R22,-Y
push_xgset30FC:
     1FB 935A      ST	R21,-Y
     1FC 934A      ST	R20,-Y
push_xgset00FC:
     1FD 92FA      ST	R15,-Y
     1FE 92EA      ST	R14,-Y
push_xgset003C:
     1FF 92DA      ST	R13,-Y
     200 92CA      ST	R12,-Y
     201 92BA      ST	R11,-Y
     202 92AA      ST	R10,-Y
     203 9508      RET
push_xgsetF000:
     204 937A      ST	R23,-Y
     205 936A      ST	R22,-Y
     206 935A      ST	R21,-Y
     207 934A      ST	R20,-Y
     208 9508      RET
pop_xgsetF000:
     209 9149      LD	R20,Y+
     20A 9159      LD	R21,Y+
     20B 9169      LD	R22,Y+
     20C 9179      LD	R23,Y+
     20D 9508      RET
push_xgsetF00C:
     20E 937A      ST	R23,-Y
     20F 936A      ST	R22,-Y
     210 935A      ST	R21,-Y
     211 934A      ST	R20,-Y
     212 92BA      ST	R11,-Y
     213 92AA      ST	R10,-Y
     214 9508      RET
pop_xgsetF00C:
     215 90A9      LD	R10,Y+
     216 90B9      LD	R11,Y+
     217 9149      LD	R20,Y+
     218 9159      LD	R21,Y+
     219 9169      LD	R22,Y+
     21A 9179      LD	R23,Y+
     21B 9508      RET

⌨️ 快捷键说明

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