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

📄 mian.s

📁 meg16 的所有功能实例
💻 S
字号:
	.module mian.c
	.area text(rom, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\INT0中断测试\mian.c
	.dbfunc e Delay_us _Delay_us fV
;           time -> R16,R17
	.even
_Delay_us::
	.dbline -1
	.dbline 34
; /****************************************Copyright (c)**************************************************
; **                               ADEmbed Development Co.,LTD.                                    
; **                                 http://www.adembed.com
; **--------------File Info-------------------------------------------------------------------------------
; ** File name:			main.c
; ** Last modified Date:  2008-12-13
; ** Last Version:		1.0
; ** Descriptions:		INT0 Test.
; ** 
; **------------------------------------------------------------------------------------------------------
; ** Created by:			junbolu
; ** Created date:		2008-12-13
; ** Version:				1.0
; ** Descriptions:		
; **
; **------------------------------------------------------------------------------------------------------
; ** Modified by:
; ** Modified date:
; ** Version:
; ** Descriptions:
; **
; **------------------------------------------------------------------------------------------------------
; **ICC-AVR application builder : 2008-12-13
; **Target : M16
; **Crystal: 7.3728Mhz
; **PD2--->K0			PD7--->Sound_EN
; **描述:按下K0后会产生一个下降沿中断,中断处理程序将蜂鸣器使能1s。
; **      最简单的下降沿中断程序。
; *******************************************************************************************************/
; #include <iom16v.h>
; #include <macros.h>
; 
; void Delay_us(unsigned int time)
; {
L2:
	.dbline 35
L3:
	.dbline 35
; while(time--);
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L2
	tst R3
	brne L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 i
	.dbend
	.dbfunc e Delay_ms _Delay_ms fV
;           time -> R20,R21
	.even
_Delay_ms::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 39
; }
; 
; void Delay_ms(unsigned int time)
; {
	xjmp L7
L6:
	.dbline 41
	.dbline 42
	ldi R16,1000
	ldi R17,3
	xcall _Delay_us
	.dbline 43
L7:
	.dbline 40
; while(time--)
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L6
	tst R3
	brne L6
X1:
	.dbline -2
L5:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r time 20 i
	.dbend
	.dbfunc e INT0_Init _INT0_Init fV
	.even
_INT0_Init::
	.dbline -1
	.dbline 47
; 	{
; 	Delay_us(1000);
; 	}
; }
; 
; void INT0_Init()
; {
	.dbline 48
;  GIFR |=0X40;              //清楚标志位
	in R24,0x3a
	ori R24,64
	out 0x3a,R24
	.dbline 50
;  //MCUCR|=0X03; 			   //上升沿触发中断	
;  MCUCR|=0X02;MCUCR&=~0X01; //下降沿触发中断	
	in R24,0x35
	ori R24,2
	out 0x35,R24
	.dbline 50
	in R24,0x35
	andi R24,254
	out 0x35,R24
	.dbline 51
;  GICR |=0X40;  			   //使能外部中断0
	in R24,0x3b
	ori R24,64
	out 0x3b,R24
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 4
	jmp _int0_isr
	.area text(rom, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\INT0中断测试\mian.c
	.dbfunc e int0_isr _int0_isr fV
	.even
_int0_isr::
	xcall push_lset
	.dbline -1
	.dbline 56
; }
; 
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
	.dbline 57
;  PORTD&=~0X80;		//低电平驱动
	cbi 0x12,7
	.dbline 58
;  Delay_ms(100); 	//延时0.1s
	ldi R16,100
	ldi R17,0
	xcall _Delay_ms
	.dbline 59
;  PORTD|=0X80;		//高电平暂停
	sbi 0x12,7
	.dbline -2
L10:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 63
; }
; 
; void main(void)
; {
	.dbline 65
;   //蜂鸣器端口初始化
;  DDRD |=0x80;	   	//设置PD7为输出   	   						
	sbi 0x11,7
	.dbline 66
;  PORTD|=0x80;		//设置PD7为高电平
	sbi 0x12,7
	.dbline 69
;  
;  //按键0端口初始化
;  DDRD &=~0x04;	   	//设置PD2为输入   	   						
	cbi 0x11,2
	.dbline 70
;  PORTD|=0x04;		//设置PD2为上拉
	sbi 0x12,2
	.dbline 72
;  
;  INT0_Init();                 //TART初始化
	xcall _INT0_Init
	.dbline 73
;  SEI();                       //全局中断使能
	sei
L12:
	.dbline 75
	.dbline 76
L13:
	.dbline 74
	xjmp L12
X2:
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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