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

📄 keyboard.lis

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module keyboard.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\yyjapp\yymk\software\keyboard.c
 0000                   .dbfunc e scankey _scankey fc
 0000           ;           keya -> R16
                        .even
 0000           _scankey::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; #include <f:\yyjapp\yymk\software\main.h>
 0000           ; #include <f:\yyjapp\yymk\software\keyboard.h>
 0000           ; #include <f:\yyjapp\yymk\software\MfRc500.h>
 0000           ; #include <f:\yyjapp\yymk\software\at45db161.h>
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; #include <eeprom.h>
 0000           ; extern unsigned char key_pw[6];
 0000           ; extern unsigned char oldkey_pw[6];
 0000           ; extern unsigned int keycount;
 0000           ; extern unsigned char T2IR;
 0000           ; extern unsigned int timecounter;
 0000           ; 
 0000           ; unsigned char scankey(void)
 0000           ; {
 0000                   .dbline 17
 0000           ;        unsigned char keya;
 0000           ;        DDRC=0xff;
 0000 8FEF              ldi R24,255
 0002 84BB              out 0x14,R24
 0004                   .dbline 18
 0004           ;        SET_KEY3();
 0004 A398              cbi 0x14,3
 0006                   .dbline 19
 0006           ;        SET_KEY4();
 0006 A498              cbi 0x14,4
 0008                   .dbline 20
 0008           ;        SET_KEY5();
 0008 A598              cbi 0x14,5
 000A                   .dbline 21
 000A           ;        SET_KEY6();
 000A A698              cbi 0x14,6
 000C                   .dbline 22
 000C           ;        CLEAR_KEY0();
 000C A09A              sbi 0x14,0
 000E                   .dbline 23
 000E           ;        CLEAR_KEY1();
 000E A19A              sbi 0x14,1
 0010                   .dbline 24
 0010           ;        CLEAR_KEY2();
 0010 A29A              sbi 0x14,2
 0012                   .dbline 25
 0012           ;        DDRC=PORTC=0;
 0012 2224              clr R2
 0014 25BA              out 0x15,R2
 0016 24BA              out 0x14,R2
 0018                   .dbline 27
 0018           ; //     PORTA=0xff;
 0018           ;        keya=PINC;
 0018 03B3              in R16,0x13
 001A                   .dbline 28
 001A           ;        keya=keya<<1;
 001A 000F              lsl R16
 001C                   .dbline 29
 001C           ;        if(keya==0xf0)
 001C 003F              cpi R16,240
 001E 11F4              brne L3
 0020                   .dbline 30
 0020           ;        return 1;
 0020 01E0              ldi R16,1
 0022 01C0              xjmp L2
 0024           L3:
 0024                   .dbline 32
 0024           ;        else
 0024           ;        return 0;
 0024 0027              clr R16
 0026                   .dbline -2
 0026           L2:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbsym r keya 16 c
 0028                   .dbend
 0028                   .dbfunc e keyvalue1 _keyvalue1 fc
 0028           ;          value -> R16
 0028           ;           key1 -> R16
                        .even
 0028           _keyvalue1::
 0028                   .dbline -1
 0028                   .dbline 35
 0028           ; }
 0028           ; unsigned char keyvalue1(void)
 0028           ; {
 0028                   .dbline 37
 0028           ;       unsigned char key1,value;
 0028           ;       DDRC=0xFF;
 0028 8FEF              ldi R24,255
 002A 84BB              out 0x14,R24
 002C                   .dbline 38
 002C           ;       CLEAR_KEY3();
 002C A39A              sbi 0x14,3
 002E                   .dbline 39
 002E           ;       SET_KEY4();
 002E A498              cbi 0x14,4
 0030                   .dbline 40
 0030           ;       SET_KEY5();
 0030 A598              cbi 0x14,5
 0032                   .dbline 41
 0032           ;       SET_KEY6();
 0032 A698              cbi 0x14,6
 0034                   .dbline 43
 0034           ;       
 0034           ;       SET_KEY0();
 0034 A098              cbi 0x14,0
 0036                   .dbline 44
 0036           ;       SET_KEY1();
 0036 A198              cbi 0x14,1
 0038                   .dbline 45
 0038           ;       SET_KEY2();
 0038 A298              cbi 0x14,2
 003A                   .dbline 46
 003A           ;       DDRC=PORTC=0;
 003A 2224              clr R2
 003C 25BA              out 0x15,R2
 003E 24BA              out 0x14,R2
 0040                   .dbline 47
 0040           ;       key1=PINC;
 0040 03B3              in R16,0x13
 0042                   .dbline 48
 0042           ;       key1=key1&0x07;
 0042 0770              andi R16,7
 0044                   .dbline 50
 0044           ; //    key1=key1<<1;
 0044           ;       switch(key1)
 0044 1127              clr R17
 0046 0330              cpi R16,3
 0048 E0E0              ldi R30,0
 004A 1E07              cpc R17,R30
 004C 69F0              breq L11
 004E 0530              cpi R16,5
 0050 E0E0              ldi R30,0
 0052 1E07              cpc R17,R30
 0054 39F0              breq L10
 0056 0630              cpi R16,6
 0058 E0E0              ldi R30,0
 005A 1E07              cpc R17,R30
 005C 09F0              breq L9
 005E 06C0              xjmp L6
 0060           X0:
 0060                   .dbline 51
 0060           ;       {
 0060           L9:
 0060                   .dbline 53
 0060           ;               case 0x06:       //  3 keyvalue
 0060           ;               value=0x03;      //  3 key
 0060 03E0              ldi R16,3
 0062                   .dbline 54
 0062           ;               break;
 0062 05C0              xjmp L7
 0064           L10:
 0064                   .dbline 56
 0064           ;               case 0x05:      //   2 keyvalue       
 0064           ;               value=0x02;      //   2 key
 0064 02E0              ldi R16,2
 0066                   .dbline 57
 0066           ;               break;
 0066 03C0              xjmp L7
 0068           L11:
 0068                   .dbline 59
 0068           ;               case 0x03:      //   1 keyvalue
 0068           ;               value=0x01;     //   1 key
 0068 01E0              ldi R16,1
 006A                   .dbline 60
 006A           ;               break;
 006A 01C0              xjmp L7
 006C           L6:
 006C                   .dbline 62
 006C           ;               default:
 006C           ;               value=0xff;
 006C 0FEF              ldi R16,255
 006E                   .dbline 63
 006E           ;               break;
 006E           L7:
 006E                   .dbline 65
 006E           ;       }
 006E           ;       return value;
 006E                   .dbline -2
 006E           L5:
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbsym r value 16 c
 0070                   .dbsym r key1 16 c
 0070                   .dbend
 0070                   .dbfunc e keyvalue2 _keyvalue2 fc
 0070           ;          value -> R16
 0070           ;           key1 -> R16
                        .even
 0070           _keyvalue2::
 0070                   .dbline -1
 0070                   .dbline 68
 0070           ; }
 0070           ; unsigned char keyvalue2(void)
 0070           ; {
 0070                   .dbline 70
 0070           ;       unsigned char key1,value;
 0070           ;       DDRC=0xFF;
 0070 8FEF              ldi R24,255
 0072 84BB              out 0x14,R24
 0074                   .dbline 71
 0074           ;       SET_KEY3();
 0074 A398              cbi 0x14,3
 0076                   .dbline 72
 0076           ;       CLEAR_KEY4();
 0076 A49A              sbi 0x14,4
 0078                   .dbline 73
 0078           ;       SET_KEY5();
 0078 A598              cbi 0x14,5
 007A                   .dbline 74
 007A           ;       SET_KEY6();
 007A A698              cbi 0x14,6
 007C                   .dbline 76
 007C           ;       
 007C           ;       SET_KEY0();
 007C A098              cbi 0x14,0
 007E                   .dbline 77
 007E           ;       SET_KEY1();
 007E A198              cbi 0x14,1
 0080                   .dbline 78
 0080           ;       SET_KEY2();
 0080 A298              cbi 0x14,2
 0082                   .dbline 79
 0082           ;       DDRC=PORTC=0;
 0082 2224              clr R2
 0084 25BA              out 0x15,R2
 0086 24BA              out 0x14,R2
 0088                   .dbline 80
 0088           ;       key1=PINC;
 0088 03B3              in R16,0x13
 008A                   .dbline 81
 008A           ;       key1=key1&0x07;
 008A 0770              andi R16,7
 008C                   .dbline 83
 008C           ; //    key1=key1<<1;
 008C           ;       switch(key1)
 008C 1127              clr R17
 008E 0330              cpi R16,3
 0090 E0E0              ldi R30,0
 0092 1E07              cpc R17,R30
 0094 69F0              breq L18
 0096 0530              cpi R16,5
 0098 E0E0              ldi R30,0
 009A 1E07              cpc R17,R30
 009C 39F0              breq L17
 009E 0630              cpi R16,6
 00A0 E0E0              ldi R30,0
 00A2 1E07              cpc R17,R30
 00A4 09F0              breq L16
 00A6 06C0              xjmp L13
 00A8           X1:
 00A8                   .dbline 84
 00A8           ;       {
 00A8           L16:
 00A8                   .dbline 86
 00A8           ;               case 0x06:         // 6 keyvalue
 00A8           ;               value=0x06;        // 6 key
 00A8 06E0              ldi R16,6
 00AA                   .dbline 87
 00AA           ;               break;
 00AA 05C0              xjmp L14
 00AC           L17:
 00AC                   .dbline 89
 00AC           ;               case 0x05:         //  5 keyvalue
 00AC           ;               value=0x05;        //  5 key
 00AC 05E0              ldi R16,5
 00AE                   .dbline 90
 00AE           ;               break;
 00AE 03C0              xjmp L14
 00B0           L18:
 00B0                   .dbline 92
 00B0           ;               case 0x03:         // 4 keyvalue
 00B0           ;               value=0x04;        // 4 key
 00B0 04E0              ldi R16,4
 00B2                   .dbline 93
 00B2           ;               break;
 00B2 01C0              xjmp L14
 00B4           L13:
 00B4                   .dbline 95
 00B4           ;               default:
 00B4           ;               value=0xff;
 00B4 0FEF              ldi R16,255
 00B6                   .dbline 96
 00B6           ;               break;
 00B6           L14:
 00B6                   .dbline 98
 00B6           ;       }
 00B6           ;       return value;
 00B6                   .dbline -2
 00B6           L12:
 00B6                   .dbline 0 ; func end
 00B6 0895              ret
 00B8                   .dbsym r value 16 c
 00B8                   .dbsym r key1 16 c
 00B8                   .dbend
 00B8                   .dbfunc e keyvalue3 _keyvalue3 fc
 00B8           ;          value -> R16
 00B8           ;           key1 -> R16
                        .even
 00B8           _keyvalue3::
 00B8                   .dbline -1
 00B8                   .dbline 101
 00B8           ; }
 00B8           ; unsigned char keyvalue3(void)
 00B8           ; {
 00B8                   .dbline 103
 00B8           ;       unsigned char key1,value;
 00B8           ;       DDRC=0xFF;
 00B8 8FEF              ldi R24,255
 00BA 84BB              out 0x14,R24
 00BC                   .dbline 104
 00BC           ;       SET_KEY3();
 00BC A398              cbi 0x14,3
 00BE                   .dbline 105
 00BE           ;       SET_KEY4();
 00BE A498              cbi 0x14,4
 00C0                   .dbline 106
 00C0           ;       CLEAR_KEY5();
 00C0 A59A              sbi 0x14,5
 00C2                   .dbline 107
 00C2           ;       SET_KEY6();
 00C2 A698              cbi 0x14,6
 00C4                   .dbline 109
 00C4           ;       
 00C4           ;       SET_KEY0();
 00C4 A098              cbi 0x14,0
 00C6                   .dbline 110
 00C6           ;       SET_KEY1();
 00C6 A198              cbi 0x14,1
 00C8                   .dbline 111
 00C8           ;       SET_KEY2();
 00C8 A298              cbi 0x14,2
 00CA                   .dbline 112
 00CA           ;       DDRC=PORTC=0;
 00CA 2224              clr R2
 00CC 25BA              out 0x15,R2
 00CE 24BA              out 0x14,R2
 00D0                   .dbline 113
 00D0           ;       key1=PINC;
 00D0 03B3              in R16,0x13
 00D2                   .dbline 114
 00D2           ;       key1=key1&0x07;
 00D2 0770              andi R16,7
 00D4                   .dbline 116
 00D4           ; //    key1=key1<<1;
 00D4           ;       switch(key1)
 00D4 1127              clr R17
 00D6 0330              cpi R16,3
 00D8 E0E0              ldi R30,0
 00DA 1E07              cpc R17,R30
 00DC 69F0              breq L25
 00DE 0530              cpi R16,5
 00E0 E0E0              ldi R30,0
 00E2 1E07              cpc R17,R30
 00E4 39F0              breq L24
 00E6 0630              cpi R16,6
 00E8 E0E0              ldi R30,0
 00EA 1E07              cpc R17,R30
 00EC 09F0              breq L23
 00EE 06C0              xjmp L20
 00F0           X2:
 00F0                   .dbline 117
 00F0           ;       {
 00F0           L23:
 00F0                   .dbline 119
 00F0           ;               case 0x06:         // 9 keyvalue

⌨️ 快捷键说明

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