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

📄 4x4key.lst

📁 16个单片机c语言实验程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
    00115 DF37      RCALL	_s_ms
(0033) 	  sendbyte(a3);//数码管3
    00116 9100 0060 LDS	R16,a3
    00118 DF3D      RCALL	_sendbyte
(0034) 	  PORTA&=~(1<<ls138a);
    00119 98DF      CBI	0x1B,7
(0035) 	  PORTA|=(1<<ls138b);
    0011A 9ADE      SBI	0x1B,6
(0036) 	  PORTA&=~(1<<ls138c);
    0011B 98DD      CBI	0x1B,5
(0037) 	  s_ms(600); 
    0011C E508      LDI	R16,0x58
    0011D E012      LDI	R17,2
    0011E DF2E      RCALL	_s_ms
(0038) 	  sendbyte(0);//数码管4
    0011F 2700      CLR	R16
    00120 DF35      RCALL	_sendbyte
(0039) 	  PORTA|=(1<<ls138a);
    00121 9ADF      SBI	0x1B,7
(0040) 	  PORTA|=(1<<ls138b);
    00122 9ADE      SBI	0x1B,6
(0041) 	  PORTA&=~(1<<ls138c);
    00123 98DD      CBI	0x1B,5
(0042) 	  s_ms(600); 
    00124 E508      LDI	R16,0x58
    00125 E012      LDI	R17,2
    00126 DF26      RCALL	_s_ms
(0043) 	  sendbyte(0);//数码管5
    00127 2700      CLR	R16
    00128 DF2D      RCALL	_sendbyte
(0044) 	  PORTA&=~(1<<ls138a);
    00129 98DF      CBI	0x1B,7
(0045) 	  PORTA&=~(1<<ls138b);
    0012A 98DE      CBI	0x1B,6
(0046) 	  PORTA|=(1<<ls138c);
    0012B 9ADD      SBI	0x1B,5
(0047) 	  s_ms(600); 
    0012C E508      LDI	R16,0x58
    0012D E012      LDI	R17,2
    0012E DF1E      RCALL	_s_ms
(0048) 	  sendbyte(0);//数码管6
    0012F 2700      CLR	R16
    00130 DF25      RCALL	_sendbyte
(0049) 	  PORTA|=(1<<ls138a);
    00131 9ADF      SBI	0x1B,7
(0050) 	  PORTA&=~(1<<ls138b);
    00132 98DE      CBI	0x1B,6
(0051) 	  PORTA|=(1<<ls138c);
    00133 9ADD      SBI	0x1B,5
(0052) 	  s_ms(600); 
    00134 E508      LDI	R16,0x58
    00135 E012      LDI	R17,2
    00136 DF16      RCALL	_s_ms
(0053) 	  sendbyte(0);//数码管7
    00137 2700      CLR	R16
    00138 DF1D      RCALL	_sendbyte
(0054) 	  PORTA&=~(1<<ls138a);
    00139 98DF      CBI	0x1B,7
(0055) 	  PORTA|=(1<<ls138b);
    0013A 9ADE      SBI	0x1B,6
(0056) 	  PORTA|=(1<<ls138c);
    0013B 9ADD      SBI	0x1B,5
(0057) 	  s_ms(600); 
    0013C E508      LDI	R16,0x58
    0013D E012      LDI	R17,2
    0013E DF0E      RCALL	_s_ms
(0058) 	  sendbyte(0);//数码管8
    0013F 2700      CLR	R16
    00140 DF15      RCALL	_sendbyte
(0059) 	  PORTA|=(1<<ls138a);
    00141 9ADF      SBI	0x1B,7
(0060) 	  PORTA|=(1<<ls138b);
    00142 9ADE      SBI	0x1B,6
(0061) 	  PORTA|=(1<<ls138c);
    00143 9ADD      SBI	0x1B,5
(0062) 	  s_ms(600);
    00144 E508      LDI	R16,0x58
    00145 E012      LDI	R17,2
    00146 DF06      RCALL	_s_ms
    00147 940C 01EB JMP	pop_xgset003C
