📄 main.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 + -