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

📄 main.s

📁 键盘操作 键盘扫描 用的是单片机mega16
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile D:\avrvi\democode\key_4\source\main.c
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 15
; /************************************************************
; 文   件:main.c
; 用   途:演示矩阵键盘的库函数和七段数码管的库函数的使用
; Target : M16
; Crystal: 1.0000Mhz
; 说   明:标有[]的为与key_3中不同的地方
; 创   建:2008.2.20
; 修   改:2008.2.20
; Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
; ************************************************************/
; 
; #include "config.h"
; 
; void main(void)
; {
	.dbline 16
;   uint8 i=0;
	clr R20
	.dbline 18
;   
;   key_board_int();						//矩阵按键初始化
	xcall _key_board_int
	.dbline 19
;   Seg7_Led_Init();						//七段数码管显示初始化
	xcall _Seg7_Led_Init
	.dbline 21
;   
;   key_int_init();						//中断初始化  []
	xcall _key_int_init
	.dbline 22
;   SEI();								//开全局中断  []
	sei
	xjmp L3
L2:
	.dbline 25
;   
;   while(1)
;   {
	.dbline 26
;    if(KEY_FLAG)							   //如果有键按下,此变量在key_board.c中定义,并会在中断中改变 []
	lds R2,_KEY_FLAG
	tst R2
	breq L5
	.dbline 27
;    {
	.dbline 28
;     KEY_FLAG = 0; 						   //         []							
	clr R2
	sts _KEY_FLAG,R2
	.dbline 30
; 	
; 	if(key!=0xFF)						   //key为在key_board.c中定义的全局变量
	lds R24,_key
	cpi R24,255
	breq L7
	.dbline 31
; 	{
	.dbline 32
; 	 for(i=3;i!=0;i--)						//左移位显示
	ldi R20,3
	xjmp L12
L9:
	.dbline 33
	.dbline 34
	ldi R24,<_Seg7_Led_Buf-1
	ldi R25,>_Seg7_Led_Buf-1
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_Seg7_Led_Buf
	ldi R25,>_Seg7_Led_Buf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 35
L10:
	.dbline 32
	dec R20
L12:
	.dbline 32
	tst R20
	brne L9
	.dbline 36
; 	 {
; 	 Seg7_Led_Buf[i]=Seg7_Led_Buf[i-1];
; 	 }
; 	 Seg7_Led_Buf[0]=key;			   		
	lds R2,_key
	sts _Seg7_Led_Buf,R2
	.dbline 37
; 	}
L7:
	.dbline 62
; 
; 	/*
; 	if(key!=0xFF)							//0xFF为无效按键
; 	{
; 	 switch(key)							//判断按键进行相关操作
; 	 {
; 	  case 'A':
; 	    PORTA ^=(1<<PA0);
; 		break;
; 	  case 'B':
; 	    PORTA ^=(1<<PA1);
; 		break;
; 	  case 'C':
; 	    PORTA ^=(1<<PA2);
; 		break;
; 	  case 'D':
; 	    PORTA ^=(1<<PA3);
; 		break;
; 	  default:
; 	    break;
; 	 } //end switch
; 	}//end if(key!=0xFF)
; 	*/
; 	
;    }//end if(HAVE_KEY_DOWN)
L5:
	.dbline 65
	xcall _Seg7_Led_Update
	.dbline 66
L3:
	.dbline 24
	xjmp L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend

⌨️ 快捷键说明

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