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

📄 main.lis

📁 这是我做课程设计时自己做的,用摩托罗位的飞思卡尔单片机做的,包括了对键盘复键的处理
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module main.c
                        .area data
 0000           _LCD_buff_fresh::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data
 0001           _LCD_buff1::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data
                        .area lit
 0000           _Key_show::
 0000 31206973207072657373656420202020  .byte 49,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
 0010 663D353233487A202020202020202020  .byte 'f,61,53,50,51,'H,'z,32,32,32,32,32,32,32,32,32
 0020 32206973207072657373656420202020  .byte 50,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
 0030 663D353538487A202020202020202020  .byte 'f,61,53,53,56,'H,'z,32,32,32,32,32,32,32,32,32
 0040 33206973207072657373656420202020  .byte 51,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
 0050 663D363630487A202020202020202020  .byte 'f,61,54,54,48,'H,'z,32,32,32,32,32,32,32,32,32
 0060 34206973207072657373656420202020  .byte 52,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
 0070 663D363938487A202020202020202020  .byte 'f,61,54,57,56,'H,'z,32,32,32,32,32,32,32,32,32
 0080 35206973207072657373656420202020  .byte 53,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
 0090 663D373834487A202020202020202020  .byte 'f,61,55,56,52,'H,'z,32,32,32,32,32,32,32,32,32
 00A0 36206973207072657373656420202020  .byte 54,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
 00B0 663D383830487A202020202020202020  .byte 'f,61,56,56,48,'H,'z,32,32,32,32,32,32,32,32,32
 00C0 37206973207072657373656420202020  .byte 55,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
 00D0 663D393838487A202020202020202020  .byte 'f,61,57,56,56,'H,'z,32,32,32,32,32,32,32,32,32
 00E0 4C312069732070726573736564202020  .byte 'L,49,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 00F0 663D323632487A202020202020202020  .byte 'f,61,50,54,50,'H,'z,32,32,32,32,32,32,32,32,32
 0100 4C322069732070726573736564202020  .byte 'L,50,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0110 663D323934487A202020202020202020  .byte 'f,61,50,57,52,'H,'z,32,32,32,32,32,32,32,32,32
 0120 4C332069732070726573736564202020  .byte 'L,51,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0130 663D333330487A202020202020202020  .byte 'f,61,51,51,48,'H,'z,32,32,32,32,32,32,32,32,32
 0140 4C342069732070726573736564202020  .byte 'L,52,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0150 663D333439487A202020202020202020  .byte 'f,61,51,52,57,'H,'z,32,32,32,32,32,32,32,32,32
 0160 4C352069732070726573736564202020  .byte 'L,53,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0170 663D333932487A202020202020202020  .byte 'f,61,51,57,50,'H,'z,32,32,32,32,32,32,32,32,32
 0180 4C362069732070726573736564202020  .byte 'L,54,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0190 663D343430487A202020202020202020  .byte 'f,61,52,52,48,'H,'z,32,32,32,32,32,32,32,32,32
 01A0 4C372069732070726573736564202020  .byte 'L,55,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 01B0 663D343934487A202020202020202020  .byte 'f,61,52,57,52,'H,'z,32,32,32,32,32,32,32,32,32
 01C0 48312069732070726573736564202020  .byte 'H,49,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 01D0 663D31303436487A2020202020202020  .byte 'f,61,49,48,52,54,'H,'z,32,32,32,32,32,32,32,32
 01E0 48322069732070726573736564202020  .byte 'H,50,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 01F0 663D31313735487A2020202020202020  .byte 'f,61,49,49,55,53,'H,'z,32,32,32,32,32,32,32,32
 0200 48332069732070726573736564202020  .byte 'H,51,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0210 663D31333138487A2020202020202020  .byte 'f,61,49,51,49,56,'H,'z,32,32,32,32,32,32,32,32
 0220 48342069732070726573736564202020  .byte 'H,52,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0230 663D31333937487A2020202020202020  .byte 'f,61,49,51,57,55,'H,'z,32,32,32,32,32,32,32,32
 0240 48352069732070726573736564202020  .byte 'H,53,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0250 663D31353638487A2020202020202020  .byte 'f,61,49,53,54,56,'H,'z,32,32,32,32,32,32,32,32
 0260 48362069732070726573736564202020  .byte 'H,54,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0270 663D31373630487A2020202020202020  .byte 'f,61,49,55,54,48,'H,'z,32,32,32,32,32,32,32,32
 0280 48372069732070726573736564202020  .byte 'H,55,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
 0290 663D31393736487A2020202020202020  .byte 'f,61,49,57,55,54,'H,'z,32,32,32,32,32,32,32,32
                        .area text
                ;      key_value -> 0,X
 0000           _main::
 0000 A7FF              ais #-1
 0002 95                tsx
 0003           ;                         /*-------------------键盘实验--------------------------*
 0003           ; *文 件 名:Keyboard.c                                   *
 0003           ; *硬件连接:PTA.7-4接键盘4根列线,PTA.3-0接键盘4根行线    *
 0003           ; *程序描述:按下键盘按键,串口发送对应的键值              *
 0003           ; *目    的:键盘扫描,键盘中断,键值识别,键盘编码       *
 0003           ; *注    意:如果键盘插在实验板上排插孔,无须连线,若插在下 *
 0003           ; *         排插孔,需手工接线                            *
 0003           ; *-------《嵌入式应用技术基础教程》教学实例------------*/
 0003           ; /*[头文件]*/
 0003           ; #include "GP32C.H"
 0003           ; #include "KB.h"               //键盘中断头文件
 0003           ; #include "KeyBoard_define.h"
 0003           ; #define MCLK 2457600
 0003           ; 
 0003           ; 
 0003           ; char Play_Sound(unsigned char key);
 0003           ; void PWMInit(unsigned int Period);
 0003           ; void Key_handle(unsigned char key);
 0003           ; extern void lcdshow(unsigned char str[]);
 0003           ; extern unsigned char KB_Scan(void);
 0003           ; 
 0003           ; unsigned char LCD_buff_fresh=0,LCD_buff1=0;
 0003           ; 
 0003           ; 
 0003           ; const unsigned char Key_show[21][32]={
 0003           ;       "1 is pressed    f=523Hz         ",
 0003           ;       "2 is pressed    f=558Hz         ",
 0003           ;       "3 is pressed    f=660Hz         ",
 0003           ;       "4 is pressed    f=698Hz         ",
 0003           ;       "5 is pressed    f=784Hz         ",
 0003           ;       "6 is pressed    f=880Hz         ",
 0003           ;       "7 is pressed    f=988Hz         ",
 0003           ;       "L1 is pressed   f=262Hz         ",
 0003           ;       "L2 is pressed   f=294Hz         ",
 0003           ;       "L3 is pressed   f=330Hz         ",
 0003           ;       "L4 is pressed   f=349Hz         ",
 0003           ;       "L5 is pressed   f=392Hz         ",
 0003           ;       "L6 is pressed   f=440Hz         ",
 0003           ;       "L7 is pressed   f=494Hz         ",
 0003           ;       "H1 is pressed   f=1046Hz        ",
 0003           ;       "H2 is pressed   f=1175Hz        ",
 0003           ;       "H3 is pressed   f=1318Hz        ",
 0003           ;       "H4 is pressed   f=1397Hz        ",
 0003           ;       "H5 is pressed   f=1568Hz        ",
 0003           ;       "H6 is pressed   f=1760Hz        ",
 0003           ;       "H7 is pressed   f=1976Hz        "
 0003           ; };
 0003           ; 
 0003           ; 
 0003           ; /*[主程序]*/
 0003           ; void main()
 0003           ; {  
 0003           ;        unsigned char key_value;
 0003           ;      asm("SEI");              //关总中断
 0003 9B                SEI
 0004           ;      KB_Init();
 0004 CD0000            jsr _KB_Init
 0007 95                tsx
 0008 200E              bra L3
 000A           L2:
 000A CD0000            jsr _KB_Scan
 000D 95                tsx
 000E B700              sta *__r1
 0010 F7                sta ,X
 0011 87                psha
 0012 CD001D            jsr _Play_Sound
 0015 A701              ais #1
 0017 95                tsx
 0018           L3:
 0018           ; 	   //INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
 0018           ;      //asm("CLI");              //开总中断
 0018           ;      //主循环
 0018           ;      while(1)
 0018 20F0              bra L2
 001A           X0:
 001A           L1:
 001A A701              ais #1
 001C                   .dbline 0 ; func end
 001C 81                rts
                        .area lit
 02A0           L8:
 02A0 4E6F2076616C6964206B657920697320  .byte 'N,'o,32,'v,'a,'l,'i,'d,32,'k,'e,'y,32,'i,'s,32
 02B0 62652070726573732120202020202020  .byte 'b,'e,32,'p,'r,'e,'s,'s,33,32,32,32,32,32,32,32
                        .area text
                ;       LCD_buff -> 0,X
                ;    backup_DDRD -> 32,X
                ;            key -> 35,X
 001D           _Play_Sound::
 001D A7DF              ais #-33
 001F 95                tsx
 0020           ;      {
 0020           ;       key_value=KB_Scan();
 0020           ;       Play_Sound(key_value);
 0020           ;      } 
 0020           ; }
 0020           ; 
 0020           ; char Play_Sound(unsigned char key)
 0020           ; {
 0020           ;     char backup_DDRD;
 0020           ;       if(key==0xff)
 0020 E623              lda 35,X
 0022 A1FF              cmp #-1
 0024 2641              bne L6
 0026           ;       {
 0026           ;               unsigned char LCD_buff[32]="No valid key is be press!       ";
 0026 3500              sthx *__r0
 0028 A620              lda #32
 002A 87                psha
 002B 4F                clra
 002C 87                psha
 002D A6A0              lda #<L8
 002F 87                psha
 0030 A6A0              lda #>L8
 0032 87                psha
 0033 B600              lda *__r1
 0035 87                psha
 0036 B600              lda *__r0
 0038 87                psha
 0039 CD0000            jsr __asgnblk
 003C A706              ais #6
 003E           ;               T1SC=0x38;  
 003E A638              lda #56
 0040 B720              sta 0x20
 0042           ;               T1SC0=0b00100010;
 0042 A622              lda #34
 0044 B725              sta 0x25
 0046           ;           T1SC|= 0b00100000;   //stop Timer
 0046 1A20              bset #5,0x20
 0048           ;               LCD_buff_fresh++;       
 0048 3C00              inc *_LCD_buff_fresh
 004A           ;               if(LCD_buff_fresh%255==0)
 004A B600              lda *_LCD_buff_fresh
 004C AEFF              ldx #-1
 004E 8C                clrh
 004F 52                div
 0050 8B                pshh
 0051 86                pula
 0052 95                tsx
 0053 4D                tsta
 0054 2608              bne L9
 0056           ;               {
 0056           ;                       lcdshow((unsigned char *)LCD_buff);
 0056 89                pshx
 0057 8B                pshh
 0058 CD0000            jsr _lcdshow
 005B A702              ais #2
 005D 95                tsx
 005E           ;               } 
 005E           L9:
 005E           ; 		LCD_buff1=1;
 005E A601              lda #1
 0060 B701              sta *_LCD_buff1
 0062           ;               return 1;   //do something and return!!!
 0062 A601              lda #1
 0064 CC02AF            jmp L5
 0067           L6:
 0067           ; 	}
 0067           ; 	
 0067           ; 	else
 0067           ; 	{
 0067           ;     	switch(key)   //do something and return
 0067 6F1E              clr 30,X
 0069 E623              lda 35,X
 006B E71F              sta 31,X
 006D E61E              lda 30,X
 006F 2609              bne X1
 0071 E61F              lda 31,X
 0073 A1A5              cmp #-91
 0075 2603              bne X23
 0077 CC0248            jmp L26
 007A           X23:
 007A           X1:
 007A E61E              lda 30,X
 007C 2609              bne X2
 007E E61F              lda 31,X
 0080 A1A6              cmp #-90
 0082 2603              bne X24
 0084 CC0226            jmp L23
 0087           X24:
 0087           X2:
 0087 E61F              lda 31,X
 0089 B700              sta *__r1
 008B E61E              lda 30,X
 008D B700              sta *__r0
 008F 5500              ldhx *__r0
 0091 6500A6            cphx #166
 0094 95                tsx
 0095 9303              ble X25
 0097 CC013F            jmp L36
 009A           X25:
 009A           L35:
 009A E61E              lda 30,X
 009C 2609              bne X3
 009E E61F              lda 31,X
 00A0 A145              cmp #69
 00A2 2603              bne X26
 00A4 CC027F            jmp L31
 00A7           X26:
 00A7           X3:
 00A7 E61E              lda 30,X
 00A9 2609              bne X4
 00AB E61F              lda 31,X
 00AD A146              cmp #70
 00AF 2603              bne X27
 00B1 CC025E            jmp L28
 00B4           X27:
 00B4           X4:
 00B4 E61F              lda 31,X
 00B6 B700              sta *__r1
 00B8 E61E              lda 30,X
 00BA B700              sta *__r0
 00BC 5500              ldhx *__r0
 00BE 650046            cphx #70
 00C1 95                tsx
 00C2 925E              bgt L38
 00C4           L37:
 00C4 E61E              lda 30,X
 00C6 2609              bne X5
 00C8 E61F              lda 31,X
 00CA A131              cmp #49
 00CC 2603              bne X28
 00CE CC01BA            jmp L14
 00D1           X28:
 00D1           X5:
 00D1 E61E              lda 30,X
 00D3 2609              bne X6
 00D5 E61F              lda 31,X
 00D7 A132              cmp #50
 00D9 2603              bne X29
 00DB CC01C6            jmp L15
 00DE           X29:
 00DE           X6:
 00DE E61E              lda 30,X
 00E0 2609              bne X7
 00E2 E61F              lda 31,X
 00E4 A133              cmp #51
 00E6 2603              bne X30
 00E8 CC01D2            jmp L16
 00EB           X30:
 00EB           X7:
 00EB E61E              lda 30,X
 00ED 2609              bne X8
 00EF E61F              lda 31,X
 00F1 A134              cmp #52
 00F3 2603              bne X31
 00F5 CC01DE            jmp L17
 00F8           X31:
 00F8           X8:
 00F8 E61E              lda 30,X
 00FA 2609              bne X9
 00FC E61F              lda 31,X
 00FE A135              cmp #53
 0100 2603              bne X32
 0102 CC01EA            jmp L18
 0105           X32:
 0105           X9:
 0105 E61E              lda 30,X
 0107 2609              bne X10
 0109 E61F              lda 31,X
 010B A136              cmp #54
 010D 2603              bne X33
 010F CC01F6            jmp L19
 0112           X33:
 0112           X10:
 0112 E61E              lda 30,X
 0114 2609              bne X11
 0116 E61F              lda 31,X
 0118 A137              cmp #55
 011A 2603              bne X34
 011C CC0202            jmp L20
 011F           X34:
 011F           X11:
 011F CC02A9            jmp L12
 0122           L38:
 0122 E61E              lda 30,X
 0124 2609              bne X12
 0126 E61F              lda 31,X
 0128 A195              cmp #-107
 012A 2603              bne X35
 012C CC0295            jmp L33
 012F           X35:
 012F           X12:
 012F E61E              lda 30,X
 0131 2609              bne X13
 0133 E61F              lda 31,X
 0135 A196              cmp #-106
 0137 2603              bne X36
 0139 CC0274            jmp L30
 013C           X36:
 013C           X13:
 013C CC02A9            jmp L12
 013F           L36:
 013F E61E              lda 30,X
 0141 2609              bne X14
 0143 E61F              lda 31,X
 0145 A1D5              cmp #-43
 0147 2603              bne X37
 0149 CC028A            jmp L32
 014C           X37:
 014C           X14:
 014C E61E              lda 30,X
 014E 2609              bne X15
 0150 E61F              lda 31,X
 0152 A1D6              cmp #-42
 0154 2603              bne X38
 0156 CC0269            jmp L29
 0159           X38:
 0159           X15:
 0159 E61F              lda 31,X
 015B B700              sta *__r1
 015D E61E              lda 30,X
 015F B700              sta *__r0
 0161 5500              ldhx *__r0
 0163 6500D6            cphx #214
 0166 95                tsx
 0167 922A              bgt L40
 0169           L39:
 0169 E61E              lda 30,X
 016B 2609              bne X16
 016D E61F              lda 31,X
 016F A1C3              cmp #-61
 0171 2603              bne X39
 0173 CC02A0            jmp L34
 0176           X39:
 0176           X16:
 0176 E61E              lda 30,X
 0178 2609              bne X17
 017A E61F              lda 31,X
 017C A1C5              cmp #-59
 017E 2603              bne X40
 0180 CC023D            jmp L25
 0183           X40:
 0183           X17:
 0183 E61E              lda 30,X
 0185 2609              bne X18
 0187 E61F              lda 31,X
 0189 A1C6              cmp #-58
 018B 2603              bne X41
 018D CC021A            jmp L22
 0190           X41:
 0190           X18:
 0190 CC02A9            jmp L12
 0193           L40:
 0193 E61E              lda 30,X
 0195 2609              bne X19
 0197 E61F              lda 31,X
 0199 A1E3              cmp #-29

⌨️ 快捷键说明

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