_turn:
  key                  --> R16
    00149 934A      ST	-Y,R20
    0014A 935A      ST	-Y,R21
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<iom16v.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)
    0014B 2F40      MOV	R20,R16
    0014C 2755      CLR	R21
    0014D 3241      CPI	R20,0x21
    0014E E0E0      LDI	R30,0
    0014F 075E      CPC	R21,R30
    00150 F409      BNE	0x0152
    00151 C052      RJMP	0x01A4
    00152 3242      CPI	R20,0x22
    00153 E0E0      LDI	R30,0
    00154 075E      CPC	R21,R30
    00155 F409      BNE	0x0157
    00156 C055      RJMP	0x01AC
    00157 3244      CPI	R20,0x24
    00158 E0E0      LDI	R30,0
    00159 075E      CPC	R21,R30
    0015A F409      BNE	0x015C
    0015B C058      RJMP	0x01B4
    0015C 3248      CPI	R20,0x28
    0015D E0E0      LDI	R30,0
    0015E 075E      CPC	R21,R30
    0015F F409      BNE	0x0161
    00160 C05B      RJMP	0x01BC
    00161 E288      LDI	R24,0x28
    00162 E090      LDI	R25,0
    00163 1784      CP	R24,R20
    00164 0795      CPC	R25,R21
    00165 F0AC      BLT	0x017B
    00166 3141      CPI	R20,0x11
    00167 E0E0      LDI	R30,0
    00168 075E      CPC	R21,R30
    00169 F409      BNE	0x016B
    0016A C037      RJMP	0x01A2
    0016B 3142      CPI	R20,0x12
    0016C E0E0      LDI	R30,0
    0016D 075E      CPC	R21,R30
    0016E F409      BNE	0x0170
    0016F C03A      RJMP	0x01AA
    00170 3144      CPI	R20,0x14
    00171 E0E0      LDI	R30,0
    00172 075E      CPC	R21,R30
    00173 F409      BNE	0x0175
    00174 C03D      RJMP	0x01B2
    00175 3148      CPI	R20,0x18
    00176 E0E0      LDI	R30,0
    00177 075E      CPC	R21,R30
    00178 F409      BNE	0x017A
    00179 C040      RJMP	0x01BA
    0017A C046      RJMP	0x01C1
    0017B 3441      CPI	R20,0x41
    0017C E0E0      LDI	R30,0
    0017D 075E      CPC	R21,R30
    0017E F139      BEQ	0x01A6
    0017F 3442      CPI	R20,0x42
    00180 E0E0      LDI	R30,0
    00181 075E      CPC	R21,R30
    00182 F159      BEQ	0x01AE
    00183 3444      CPI	R20,0x44
    00184 E0E0      LDI	R30,0
    00185 075E      CPC	R21,R30
    00186 F179      BEQ	0x01B6
    00187 3448      CPI	R20,0x48
    00188 E0E0      LDI	R30,0
    00189 075E      CPC	R21,R30
    0018A F409      BNE	0x018C
    0018B C032      RJMP	0x01BE
    0018C 3441      CPI	R20,0x41
    0018D E0E0      LDI	R30,0
    0018E 075E      CPC	R21,R30
    0018F F40C      BGE	0x0191
    00190 C030      RJMP	0x01C1
    00191 3841      CPI	R20,0x81
    00192 E0E0      LDI	R30,0
    00193 075E      CPC	R21,R30
    00194 F099      BEQ	0x01A8
    00195 3842      CPI	R20,0x82
    00196 E0E0      LDI	R30,0
    00197 075E      CPC	R21,R30
    00198 F0B9      BEQ	0x01B0
    00199 3844      CPI	R20,0x84
    0019A E0E0      LDI	R30,0
    0019B 075E      CPC	R21,R30
    0019C F0D9      BEQ	0x01B8
    0019D 3848      CPI	R20,0x88
    0019E E0E0      LDI	R30,0
    0019F 075E      CPC	R21,R30
    001A0 F0F9      BEQ	0x01C0
    001A1 C01F      RJMP	0x01C1
(0019) { 
(0020)   case 0x11:        
(0021)   key=0x01;break; 
    001A2 E001      LDI	R16,1
    001A3 C01D      RJMP	0x01C1
(0022)   case 0x21:        
(0023)   key=0x02;break;
    001A4 E002      LDI	R16,2
    001A5 C01B      RJMP	0x01C1
(0024)   case 0x41:
(0025)   key=0x03;break;
    001A6 E003      LDI	R16,3
    001A7 C019      RJMP	0x01C1
(0026)   case 0x81:
(0027)   key=0x04;break;
    001A8 E004      LDI	R16,4
    001A9 C017      RJMP	0x01C1
(0028)   case 0x12:
(0029)   key=0x05;break;
    001AA E005      LDI	R16,5
    001AB C015      RJMP	0x01C1
(0030)   case 0x22:
(0031)   key=0x06;break;
    001AC E006      LDI	R16,6
    001AD C013      RJMP	0x01C1
(0032)   case 0x42:
(0033)   key=0x07;break;
    001AE E007      LDI	R16,7
    001AF C011      RJMP	0x01C1
(0034)   case 0x82:
(0035)   key=0x08;break;
    001B0 E008      LDI	R16,0x8
    001B1 C00F      RJMP	0x01C1
(0036)   case 0x14:
(0037)   key=0x09;break;
    001B2 E009      LDI	R16,0x9
    001B3 C00D      RJMP	0x01C1
(0038)   case 0x24:
(0039)   key=0x0a;break;
    001B4 E00A      LDI	R16,0xA
    001B5 C00B      RJMP	0x01C1
(0040)   case 0x44:
(0041)   key=0x0b;break;
    001B6 E00B      LDI	R16,0xB
    001B7 C009      RJMP	0x01C1
(0042)   case 0x84:
(0043)   key=0x0c;break;
    001B8 E00C      LDI	R16,0xC
    001B9 C007      RJMP	0x01C1
(0044)   case 0x18:
(0045)   key=0x0d;break;
    001BA E00D      LDI	R16,0xD
    001BB C005      RJMP	0x01C1
(0046)   case 0x28:
(0047)   key=0x0e;break;
    001BC E00E      LDI	R16,0xE
    001BD C003      RJMP	0x01C1
(0048)   case 0x48:
(0049)   key=0x0f;break;
    001BE E00F      LDI	R16,0xF
    001BF C001      RJMP	0x01C1
(0050)   case 0x88:
(0051)   key=0x10;break;
    001C0 E100      LDI	R16,0x10
(0052)   }
(0053)   return(key);
    001C1 2711      CLR	R17
    001C2 9159      LD	R21,Y+
    001C3 9149      LD	R20,Y+
    001C4 9508      RET
