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

📄 main.lis

📁 键盘操作 键盘扫描 用的是单片机mega16
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\avrvi\democode\key_4\source\main.c
 0000                   .dbfunc e main _main fV
 0000           ;              i -> R20
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; /************************************************************
 0000           ; 文   件:main.c
 0000           ; 用   途:演示矩阵键盘的库函数和七段数码管的库函数的使用
 0000           ; Target : M16
 0000           ; Crystal: 1.0000Mhz
 0000           ; 说   明:标有[]的为与key_3中不同的地方
 0000           ; 创   建:2008.2.20
 0000           ; 修   改:2008.2.20
 0000           ; Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
 0000           ; ************************************************************/
 0000           ; 
 0000           ; #include "config.h"
 0000           ; 
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 16
 0000           ;   uint8 i=0;
 0000 4427              clr R20
 0002                   .dbline 18
 0002           ;   
 0002           ;   key_board_int();                                            //矩阵按键初始化
 0002 0E940000          xcall _key_board_int
 0006                   .dbline 19
 0006           ;   Seg7_Led_Init();                                            //七段数码管显示初始化
 0006 0E940000          xcall _Seg7_Led_Init
 000A                   .dbline 21
 000A           ;   
 000A           ;   key_int_init();                                             //中断初始化  []
 000A 0E940000          xcall _key_int_init
 000E                   .dbline 22
 000E           ;   SEI();                                                              //开全局中断  []
 000E 7894              sei
 0010 24C0              xjmp L3
 0012           L2:
 0012                   .dbline 25
 0012           ;   
 0012           ;   while(1)
 0012           ;   {
 0012                   .dbline 26
 0012           ;    if(KEY_FLAG)                                                          //如果有键按下,此变量在key_board.c中定义,并会在中断中改变 []
 0012 20900000          lds R2,_KEY_FLAG
 0016 2220              tst R2
 0018 F1F0              breq L5
 001A                   .dbline 27
 001A           ;    {
 001A                   .dbline 28
 001A           ;     KEY_FLAG = 0;                                                //         []                                                        
 001A 2224              clr R2
 001C 20920000          sts _KEY_FLAG,R2
 0020                   .dbline 30
 0020           ;       
 0020           ;       if(key!=0xFF)                                              //key为在key_board.c中定义的全局变量
 0020 80910000          lds R24,_key
 0024 8F3F              cpi R24,255
 0026 B9F0              breq L7
 0028                   .dbline 31
 0028           ;       {
 0028                   .dbline 32
 0028           ;        for(i=3;i!=0;i--)                                              //左移位显示
 0028 43E0              ldi R20,3
 002A 0FC0              xjmp L12
 002C           L9:
 002C                   .dbline 33
 002C                   .dbline 34
 002C 80E0              ldi R24,<_Seg7_Led_Buf-1
 002E 90E0              ldi R25,>_Seg7_Led_Buf-1
 0030 E42F              mov R30,R20
 0032 FF27              clr R31
 0034 E80F              add R30,R24
 0036 F91F              adc R31,R25
 0038 2080              ldd R2,z+0
 003A 80E0              ldi R24,<_Seg7_Led_Buf
 003C 90E0              ldi R25,>_Seg7_Led_Buf
 003E E42F              mov R30,R20
 0040 FF27              clr R31
 0042 E80F              add R30,R24
 0044 F91F              adc R31,R25
 0046 2082              std z+0,R2
 0048                   .dbline 35
 0048           L10:
 0048                   .dbline 32
 0048 4A95              dec R20
 004A           L12:
 004A                   .dbline 32
 004A 4423              tst R20
 004C 79F7              brne L9
 004E                   .dbline 36
 004E           ;        {
 004E           ;        Seg7_Led_Buf[i]=Seg7_Led_Buf[i-1];
 004E           ;        }
 004E           ;        Seg7_Led_Buf[0]=key;                                   
 004E 20900000          lds R2,_key
 0052 20920000          sts _Seg7_Led_Buf,R2
 0056                   .dbline 37
 0056           ;       }
 0056           L7:
 0056                   .dbline 62
 0056           ; 
 0056           ;       /*
 0056           ;       if(key!=0xFF)                                                   //0xFF为无效按键
 0056           ;       {
 0056           ;        switch(key)                                                    //判断按键进行相关操作
 0056           ;        {
 0056           ;         case 'A':
 0056           ;           PORTA ^=(1<<PA0);
 0056           ;               break;
 0056           ;         case 'B':
 0056           ;           PORTA ^=(1<<PA1);
 0056           ;               break;
 0056           ;         case 'C':
 0056           ;           PORTA ^=(1<<PA2);
 0056           ;               break;
 0056           ;         case 'D':
 0056           ;           PORTA ^=(1<<PA3);
 0056           ;               break;
 0056           ;         default:
 0056           ;           break;
 0056           ;        } //end switch
 0056           ;       }//end if(key!=0xFF)
 0056           ;       */
 0056           ;       
 0056           ;    }//end if(HAVE_KEY_DOWN)
 0056           L5:
 0056                   .dbline 65
 0056 0E940000          xcall _Seg7_Led_Update
 005A                   .dbline 66
 005A           L3:
 005A                   .dbline 24
 005A DBCF              xjmp L2
 005C           X0:
 005C                   .dbline -2
 005C           L1:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbsym r i 20 c
 005E                   .dbend

⌨️ 快捷键说明

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