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

📄 jianpan.lis

📁 实现3*3 键盘的控制。从而实现用键盘来对单片机进行控制。
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module jianpan.c
                        .area lit(rom, con, rel)
 0000           _KeySet::
 0000 0102              .byte 1,2
 0002 0304              .byte 3,4
 0004 0506              .byte 5,6
 0006 0708              .byte 7,8
 0008 0900              .byte 9,0
 000A 0A0B              .byte 10,11
 000C 0C0D              .byte 12,13
 000E 0E0F              .byte 14,15
 0010                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0010                   .dbsym e KeySet _KeySet A[16:16]kc
                        .area data(ram, con, rel)
 0000                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0000           _flag::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0001                   .dbsym e flag _flag c
                        .area lit(rom, con, rel)
 0010           _num_table::
 0010 3F06              .byte 63,6
 0012 5B4F              .byte 91,'O
 0014 666D              .byte 'f,'m
 0016 7D07              .byte 125,7
 0018 7F6F              .byte 127,'o
 001A 40                .byte 64
 001B                   .dbsym e num_table _num_table A[11:11]kc
                        .area data(ram, con, rel)
 0001                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0001           _DelayCounter::
 0001                   .blkb 2
                        .area idata
 0001 0000              .word 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0003                   .dbsym e DelayCounter _DelayCounter i
 0003           _SysCounter::
 0003                   .blkb 2
                        .area idata
 0003 0000              .word 0
                        .area data(ram, con, rel)
 0005                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0005                   .dbsym e SysCounter _SysCounter i
 0005           _numL::
 0005                   .blkb 2
                        .area idata
 0005 0000              .word 0
                        .area data(ram, con, rel)
 0007                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0007                   .dbsym e numL _numL i
 0007           _numH::
 0007                   .blkb 1
                        .area idata
 0007 00                .byte 0
                        .area data(ram, con, rel)
 0008                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0008                   .dbsym e numH _numH c
 0008           _mode::
 0008                   .blkb 1
                        .area idata
 0008 71                .byte 113
                        .area data(ram, con, rel)
 0009                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0009                   .dbsym e mode _mode c
 0009           _NumBitL::
 0009                   .blkb 1
                        .area idata
 0009 00                .byte 0
                        .area data(ram, con, rel)
 000A                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 000A                   .dbsym e NumBitL _NumBitL c
 000A           _NumBitH::
 000A                   .blkb 1
                        .area idata
 000A 00                .byte 0
                        .area data(ram, con, rel)
 000B                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 000B                   .dbsym e NumBitH _NumBitH c
 000B           _Cursor::
 000B                   .blkb 1
                        .area idata
 000B 00                .byte 0
                        .area data(ram, con, rel)
 000C                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 000C                   .dbsym e Cursor _Cursor c
 000C           _CursorDir::
 000C                   .blkb 1
                        .area idata
 000C 00                .byte 0
                        .area data(ram, con, rel)
 000D                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 000D                   .dbsym e CursorDir _CursorDir c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 0000                   .dbfunc e delay _delay fV
 0000           ;           time -> R16,R17
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 92
 0000           ; //ICC-AVR application builder : 2004-4-28 13:15:44
 0000           ; // Target : M16
 0000           ; // Crystal: 8.0000Mhz
 0000           ; //串口通讯及控制命令格式(协议)如下:
 0000           ; // 命令的传输长度采用变长数据,第一个字节为指令,其余为可选参数
 0000           ; //----------------------------------------------------------------------------
 0000           ; //键盘特殊功能键定义如下:
 0000           ; //
 0000           ; //键码                功能
 0000           ; //-----------------------------------
 0000           ; //  F         ENTER(transmit the data to the master)
 0000           ; //  C         BACKSPACE
 0000           ; //  A         speedup
 0000           ; //  B         slowdown
 0000           ; //  E         go into the edit mode
 0000           ; //
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #define uchar unsigned char
 0000           ; #define uint unsigned int
 0000           ; #define ulong unsigned long
 0000           ; 
 0000           ; #define ROUTE_TASK_NUM_LIMIT 30 
 0000           ; #define SET_ROUTE ( PIND & BIT(PD3) ) //键盘设定路径的选通引脚(来自Mega16)
 0000           ; 
 0000           ; //功能键定义
 0000           ; #define CANCEL        12      //C
 0000           ; #define ENTER         15      //F
 0000           ; #define EDIT          14      //e
 0000           ; #define speedup               10      //A
 0000           ; #define slowdown      11      //B
 0000           ; #define DEBUG 13      //D
 0000           ; 
 0000           ; //模式1参数个数Model1_flag
 0000           ; #define Model1_flag  8
 0000           ; //模式2参数个数Model2_flag
 0000           ; #define Model2_flag  4
 0000           ; 
 0000           ; //状态标志
 0000           ; #define START_COMMAND 0xF0
 0000           ; #define TRANSMIT 0x02
 0000           ; #define SAVE   0x00
 0000           ; #define SETTING  0x01
 0000           ; #define FREE   0X71   
 0000           ; #define STATE  0X0f
 0000           ; 
 0000           ; #define PAR1    0x01
 0000           ; #define PAR2  0x02
 0000           ; #define PAR3  0x03
 0000           ; #define PAR4  0x04
 0000           ; #define PAR5  0x05
 0000           ; #define PAR6  0x06
 0000           ; #define PAR7  0x07
 0000           ; #define PAR8  0x08
 0000           ; #define PAR9  0x09
 0000           ; #define PAR10 0x0a
 0000           ; const uchar KeySet[] =
 0000           ; {
 0000           ;  1, 2, 3, 4,
 0000           ;  5, 6, 7, 8,
 0000           ;  9, 0, 10,11,
 0000           ;  12,13,14,15
 0000           ; };
 0000           ; 
 0000           ; uchar flag = 0;                        /* 状态标志变量 */
 0000           ; const uchar num_table[] = { 0x3f,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40 };
 0000           ; //自定义定时器
 0000           ; uint DelayCounter = 0;
 0000           ; uint SysCounter = 0;
 0000           ; //
 0000           ; uchar trans_buf[20];
 0000           ; uchar receive_buf[20];
 0000           ; 
 0000           ; //键盘控制行为变量
 0000           ; uint numL= 0;         //6位十进制
 0000           ; uchar numH=0;         //显示高2位
 0000           ; 
 0000           ; uchar mode = 0x71;    //显示'F'
 0000           ; uchar NumBitL=0;      //显示高2位
 0000           ; uchar NumBitH=0;         //6位十进制  显示低6位
 0000           ; uchar Cursor = 0;
 0000           ; uchar CursorDir = 0;
 0000           ;  
 0000           ; void delay( uint time );
 0000           ; //void master( uchar command, uchar* buf, uchar startP, uchar dataLen );
 0000           ; uchar scan_key( void );
 0000           ; void display( void );
 0000           ; 
 0000           ; 
 0000           ; void delay( uint time )
 0000           ; {
 0000                   .dbline 93
 0000 2224              clr R2
 0002 3324              clr R3
 0004 30920200          sts _DelayCounter+1,R3
 0008 20920100          sts _DelayCounter,R2
 000C 01C0              xjmp L5
 000E           L2:
 000E                   .dbline 93
 000E                   .dbline 93
 000E A895              wdr
 0010                   .dbline 93
 0010           L3:
 0010                   .dbline 93
 0010           L5:
 0010                   .dbline 93
 0010           ;       for( DelayCounter = 0; DelayCounter < time; ) { WDR(); }
 0010 20900100          lds R2,_DelayCounter
 0014 30900200          lds R3,_DelayCounter+1
 0018 2016              cp R2,R16
 001A 3106              cpc R3,R17
 001C C0F3              brlo L2
 001E                   .dbline -2
 001E                   .dbline 94
 001E           ; }
 001E           L1:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r time 16 i
 0020                   .dbend
 0020                   .dbfunc e send _send fV
 0020           ;            num -> R20
 0020           ;          index -> R22
                        .even
 0020           _send::
 0020 0E940000          xcall push_gset2
 0024 422F              mov R20,R18
 0026 602F              mov R22,R16
 0028                   .dbline -1
 0028                   .dbline 97
 0028           ; 
 0028           ; void send( uchar index, uchar num )
 0028           ; {
 0028                   .dbline 98
 0028           ;       PORTB = ~BIT( index ); 
 0028 01E0              ldi R16,1
 002A 162F              mov R17,R22
 002C 0E940000          xcall lsl8
 0030 202E              mov R2,R16
 0032 2094              com R2
 0034 28BA              out 0x18,R2
 0036                   .dbline 99
 0036           ;       if( index < 7 ) { PORTA = num_table[num]; }
 0036 6730              cpi R22,7
 0038 48F4              brsh L7
 003A                   .dbline 99
 003A                   .dbline 99
 003A 80E0              ldi R24,<_num_table
 003C 90E0              ldi R25,>_num_table
 003E E42F              mov R30,R20
 0040 FF27              clr R31
 0042 E80F              add R30,R24
 0044 F91F              adc R31,R25
 0046 E491              lpm R30,Z
 0048 EBBB              out 0x1b,R30
 004A                   .dbline 99
 004A 01C0              xjmp L8
 004C           L7:
 004C                   .dbline 100
 004C           ;       else { PORTA = num; }
 004C                   .dbline 100
 004C 4BBB              out 0x1b,R20
 004E                   .dbline 100
 004E           L8:
 004E                   .dbline 101
 004E           ;       delay( 1 );
 004E 01E0              ldi R16,1
 0050 10E0              ldi R17,0
 0052 D6DF              xcall _delay
 0054                   .dbline -2
 0054                   .dbline 102
 0054           ; }
 0054           L6:
 0054 0E940000          xcall pop_gset2
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym r num 20 c
 005A                   .dbsym r index 22 c
 005A                   .dbend
 005A                   .dbfunc e send_char _send_char fV
 005A           ;             ch -> R20
 005A           ;          index -> R22
                        .even
 005A           _send_char::
 005A 0E940000          xcall push_gset2
 005E 422F              mov R20,R18
 0060 602F              mov R22,R16
 0062                   .dbline -1
 0062                   .dbline 105
 0062           ; 
 0062           ; void send_char( uchar index, uchar ch )
 0062           ; {
 0062                   .dbline 106
 0062           ;       PORTB = ~BIT( index );
 0062 01E0              ldi R16,1
 0064 162F              mov R17,R22
 0066 0E940000          xcall lsl8
 006A 202E              mov R2,R16
 006C 2094              com R2
 006E 28BA              out 0x18,R2
 0070                   .dbline 107
 0070           ;       PORTA = ch;
 0070 4BBB              out 0x1b,R20
 0072                   .dbline 108
 0072           ;       delay(1);
 0072 01E0              ldi R16,1
 0074 10E0              ldi R17,0
 0076 C4DF              xcall _delay
 0078                   .dbline -2
 0078                   .dbline 109
 0078           ; }
 0078           L9:
 0078 0E940000          xcall pop_gset2
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbsym r ch 20 c
 007E                   .dbsym r index 22 c
 007E                   .dbend
 007E                   .dbfunc e scan_key _scan_key fc
 007E           ;          index -> R16
                        .even
 007E           _scan_key::
 007E                   .dbline -1
 007E                   .dbline 113
 007E           ; 
 007E           ; //键盘扫描
 007E           ; uchar scan_key( void )
 007E           ; {
 007E                   .dbline 115
 007E           ;       uchar index;
 007E           ;        if(!(PINC & 0x80))
 007E 9F99              sbic 0x13,7
 0080 02C0              rjmp L11
 0082                   .dbline 116
 0082           ;        index = 0;

⌨️ 快捷键说明

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