(0054) }
(0055) 
(0056) //主函数
(0057) main()
(0058) {
(0059) uchar key,tem;
(0060) //端口初始化
(0061) DDRA=0xff;
_main:
  tem                  --> R10
  key                  --> R12
    001C5 EF8F      LDI	R24,0xFF
    001C6 BB8A      OUT	0x1A,R24
(0062) PORTA=0xff;
    001C7 BB8B      OUT	0x1B,R24
    001C8 C008      RJMP	0x01D1
(0063) //DDRC=0xff;
(0064) //PORTC=0xff;
(0065) while(1)
(0066)      {
(0067) 	 key=key_value();    //读取键值
    001C9 DEEC      RCALL	_key_value
    001CA 2EC0      MOV	R12,R16
(0068) 	 if(key!=0)
    001CB 2300      TST	R16
    001CC F011      BEQ	0x01CF
(0069) 	   {
(0070) 	    tem=turn(key);   //转换译码
    001CD DF7B      RCALL	_turn
    001CE 2EA0      MOV	R10,R16
(0071) 	   }
(0072) 	 disp(tem);         //显示键值
FILE: <library>
    001CF 2D0A      MOV	R16,R10
    001D0 DF2B      RCALL	_disp
    001D1 CFF7      RJMP	0x01C9
    001D2 9508      RET
mod8u:
    001D3 9468      BSET	6
    001D4 C001      RJMP	xdiv8u
div8u:
    001D5 94E8      BCLR	6
xdiv8u:
    001D6 932A      ST	-Y,R18
    001D7 92FA      ST	-Y,R15
    001D8 92EA      ST	-Y,R14
    001D9 24FF      CLR	R15
    001DA 24EE      CLR	R14
    001DB E120      LDI	R18,0x10
    001DC 0F00      LSL	R16
    001DD 1CFF      ROL	R15
    001DE 1CEE      ROL	R14
    001DF 16E1      CP	R14,R17
    001E0 F010      BCS	0x01E3
    001E1 1AE1      SUB	R14,R17
    001E2 9503      INC	R16
    001E3 952A      DEC	R18
    001E4 F7B9      BNE	0x01DC
    001E5 F40E      BRTC	0x01E7
    001E6 2D0E      MOV	R16,R14
    001E7 90E9      LD	R14,Y+
    001E8 90F9      LD	R15,Y+
    001E9 9129      LD	R18,Y+
    001EA 9508      RET
pop_xgset003C:
    001EB 90A9      LD	R10,Y+
    001EC 90B9      LD	R11,Y+
    001ED 90C9      LD	R12,Y+
    001EE 90D9      LD	R13,Y+
    001EF 9508      RET
push_xgsetF0FC:
    001F0 937A      ST	-Y,R23
    001F1 936A      ST	-Y,R22
push_xgset30FC:
    001F2 935A      ST	-Y,R21
    001F3 934A      ST	-Y,R20
push_xgset00FC:
    001F4 92FA      ST	-Y,R15
    001F5 92EA      ST	-Y,R14
push_xgset003C:
    001F6 92DA      ST	-Y,R13
    001F7 92CA      ST	-Y,R12
    001F8 92BA      ST	-Y,R11
    001F9 92AA      ST	-Y,R10
    001FA 9508      RET
push_xgsetF000:
    001FB 937A      ST	-Y,R23
    001FC 936A      ST	-Y,R22
    001FD 935A      ST	-Y,R21
    001FE 934A      ST	-Y,R20
    001FF 9508      RET
pop_xgsetF000:
    00200 9149      LD	R20,Y+
    00201 9159      LD	R21,Y+
    00202 9169      LD	R22,Y+
    00203 9179      LD	R23,Y+
    00204 9508      RET
push_xgsetF00C:
    00205 937A      ST	-Y,R23
    00206 936A      ST	-Y,R22
    00207 935A      ST	-Y,R21
    00208 934A      ST	-Y,R20
    00209 92BA      ST	-Y,R11
    0020A 92AA      ST	-Y,R10
    0020B 9508      RET
pop_xgsetF00C:
    0020C 90A9      LD	R10,Y+
    0020D 90B9      LD	R11,Y+
    0020E 9149      LD	R20,Y+
    0020F 9159      LD	R21,Y+
    00210 9169      LD	R22,Y+
    00211 9179      LD	R23,Y+
    00212 9508      RET

⌨️ 快捷键说明

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