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

📄 key_ment.lis

📁 基于ATmega8开发的关于医疗康复的机器人
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module Key_ment.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\Work\Data\程序\修订版~1.1\Key_ment.c
 0000                   .dbfunc e Keyscan _Keyscan fc
 0000           ;        KeyCode -> R20
                        .even
 0000           _Keyscan::
 0000 4A93              st -y,R20
 0002 5A93              st -y,R21
 0004                   .dbline -1
 0004                   .dbline 19
 0004           ; /*****************************************************
 0004           ; * File name      : Keyscan.C
 0004           ; * Description    : Header file of  LCD_S.H
 0004           ; * Platform       : ICCAVR 
 0004           ; * Author         : xiao xue      
 0004           ; * Email          : ay1509@yahoo.com
 0004           ; * Date           : 2008-03-13
 0004           ; * Description    :Keyboard Scan
 0004           ; *********************头文件**************************/
 0004           ; #include "main_H.h"
 0004           ; /***************************************************
 0004           ; *函    数:KeyScan
 0004           ; *函数功能:按键扫描程序
 0004           ; *入口参数:无
 0004           ; *返 回 值:键码
 0004           ; *备    注:
 0004           ; ****************************************************/
 0004           ; uchar Keyscan(void)
 0004           ; {
 0004                   .dbline 20
 0004           ;    uchar KeyCode=0x00;
 0004 4427              clr R20
 0006                   .dbline 21
 0006           ;    if((PIND&0xfb)==0xfb)      //判断有无键按下,没有则直接返回
 0006 80B3              in R24,0x10
 0008 8B7F              andi R24,251
 000A 8B3F              cpi R24,251
 000C 11F4              brne L2
 000E           X0:
 000E                   .dbline 22
 000E           ;               return(0);
 000E 0027              clr R16
 0010 43C0              rjmp L1
 0012           L2:
 0012                   .dbline 23
 0012           ;    else{ 
 0012                   .dbline 24
 0012           ;       delay_nms(15);          //延时去抖动            
 0012 0FE0              ldi R16,15
 0014 10E0              ldi R17,0
 0016 00D0              rcall _delay_nms
 0018                   .dbline 25
 0018           ;               KeyCode = PIND&0xfb;//获得D口键值
 0018 40B3              in R20,0x10
 001A 4B7F              andi R20,251
 001C                   .dbline 26
 001C           ;               if (KeyCode == 0xfb)//再次继续判断有无键按下,无则返回
 001C 4B3F              cpi R20,251
 001E 11F4              brne L7
 0020           X1:
 0020                   .dbline 27
 0020           ;               return(0);  
 0020 0027              clr R16
 0022 3AC0              rjmp L1
 0024           L6:
 0024                   .dbline 28
 0024           ;               while ((PIND&0xfb) != 0xfb);    //等待弹起
 0024           L7:
 0024                   .dbline 28
 0024 80B3              in R24,0x10
 0026 8B7F              andi R24,251
 0028 8B3F              cpi R24,251
 002A E1F7              brne L6
 002C           X2:
 002C                   .dbline 29
 002C           ;                       delay_nms(15);                          //延时去抖动
 002C 0FE0              ldi R16,15
 002E 10E0              ldi R17,0
 0030 00D0              rcall _delay_nms
 0032           L9:
 0032                   .dbline 30
 0032           ;               while ((PIND&0xfb) != 0xfb);    //再次判断是否弹起
 0032           L10:
 0032                   .dbline 30
 0032 80B3              in R24,0x10
 0034 8B7F              andi R24,251
 0036 8B3F              cpi R24,251
 0038 E1F7              brne L9
 003A           X3:
 003A                   .dbline 31
 003A           ;               switch(KeyCode){
 003A 5527              clr R21
 003C 4B3D              cpi R20,219
 003E E0E0              ldi R30,0
 0040 5E07              cpc R21,R30
 0042 19F1              breq L17
 0044           X4:
 0044 8BED              ldi R24,219
 0046 90E0              ldi R25,0
 0048 8417              cp R24,R20
 004A 9507              cpc R25,R21
 004C 6CF0              brlt L21
 004E           X5:
 004E           L20:
 004E 4B37              cpi R20,123
 0050 E0E0              ldi R30,0
 0052 5E07              cpc R21,R30
 0054 F1F0              breq L19
 0056           X6:
 0056 4B37              cpi R20,123
 0058 E0E0              ldi R30,0
 005A 5E07              cpc R21,R30
 005C E4F0              brlt L12
 005E           X7:
 005E           L22:
 005E 4B3B              cpi R20,187
 0060 E0E0              ldi R30,0
 0062 5E07              cpc R21,R30
 0064 A1F0              breq L18
 0066           X8:
 0066 17C0              rjmp L12
 0068           L21:
 0068 4B3E              cpi R20,235
 006A E0E0              ldi R30,0
 006C 5E07              cpc R21,R30
 006E 59F0              breq L16
 0070           X9:
 0070 4B3E              cpi R20,235
 0072 E0E0              ldi R30,0
 0074 5E07              cpc R21,R30
 0076 7CF0              brlt L12
 0078           X10:
 0078           L23:
 0078 433F              cpi R20,243
 007A E0E0              ldi R30,0
 007C 5E07              cpc R21,R30
 007E 09F0              breq L15
 0080           X11:
 0080 0AC0              rjmp L12
 0082           L15:
 0082                   .dbline 32
 0082           ;                       case 0xf3:return(1);break;              //按键1
 0082 01E0              ldi R16,1
 0084 09C0              rjmp L1
 0086           L16:
 0086                   .dbline 33
 0086           ;                       case 0xeb:return(2);break;              //按键2
 0086 02E0              ldi R16,2
 0088 07C0              rjmp L1
 008A           L17:
 008A                   .dbline 34
 008A           ;                       case 0xdb:return(3);break;              //按键3
 008A 03E0              ldi R16,3
 008C 05C0              rjmp L1
 008E           L18:
 008E                   .dbline 35
 008E           ;                       case 0xbb:return(4);break;              
 008E 04E0              ldi R16,4
 0090 03C0              rjmp L1
 0092           L19:
 0092                   .dbline 36
 0092           ;                       case 0x7b:return(5);break;              
 0092 05E0              ldi R16,5
 0094 01C0              rjmp L1
 0096           L12:
 0096                   .dbline 37
 0096           ;                       default: return(6);break;               //其他特殊情况   
 0096 06E0              ldi R16,6
 0098                   .dbline 37
 0098                   .dbline -2
 0098           L1:
 0098                   .dbline 0 ; func end
 0098 5991              ld R21,y+
 009A 4991              ld R20,y+
 009C 0895              ret
 009E                   .dbsym r KeyCode 20 c
 009E                   .dbend
 009E                   .dbfunc e KeyInit _KeyInit fV
                        .even
 009E           _KeyInit::
 009E                   .dbline -1
 009E                   .dbline 50
 009E           ;               }//end switch
 009E           ;    }//end else
 009E           ; }
 009E           ;       
 009E           ; /***************************************************
 009E           ; *函    数:KeyInit
 009E           ; *函数功能:按键端口初始化
 009E           ; *入口参数:无
 009E           ; *返 回 值:无
 009E           ; *备    注:
 009E           ; ****************************************************/
 009E           ; void KeyInit(void)
 009E           ; {
 009E                   .dbline 51
 009E           ;       DDRD=0x04;      //键盘初化
 009E 84E0              ldi R24,4
 00A0 81BB              out 0x11,R24
 00A2                   .dbline 52
 00A2           ;       PORTD=0xfb;     //键盘初值
 00A2 8BEF              ldi R24,251
 00A4 82BB              out 0x12,R24
 00A6                   .dbline -2
 00A6           L24:
 00A6                   .dbline 0 ; func end
 00A6 0895              ret
 00A8                   .dbend
 00A8                   .dbfunc e data_memory _data_memory fV
                        .even
 00A8           _data_memory::
 00A8                   .dbline -1
 00A8                   .dbline 63
 00A8           ;       
 00A8           ; }
 00A8           ; /***************************************************
 00A8           ; *函    数:data_memory
 00A8           ; *函数功能:对键盘设定的数据进行存储
 00A8           ; *入口参数:无
 00A8           ; *返 回 值:无
 00A8           ; *备    注:
 00A8           ; ****************************************************/
 00A8           ; void data_memory(void)
 00A8           ; {
 00A8                   .dbline 64
 00A8           ;       switch(temp){                                           //存储运动模式
 00A8 00910000          lds R16,_temp
 00AC 1127              clr R17
 00AE 0030              cpi R16,0
 00B0 0107              cpc R16,R17
 00B2 69F0              breq L29
 00B4           X12:
 00B4 0130              cpi R16,1
 00B6 E0E0              ldi R30,0
 00B8 1E07              cpc R17,R30
 00BA 81F0              breq L30
 00BC           X13:
 00BC 0230              cpi R16,2
 00BE E0E0              ldi R30,0
 00C0 1E07              cpc R17,R30
 00C2 99F0              breq L31
 00C4           X14:
 00C4 0330              cpi R16,3
 00C6 E0E0              ldi R30,0
 00C8 1E07              cpc R17,R30
 00CA B1F0              breq L32
 00CC           X15:
 00CC 1BC0              rjmp L26
 00CE           L29:
 00CE                   .dbline 65
 00CE           ;               case 0: p=Pretty;break;                 //天女散花
 00CE 80E0              ldi R24,<_Pretty
 00D0 90E0              ldi R25,>_Pretty
 00D2 90930100          sts _p+1,R25
 00D6 80930000          sts _p,R24
 00DA                   .dbline 65
 00DA 14C0              rjmp L27
 00DC           L30:
 00DC                   .dbline 66
 00DC           ;               case 1: p=Thest;break;                  //扩胸运动
 00DC 80E0              ldi R24,<_Thest
 00DE 90E0              ldi R25,>_Thest
 00E0 90930100          sts _p+1,R25
 00E4 80930000          sts _p,R24
 00E8                   .dbline 66
 00E8 0DC0              rjmp L27
 00EA           L31:
 00EA                   .dbline 67
 00EA           ;               case 2: p=Armup;break;                  //振臂运动
 00EA 80E0              ldi R24,<_Armup

⌨️ 快捷键说明

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