📄 jianpan.lis
字号:
.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 + -