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

📄 keyboard.lis

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00F0           ;               value=0x09;        // 9 key
 00F0 09E0              ldi R16,9
 00F2                   .dbline 120
 00F2           ;               break;
 00F2 05C0              xjmp L21
 00F4           L24:
 00F4                   .dbline 122
 00F4           ;               case 0x05:         // 8 keyvalue
 00F4           ;               value=0x08;        // 8 key
 00F4 08E0              ldi R16,8
 00F6                   .dbline 123
 00F6           ;               break;
 00F6 03C0              xjmp L21
 00F8           L25:
 00F8                   .dbline 125
 00F8           ;               case 0x03:         // 7 keyvalue
 00F8           ;               value=0x07;        // 7 key
 00F8 07E0              ldi R16,7
 00FA                   .dbline 126
 00FA           ;               break;
 00FA 01C0              xjmp L21
 00FC           L20:
 00FC                   .dbline 128
 00FC           ;               default:
 00FC           ;               value=0xff;
 00FC 0FEF              ldi R16,255
 00FE                   .dbline 129
 00FE           ;               break;
 00FE           L21:
 00FE                   .dbline 131
 00FE           ;       }
 00FE           ;       return value;
 00FE                   .dbline -2
 00FE           L19:
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
 0100                   .dbsym r value 16 c
 0100                   .dbsym r key1 16 c
 0100                   .dbend
 0100                   .dbfunc e keyvalue4 _keyvalue4 fc
 0100           ;          value -> R16
 0100           ;           key1 -> R16
                        .even
 0100           _keyvalue4::
 0100                   .dbline -1
 0100                   .dbline 134
 0100           ; }
 0100           ; unsigned char keyvalue4(void)
 0100           ; {
 0100                   .dbline 136
 0100           ;       unsigned char key1,value;
 0100           ;       DDRC=0xFF;
 0100 8FEF              ldi R24,255
 0102 84BB              out 0x14,R24
 0104                   .dbline 137
 0104           ;       SET_KEY3();
 0104 A398              cbi 0x14,3
 0106                   .dbline 138
 0106           ;       SET_KEY4();
 0106 A498              cbi 0x14,4
 0108                   .dbline 139
 0108           ;       SET_KEY5();
 0108 A598              cbi 0x14,5
 010A                   .dbline 140
 010A           ;       CLEAR_KEY6();
 010A A69A              sbi 0x14,6
 010C                   .dbline 142
 010C           ;       
 010C           ;       SET_KEY0();
 010C A098              cbi 0x14,0
 010E                   .dbline 143
 010E           ;       SET_KEY1();
 010E A198              cbi 0x14,1
 0110                   .dbline 144
 0110           ;       SET_KEY2();
 0110 A298              cbi 0x14,2
 0112                   .dbline 145
 0112           ;       DDRC=PORTC=0;
 0112 2224              clr R2
 0114 25BA              out 0x15,R2
 0116 24BA              out 0x14,R2
 0118                   .dbline 146
 0118           ;       key1=PINC;
 0118 03B3              in R16,0x13
 011A                   .dbline 147
 011A           ;       key1=key1&0x07;
 011A 0770              andi R16,7
 011C                   .dbline 149
 011C           ; //    key1=key1<<1;
 011C           ;       switch(key1)
 011C 1127              clr R17
 011E 0330              cpi R16,3
 0120 E0E0              ldi R30,0
 0122 1E07              cpc R17,R30
 0124 69F0              breq L32
 0126 0530              cpi R16,5
 0128 E0E0              ldi R30,0
 012A 1E07              cpc R17,R30
 012C 39F0              breq L31
 012E 0630              cpi R16,6
 0130 E0E0              ldi R30,0
 0132 1E07              cpc R17,R30
 0134 09F0              breq L30
 0136 06C0              xjmp L27
 0138           X3:
 0138                   .dbline 150
 0138           ;       {
 0138           L30:
 0138                   .dbline 152
 0138           ;               case 0x06:        // # keyvalue
 0138           ;               value=0x0b;       // # key
 0138 0BE0              ldi R16,11
 013A                   .dbline 153
 013A           ;               break;
 013A 05C0              xjmp L28
 013C           L31:
 013C                   .dbline 155
 013C           ;               case 0x05:        // 0 keyvalue
 013C           ;               value=0x00;       // 0 key
 013C 0027              clr R16
 013E                   .dbline 156
 013E           ;               break;
 013E 03C0              xjmp L28
 0140           L32:
 0140                   .dbline 158
 0140           ;               case 0x03:        // * keyvalue
 0140           ;               value=0x0a;       // * key
 0140 0AE0              ldi R16,10
 0142                   .dbline 159
 0142           ;               break;
 0142 01C0              xjmp L28
 0144           L27:
 0144                   .dbline 161
 0144           ;               default:
 0144           ;               value=0xff;
 0144 0FEF              ldi R16,255
 0146                   .dbline 162
 0146           ;               break;
 0146           L28:
 0146                   .dbline 164
 0146           ;       }
 0146           ;       return value;
 0146                   .dbline -2
 0146           L26:
 0146                   .dbline 0 ; func end
 0146 0895              ret
 0148                   .dbsym r value 16 c
 0148                   .dbsym r key1 16 c
 0148                   .dbend
 0148                   .dbfunc e keyvalue _keyvalue fc
 0148           ;            cc4 -> R12
 0148           ;            cc3 -> R10
 0148           ;            cc2 -> R22
 0148           ;            cc1 -> R20
                        .even
 0148           _keyvalue::
 0148 0E940000          xcall push_gset4
 014C                   .dbline -1
 014C                   .dbline 167
 014C           ; }
 014C           ; unsigned char keyvalue(void)
 014C           ; {
 014C                   .dbline 169
 014C           ;                unsigned char cc1,cc2,cc3,cc4;
 014C           ;                cc1=keyvalue1();
 014C 6DDF              xcall _keyvalue1
 014E 402F              mov R20,R16
 0150                   .dbline 170
 0150           ;                cc2=keyvalue2();
 0150 8FDF              xcall _keyvalue2
 0152 602F              mov R22,R16
 0154                   .dbline 171
 0154           ;                cc3=keyvalue3();
 0154 B1DF              xcall _keyvalue3
 0156 A02E              mov R10,R16
 0158                   .dbline 172
 0158           ;                cc4=keyvalue4();
 0158 D3DF              xcall _keyvalue4
 015A C02E              mov R12,R16
 015C                   .dbline 173
 015C           ;                if(cc4!=0xff)
 015C 0F3F              cpi R16,255
 015E 29F0              breq L34
 0160                   .dbline 174
 0160           ;                {
 0160                   .dbline 175
 0160           ;                       beep(1);
 0160 01E0              ldi R16,1
 0162 0E940000          xcall _beep
 0166                   .dbline 176
 0166           ;                       return cc4;
 0166 0C2D              mov R16,R12
 0168 17C0              xjmp L33
 016A           L34:
 016A                   .dbline 178
 016A           ;                }
 016A           ;                if(cc3!=0xff)
 016A 8A2D              mov R24,R10
 016C 8F3F              cpi R24,255
 016E 29F0              breq L36
 0170                   .dbline 179
 0170           ;                {
 0170                   .dbline 180
 0170           ;                       beep(1);
 0170 01E0              ldi R16,1
 0172 0E940000          xcall _beep
 0176                   .dbline 181
 0176           ;                       return cc3;
 0176 0A2D              mov R16,R10
 0178 0FC0              xjmp L33
 017A           L36:
 017A                   .dbline 183
 017A           ;                }
 017A           ;                if(cc2!=0xff)
 017A 6F3F              cpi R22,255
 017C 29F0              breq L38
 017E                   .dbline 184
 017E           ;                {
 017E                   .dbline 185
 017E           ;                       beep(1);
 017E 01E0              ldi R16,1
 0180 0E940000          xcall _beep
 0184                   .dbline 186
 0184           ;                       return cc2;
 0184 062F              mov R16,R22
 0186 08C0              xjmp L33
 0188           L38:
 0188                   .dbline 188
 0188           ;                }
 0188           ;                if(cc1!=0xff)
 0188 4F3F              cpi R20,255
 018A 29F0              breq L40
 018C                   .dbline 189
 018C           ;                {
 018C                   .dbline 190
 018C           ;                       beep(1);
 018C 01E0              ldi R16,1
 018E 0E940000          xcall _beep
 0192                   .dbline 191
 0192           ;                       return cc1;
 0192 042F              mov R16,R20
 0194 01C0              xjmp L33
 0196           L40:
 0196                   .dbline 193
 0196           ;                }
 0196           ;                return 0xff;
 0196 0FEF              ldi R16,255
 0198                   .dbline -2
 0198           L33:
 0198 0E940000          xcall pop_gset4
 019C                   .dbline 0 ; func end
 019C 0895              ret
 019E                   .dbsym r cc4 12 c
 019E                   .dbsym r cc3 10 c
 019E                   .dbsym r cc2 22 c
 019E                   .dbsym r cc1 20 c
 019E                   .dbend
 019E                   .dbfunc e delay1 _delay1 fV
 019E           ;              i -> R20
 019E           ;              j -> R22,R23
 019E           ;         second -> R16
                        .even
 019E           _delay1::
 019E 0E940000          xcall push_gset2
 01A2                   .dbline -1
 01A2                   .dbline 198
 01A2           ; }
 01A2           ; 
 01A2           ; 
 01A2           ; void delay1(unsigned char second)
 01A2           ; {
 01A2                   .dbline 201
 01A2           ;        unsigned char i;
 01A2           ;        unsigned int j;
 01A2           ;        for(i=0;i<second;i++)
 01A2 4427              clr R20
 01A4 0AC0              xjmp L46
 01A6           L43:
 01A6                   .dbline 202
 01A6 6627              clr R22
 01A8 7727              clr R23
 01AA 02C0              xjmp L50
 01AC           L47:
 01AC                   .dbline 202
 01AC           L48:
 01AC                   .dbline 202
 01AC 6F5F              subi R22,255  ; offset = 1
 01AE 7F4F              sbci R23,255
 01B0           L50:
 01B0                   .dbline 202
 01B0 683E              cpi R22,232
 01B2 EDEF              ldi R30,253
 01B4 7E07              cpc R23,R30
 01B6 D0F3              brlo L47
 01B8           L44:
 01B8                   .dbline 201
 01B8 4395              inc R20
 01BA           L46:
 01BA                   .dbline 201
 01BA 4017              cp R20,R16
 01BC A0F3              brlo L43
 01BE                   .dbline -2
 01BE           L42:
 01BE 0E940000          xcall pop_gset2
 01C2                   .dbline 0 ; func end
 01C2 0895              ret
 01C4                   .dbsym r i 20 c
 01C4                   .dbsym r j 22 i
 01C4                   .dbsym r second 16 c
 01C4                   .dbend
 01C4                   .dbfunc e CMP_STRING _CMP_STRING fc
 01C4           ;             ct -> R20
 01C4           ;            len -> R22
 01C4           ;            pt2 -> R18,R19
 01C4           ;            pt1 -> R16,R17
                        .even
 01C4           _CMP_STRING::
 01C4 0E940000          xcall push_gset2
 01C8 6C81              ldd R22,y+4
 01CA                   .dbline -1
 01CA                   .dbline 206
 01CA           ;               for(j=0;j<65000;j++);
 01CA           ; }             
 01CA           ; unsigned char CMP_STRING(unsigned char *pt1,
 01CA           ;                          unsigned char *pt2,unsigned char len)
 01CA           ; {
 01CA                   .dbline 208
 01CA           ;      unsigned char ct;         // fixed lenth 4.
 01CA           ;      for (ct=0;ct<len;ct++)
 01CA 4427              clr R20
 01CC 0BC0              xjmp L55
 01CE           L52:
 01CE                   .dbline 209
 01CE           ;      {
 01CE                   .dbline 210
 01CE           ;          if (*pt1++ != *pt2++)
 01CE F901              movw R30,R18
 01D0 2190              ld R2,Z+
 01D2 9F01              movw R18,R30
 01D4 F801              movw R30,R16
 01D6 3190              ld R3,Z+
 01D8 8F01              movw R16,R30
 01DA 3214              cp R3,R2
 01DC 11F0              breq L56
 01DE                   .dbline 211
 01DE           ;          return 1;
 01DE 01E0              ldi R16,1
 01E0 04C0              xjmp L51
 01E2           L56:
 01E2                   .dbline 212
 01E2           L53:
 01E2                   .dbline 208
 01E2 4395              inc R20
 01E4           L55:
 01E4                   .dbline 208
 01E4 4617              cp R20,R22
 01E6 98F3              brlo L52
 01E8                   .dbline 213
 01E8           ;      }
 01E8           ;      return 0;                 // equal return 0.     
 01E8 0027              clr R16
 01EA                   .dbline -2
 01EA           L51:
 01EA 0E940000          xcall pop_gset2
 01EE                   .dbline 0 ; func end
 01EE 0895              ret
 01F0                   .dbsym r ct 20 c
 01F0                   .dbsym r len 22 c
 01F0                   .dbsym r pt2 18 pc
 01F0                   .dbsym r pt1 16 pc
 01F0                   .dbend

⌨️ 快捷键说明

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