📄 4x4key_main.lis
字号:
01F8 .dbfunc e turn _turn fI
01F8 ; key -> R16
.even
01F8 _turn::
01F8 4A93 st -y,R20
01FA 5A93 st -y,R21
01FC .dbline -1
01FC .dbline 17
01FC .dbline 18
01FC 402F mov R20,R16
01FE 5527 clr R21
0200 4132 cpi R20,33
0202 E0E0 ldi R30,0
0204 5E07 cpc R21,R30
0206 09F4 brne X33
0208 52C0 xjmp L39
020A X33:
020A X15:
020A 4232 cpi R20,34
020C E0E0 ldi R30,0
020E 5E07 cpc R21,R30
0210 09F4 brne X34
0212 55C0 xjmp L43
0214 X34:
0214 X16:
0214 4432 cpi R20,36
0216 E0E0 ldi R30,0
0218 5E07 cpc R21,R30
021A 09F4 brne X35
021C 58C0 xjmp L47
021E X35:
021E X17:
021E 4832 cpi R20,40
0220 E0E0 ldi R30,0
0222 5E07 cpc R21,R30
0224 09F4 brne X36
0226 5BC0 xjmp L51
0228 X36:
0228 X18:
0228 88E2 ldi R24,40
022A 90E0 ldi R25,0
022C 8417 cp R24,R20
022E 9507 cpc R25,R21
0230 ACF0 brlt L55
0232 X19:
0232 L54:
0232 4131 cpi R20,17
0234 E0E0 ldi R30,0
0236 5E07 cpc R21,R30
0238 09F4 brne X37
023A 37C0 xjmp L38
023C X37:
023C X20:
023C 4231 cpi R20,18
023E E0E0 ldi R30,0
0240 5E07 cpc R21,R30
0242 09F4 brne X38
0244 3AC0 xjmp L42
0246 X38:
0246 X21:
0246 4431 cpi R20,20
0248 E0E0 ldi R30,0
024A 5E07 cpc R21,R30
024C 09F4 brne X39
024E 3DC0 xjmp L46
0250 X39:
0250 X22:
0250 4831 cpi R20,24
0252 E0E0 ldi R30,0
0254 5E07 cpc R21,R30
0256 09F4 brne X40
0258 40C0 xjmp L50
025A X40:
025A X23:
025A 46C0 xjmp L35
025C L55:
025C 4134 cpi R20,65
025E E0E0 ldi R30,0
0260 5E07 cpc R21,R30
0262 39F1 breq L40
0264 X24:
0264 4234 cpi R20,66
0266 E0E0 ldi R30,0
0268 5E07 cpc R21,R30
026A 59F1 breq L44
026C X25:
026C 4434 cpi R20,68
026E E0E0 ldi R30,0
0270 5E07 cpc R21,R30
0272 79F1 breq L48
0274 X26:
0274 4834 cpi R20,72
0276 E0E0 ldi R30,0
0278 5E07 cpc R21,R30
027A 09F4 brne X41
027C 32C0 xjmp L52
027E X41:
027E X27:
027E 4134 cpi R20,65
0280 E0E0 ldi R30,0
0282 5E07 cpc R21,R30
0284 0CF4 brge X42
0286 30C0 xjmp L35
0288 X42:
0288 X28:
0288 L56:
0288 4138 cpi R20,129
028A E0E0 ldi R30,0
028C 5E07 cpc R21,R30
028E 99F0 breq L41
0290 X29:
0290 4238 cpi R20,130
0292 E0E0 ldi R30,0
0294 5E07 cpc R21,R30
0296 B9F0 breq L45
0298 X30:
0298 4438 cpi R20,132
029A E0E0 ldi R30,0
029C 5E07 cpc R21,R30
029E D9F0 breq L49
02A0 X31:
02A0 4838 cpi R20,136
02A2 E0E0 ldi R30,0
02A4 5E07 cpc R21,R30
02A6 F9F0 breq L53
02A8 X32:
02A8 1FC0 xjmp L35
02AA L38:
02AA .dbline 21
02AA 01E0 ldi R16,1
02AC .dbline 21
02AC 1DC0 xjmp L36
02AE L39:
02AE .dbline 23
02AE 02E0 ldi R16,2
02B0 .dbline 23
02B0 1BC0 xjmp L36
02B2 L40:
02B2 .dbline 25
02B2 03E0 ldi R16,3
02B4 .dbline 25
02B4 19C0 xjmp L36
02B6 L41:
02B6 .dbline 27
02B6 04E0 ldi R16,4
02B8 .dbline 27
02B8 17C0 xjmp L36
02BA L42:
02BA .dbline 29
02BA 05E0 ldi R16,5
02BC .dbline 29
02BC 15C0 xjmp L36
02BE L43:
02BE .dbline 31
02BE 06E0 ldi R16,6
02C0 .dbline 31
02C0 13C0 xjmp L36
02C2 L44:
02C2 .dbline 33
02C2 07E0 ldi R16,7
02C4 .dbline 33
02C4 11C0 xjmp L36
02C6 L45:
02C6 .dbline 35
02C6 08E0 ldi R16,8
02C8 .dbline 35
02C8 0FC0 xjmp L36
02CA L46:
02CA .dbline 37
02CA ; case 0x14:
02CA ; key=0x09;break;
02CA 09E0 ldi R16,9
02CC .dbline 37
02CC 0DC0 xjmp L36
02CE L47:
02CE .dbline 39
02CE ; case 0x24:
02CE ; key=0x0a;break;
02CE 0AE0 ldi R16,10
02D0 .dbline 39
02D0 0BC0 xjmp L36
02D2 L48:
02D2 .dbline 41
02D2 ; case 0x44:
02D2 ; key=0x0b;break;
02D2 0BE0 ldi R16,11
02D4 .dbline 41
02D4 09C0 xjmp L36
02D6 L49:
02D6 .dbline 43
02D6 ; case 0x84:
02D6 ; key=0x0c;break;
02D6 0CE0 ldi R16,12
02D8 .dbline 43
02D8 07C0 xjmp L36
02DA L50:
02DA .dbline 45
02DA ; case 0x18:
02DA ; key=0x0d;break;
02DA 0DE0 ldi R16,13
02DC .dbline 45
02DC 05C0 xjmp L36
02DE L51:
02DE .dbline 47
02DE ; case 0x28:
02DE ; key=0x0e;break;
02DE 0EE0 ldi R16,14
02E0 .dbline 47
02E0 03C0 xjmp L36
02E2 L52:
02E2 .dbline 49
02E2 ; case 0x48:
02E2 ; key=0x0f;break;
02E2 0FE0 ldi R16,15
02E4 .dbline 49
02E4 01C0 xjmp L36
02E6 L53:
02E6 .dbline 51
02E6 ; case 0x88:
02E6 ; key=0x10;break;
02E6 00E1 ldi R16,16
02E8 .dbline 51
02E8 L35:
02E8 L36:
02E8 .dbline 53
02E8 ; }
02E8 ; return(key);
02E8 1127 clr R17
02EA .dbline -2
02EA L34:
02EA .dbline 0 ; func end
02EA 5991 ld R21,y+
02EC 4991 ld R20,y+
02EE 0895 ret
02F0 .dbsym r key 16 c
02F0 .dbend
02F0 .dbfunc e main _main fI
02F0 ; tem -> R10
02F0 ; key -> R12
.even
02F0 _main::
02F0 .dbline -1
02F0 .dbline 58
02F0 ; }
02F0 ;
02F0 ; //主函数
02F0 ; main()
02F0 ; {
02F0 .dbline 61
02F0 ; uchar key,tem;
02F0 ; //端口初始化
02F0 ; DDRA=0xff;
02F0 8FEF ldi R24,255
02F2 8ABB out 0x1a,R24
02F4 .dbline 62
02F4 ; PORTA=0xff;
02F4 8BBB out 0x1b,R24
02F6 08C0 xjmp L59
02F8 L58:
02F8 .dbline 66
02F8 ; //DDRC=0xff;
02F8 ; //PORTC=0xff;
02F8 ; while(1)
02F8 ; {
02F8 .dbline 67
02F8 ; key=key_value(); //读取键值
02F8 ECDE xcall _key_value
02FA C02E mov R12,R16
02FC .dbline 68
02FC ; if(key!=0)
02FC 0023 tst R16
02FE 11F0 breq L61
0300 X43:
0300 .dbline 69
0300 ; {
0300 .dbline 70
0300 ; tem=turn(key); //转换译码
0300 7BDF xcall _turn
0302 A02E mov R10,R16
0304 .dbline 71
0304 ; }
0304 L61:
0304 .dbline 72
0304 ; disp(tem); //显示键值
0304 0A2D mov R16,R10
0306 2BDF xcall _disp
0308 .dbline 73
0308 ; }
0308 L59:
0308 .dbline 65
0308 F7CF xjmp L58
030A X44:
030A .dbline -2
030A L57:
030A .dbline 0 ; func end
030A 0895 ret
030C .dbsym r tem 10 c
030C .dbsym r key 12 c
030C .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\16实验程序\4x4键盘\4x4key_main.c
0000 _a3::
0000 .blkb 1
0001 .dbfile E:\16实验程序\4x4键盘\disp.h
0001 .dbsym e a3 _a3 c
0001 _a2::
0001 .blkb 1
0002 .dbsym e a2 _a2 c
0002 _a1::
0002 .blkb 1
0003 .dbsym e a1 _a1 c
0003 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -