?? 4x4key.lst
字號:
00115 DF37 RCALL _s_ms
(0033) sendbyte(a3);//數(shù)碼管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);//數(shù)碼管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);//數(shù)碼管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);//數(shù)碼管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);//數(shù)碼管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);//數(shù)碼管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) //數(shù)碼管顯示按鍵值
(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) //鍵值轉(zhuǎn)換
(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) //主函數(shù)
(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); //轉(zhuǎn)換譯碼
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -