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

📄 4x4key_main.lis

📁 16个单片机c语言实验程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module _4x4key_main.c
                        .area text(rom, con, rel)
 0000                   .dbfile 4x4key_main.c
 0000                   .dbfile E:\16实验程序\4x4键盘\ch595.h
 0000                   .dbfunc e s_ms _s_ms fV
 0000           ;              t -> R16,R17
                        .even
 0000           _s_ms::
 0000                   .dbline -1
 0000                   .dbline 8
 0000           ; //4x4键盘试验程序
 0000           ; //使用板载的4x4键盘
 0000           ; //数码管显示按键值
 0000           ; 
 0000           ; #define uchar unsigned char 
 0000           ; #define uint unsigned int 
 0000           ; #include<iom16v.h>
 0000           ; #include"ch595.h"
 0000                   .dbline 9
 0000           ; #include"encoder.h"
 0000 02C0              xjmp L5
 0002           L2:
 0002                   .dbline 10
 0002           ; #include"key_value.h"
 0002                   .dbline 11
 0002           ; #include"disp.h"
 0002           L3:
 0002                   .dbline 9
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L5:
 0006                   .dbline 9
 0006 81E0              ldi R24,1
 0008 90E0              ldi R25,0
 000A 8017              cp R24,R16
 000C 9107              cpc R25,R17
 000E C8F3              brlo L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r t 16 i
 0012                   .dbend
 0012                   .dbfunc e sendbyte _sendbyte fV
 0012           ;            tem -> R10
 0012           ;              i -> R22
 0012           ;           byte -> R20
                        .even
 0012           _sendbyte::
 0012 0E940000          xcall push_xgsetF00C
 0016 402F              mov R20,R16
 0018                   .dbline -1
 0018                   .dbline 15
 0018           ; 
 0018           ; //uchar a1,a2,a3;
 0018           ; 
 0018           ; //键值转换
 0018                   .dbline 17
 0018           ; turn(uchar key)
 0018           ; {
 0018 042F              mov R16,R20
 001A 1127              clr R17
 001C 18D0              xcall _encoder
 001E 402F              mov R20,R16
 0020                   .dbline 18
 0020           ; switch(key)
 0020 6627              clr R22
 0022 0CC0              xjmp L10
 0024           L7:
 0024                   .dbline 19
 0024           ; { 
 0024                   .dbline 20
 0024           ;   case 0x11:        
 0024 D998              cbi 0x1b,1
 0026                   .dbline 21
 0026           ;   key=0x01;break; 
 0026 842F              mov R24,R20
 0028 8078              andi R24,128
 002A A82E              mov R10,R24
 002C                   .dbline 22
 002C           ;   case 0x21:        
 002C 8823              tst R24
 002E 11F4              brne L11
 0030           X1:
 0030                   .dbline 23
 0030           ;   key=0x02;break;
 0030                   .dbline 24
 0030           ;   case 0x41:
 0030 DB98              cbi 0x1b,3
 0032                   .dbline 25
 0032           ;   key=0x03;break;
 0032 01C0              xjmp L12
 0034           L11:
 0034                   .dbline 27
 0034           ;   case 0x81:
 0034           ;   key=0x04;break;
 0034                   .dbline 28
 0034           ;   case 0x12:
 0034 DB9A              sbi 0x1b,3
 0036                   .dbline 29
 0036           ;   key=0x05;break;
 0036           L12:
 0036                   .dbline 30
 0036           ;   case 0x22:
 0036 440F              lsl R20
 0038                   .dbline 31
 0038           ;   key=0x06;break;
 0038 D99A              sbi 0x1b,1
 003A                   .dbline 32
 003A           ;   case 0x42:
 003A           L8:
 003A                   .dbline 18
 003A 6395              inc R22
 003C           L10:
 003C                   .dbline 18
 003C 6830              cpi R22,8
 003E 90F3              brlo L7
 0040           X2:
 0040                   .dbline 33
 0040           ;   key=0x07;break;
 0040 DA98              cbi 0x1b,2
 0042                   .dbline 34
 0042           ;   case 0x82:
 0042 04E6              ldi R16,100
 0044 10E0              ldi R17,0
 0046 DCDF              xcall _s_ms
 0048                   .dbline 35
 0048           ;   key=0x08;break;
 0048 DA9A              sbi 0x1b,2
 004A                   .dbline -2
 004A           L6:
 004A                   .dbline 0 ; func end
 004A 0C940000          xjmp pop_xgsetF00C
 004E                   .dbsym r tem 10 c
 004E                   .dbsym r i 22 c
 004E                   .dbsym r byte 20 c
 004E                   .dbend
 004E                   .dbfile E:\16实验程序\4x4键盘\encoder.h
 004E                   .dbfunc e encoder _encoder fc
 004E           ;           code -> R20
 004E           ;            num -> R16
                        .even
 004E           _encoder::
 004E 0E940000          xcall push_xgsetF000
 0052                   .dbline -1
 0052                   .dbline 3
 0052           ; //数码管译码函数
 0052           ; uchar encoder(uchar num)
 0052           ; {
 0052                   .dbline 5
 0052           ; uchar code;
 0052           ; switch(num)
 0052 602F              mov R22,R16
 0054 7727              clr R23
 0056 6030              cpi R22,0
 0058 6707              cpc R22,R23
 005A 29F1              breq L17
 005C           X3:
 005C 6130              cpi R22,1
 005E E0E0              ldi R30,0
 0060 7E07              cpc R23,R30
 0062 19F1              breq L18
 0064           X4:
 0064 6230              cpi R22,2
 0066 E0E0              ldi R30,0
 0068 7E07              cpc R23,R30
 006A 09F1              breq L19
 006C           X5:
 006C 6330              cpi R22,3
 006E E0E0              ldi R30,0
 0070 7E07              cpc R23,R30
 0072 F9F0              breq L20
 0074           X6:
 0074 6430              cpi R22,4
 0076 E0E0              ldi R30,0
 0078 7E07              cpc R23,R30
 007A E9F0              breq L21
 007C           X7:
 007C 6530              cpi R22,5
 007E E0E0              ldi R30,0
 0080 7E07              cpc R23,R30
 0082 D9F0              breq L22
 0084           X8:
 0084 6630              cpi R22,6
 0086 E0E0              ldi R30,0
 0088 7E07              cpc R23,R30
 008A C9F0              breq L23
 008C           X9:
 008C 6730              cpi R22,7
 008E E0E0              ldi R30,0
 0090 7E07              cpc R23,R30
 0092 B9F0              breq L24
 0094           X10:
 0094 6830              cpi R22,8
 0096 E0E0              ldi R30,0
 0098 7E07              cpc R23,R30
 009A A9F0              breq L25
 009C           X11:
 009C 6930              cpi R22,9
 009E E0E0              ldi R30,0
 00A0 7E07              cpc R23,R30
 00A2 99F0              breq L26
 00A4           X12:
 00A4 13C0              xjmp L14
 00A6           L17:
 00A6                   .dbline 8
 00A6           ; {
 00A6           ;   case 0x00:
 00A6           ;   code=0xc0;break;
 00A6 40EC              ldi R20,192
 00A8                   .dbline 8
 00A8 11C0              xjmp L15
 00AA           L18:
 00AA                   .dbline 10
 00AA           ;   case 0x01:
 00AA           ;   code=0xf9;break;
 00AA 49EF              ldi R20,249
 00AC                   .dbline 10
 00AC 0FC0              xjmp L15
 00AE           L19:
 00AE                   .dbline 12
 00AE           ;   case 0x02:
 00AE           ;   code=0xa4;break;
 00AE 44EA              ldi R20,164
 00B0                   .dbline 12
 00B0 0DC0              xjmp L15
 00B2           L20:
 00B2                   .dbline 14
 00B2           ;   case 0x03:
 00B2           ;   code=0xb0;break;
 00B2 40EB              ldi R20,176
 00B4                   .dbline 14
 00B4 0BC0              xjmp L15
 00B6           L21:
 00B6                   .dbline 16
 00B6           ;   case 0x04:
 00B6           ;   code=0x99;break;
 00B6 49E9              ldi R20,153
 00B8                   .dbline 16
 00B8 09C0              xjmp L15
 00BA           L22:
 00BA                   .dbline 18
 00BA           ;   case 0x05:
 00BA           ;   code=0x92;break;
 00BA 42E9              ldi R20,146
 00BC                   .dbline 18
 00BC 07C0              xjmp L15
 00BE           L23:
 00BE                   .dbline 20
 00BE           ;   case 0x06:
 00BE           ;   code=0x82;break;
 00BE 42E8              ldi R20,130
 00C0                   .dbline 20
 00C0 05C0              xjmp L15
 00C2           L24:
 00C2                   .dbline 22
 00C2           ;   case 0x07:
 00C2           ;   code=0xf8;break;
 00C2 48EF              ldi R20,248
 00C4                   .dbline 22
 00C4 03C0              xjmp L15
 00C6           L25:
 00C6                   .dbline 24
 00C6           ;   case 0x08:
 00C6           ;   code=0x80;break;
 00C6 40E8              ldi R20,128
 00C8                   .dbline 24
 00C8 01C0              xjmp L15
 00CA           L26:
 00CA                   .dbline 26
 00CA           ;   case 0x09:
 00CA           ;   code=0x90;break;
 00CA 40E9              ldi R20,144
 00CC                   .dbline 26
 00CC           L14:
 00CC           L15:
 00CC                   .dbline 28
 00CC           ;   }
 00CC           ;   return(code);
 00CC 042F              mov R16,R20
 00CE                   .dbline -2
 00CE           L13:
 00CE                   .dbline 0 ; func end
 00CE 0C940000          xjmp pop_xgsetF000
 00D2                   .dbsym r code 20 c
 00D2                   .dbsym r num 16 c
 00D2                   .dbend
 00D2                   .dbfile E:\16实验程序\4x4键盘\key_value.h
 00D2                   .dbfunc e key_value _key_value fc
 00D2           ;              i -> <dead>
 00D2           ;           tem2 -> R10
 00D2           ;            rem -> R20
 00D2           ;           tem1 -> R22
                        .even
 00D2           _key_value::
 00D2 0E940000          xcall push_xgsetF00C
 00D6                   .dbline -1
 00D6                   .dbline 3
 00D6           ; //读键盘值 键盘在端口B
 00D6           ; uchar key_value()
 00D6           ; {
 00D6                   .dbline 5
 00D6           ; uchar tem1,tem2,rem,i;
 00D6           ; rem=0;                      //不清零会返回一个不可预知的值
 00D6 4427              clr R20
 00D8                   .dbline 6
 00D8           ; DDRB=0xf0;                  //B口高四位输出 低四位输入
 00D8 80EF              ldi R24,240
 00DA 87BB              out 0x17,R24
 00DC                   .dbline 7
 00DC           ; PORTB=0x0f;                 //输入有上拉电阻 输出低电平
 00DC 8FE0              ldi R24,15
 00DE 88BB              out 0x18,R24
 00E0                   .dbline 8

⌨️ 快捷键说明

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