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

📄 mian.lis

📁 meg16 的所有功能实例
💻 LIS
字号:
                        .module mian.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\INT0中断测试\mian.c
 0000                   .dbfunc e Delay_us _Delay_us fV
 0000           ;           time -> R16,R17
                        .even
 0000           _Delay_us::
 0000                   .dbline -1
 0000                   .dbline 34
 0000           ; /****************************************Copyright (c)**************************************************
 0000           ; **                               ADEmbed Development Co.,LTD.                                    
 0000           ; **                                 http://www.adembed.com
 0000           ; **--------------File Info-------------------------------------------------------------------------------
 0000           ; ** File name:                 main.c
 0000           ; ** Last modified Date:  2008-12-13
 0000           ; ** Last Version:              1.0
 0000           ; ** Descriptions:              INT0 Test.
 0000           ; ** 
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; ** Created by:                        junbolu
 0000           ; ** Created date:              2008-12-13
 0000           ; ** Version:                           1.0
 0000           ; ** Descriptions:              
 0000           ; **
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; ** Modified by:
 0000           ; ** Modified date:
 0000           ; ** Version:
 0000           ; ** Descriptions:
 0000           ; **
 0000           ; **------------------------------------------------------------------------------------------------------
 0000           ; **ICC-AVR application builder : 2008-12-13
 0000           ; **Target : M16
 0000           ; **Crystal: 7.3728Mhz
 0000           ; **PD2--->K0                   PD7--->Sound_EN
 0000           ; **描述:按下K0后会产生一个下降沿中断,中断处理程序将蜂鸣器使能1s。
 0000           ; **      最简单的下降沿中断程序。
 0000           ; *******************************************************************************************************/
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; void Delay_us(unsigned int time)
 0000           ; {
 0000           L2:
 0000                   .dbline 35
 0000           L3:
 0000                   .dbline 35
 0000           ; while(time--);
 0000 1801              movw R2,R16
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006 2220              tst R2
 0008 D9F7              brne L2
 000A 3320              tst R3
 000C C9F7              brne L2
 000E           X0:
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r time 16 i
 0010                   .dbend
 0010                   .dbfunc e Delay_ms _Delay_ms fV
 0010           ;           time -> R20,R21
                        .even
 0010           _Delay_ms::
 0010 0E940000          xcall push_gset1
 0014 A801              movw R20,R16
 0016                   .dbline -1
 0016                   .dbline 39
 0016           ; }
 0016           ; 
 0016           ; void Delay_ms(unsigned int time)
 0016           ; {
 0016 03C0              xjmp L7
 0018           L6:
 0018                   .dbline 41
 0018                   .dbline 42
 0018 08EE              ldi R16,1000
 001A 13E0              ldi R17,3
 001C F1DF              xcall _Delay_us
 001E                   .dbline 43
 001E           L7:
 001E                   .dbline 40
 001E           ; while(time--)
 001E 1A01              movw R2,R20
 0020 4150              subi R20,1
 0022 5040              sbci R21,0
 0024 2220              tst R2
 0026 C1F7              brne L6
 0028 3320              tst R3
 002A B1F7              brne L6
 002C           X1:
 002C                   .dbline -2
 002C           L5:
 002C 0E940000          xcall pop_gset1
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r time 20 i
 0032                   .dbend
 0032                   .dbfunc e INT0_Init _INT0_Init fV
                        .even
 0032           _INT0_Init::
 0032                   .dbline -1
 0032                   .dbline 47
 0032           ;       {
 0032           ;       Delay_us(1000);
 0032           ;       }
 0032           ; }
 0032           ; 
 0032           ; void INT0_Init()
 0032           ; {
 0032                   .dbline 48
 0032           ;  GIFR |=0X40;              //清楚标志位
 0032 8AB7              in R24,0x3a
 0034 8064              ori R24,64
 0036 8ABF              out 0x3a,R24
 0038                   .dbline 50
 0038           ;  //MCUCR|=0X03;                          //上升沿触发中断     
 0038           ;  MCUCR|=0X02;MCUCR&=~0X01; //下降沿触发中断   
 0038 85B7              in R24,0x35
 003A 8260              ori R24,2
 003C 85BF              out 0x35,R24
 003E                   .dbline 50
 003E 85B7              in R24,0x35
 0040 8E7F              andi R24,254
 0042 85BF              out 0x35,R24
 0044                   .dbline 51
 0044           ;  GICR |=0X40;                            //使能外部中断0
 0044 8BB7              in R24,0x3b
 0046 8064              ori R24,64
 0048 8BBF              out 0x3b,R24
 004A                   .dbline -2
 004A           L9:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C942600          jmp _int0_isr
                        .area text(rom, con, rel)
 004C                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\INT0中断测试\mian.c
 004C                   .dbfunc e int0_isr _int0_isr fV
                        .even
 004C           _int0_isr::
 004C 0E940000          xcall push_lset
 0050                   .dbline -1
 0050                   .dbline 56
 0050           ; }
 0050           ; 
 0050           ; #pragma interrupt_handler int0_isr:2
 0050           ; void int0_isr(void)
 0050           ; {
 0050                   .dbline 57
 0050           ;  PORTD&=~0X80;                //低电平驱动
 0050 9798              cbi 0x12,7
 0052                   .dbline 58
 0052           ;  Delay_ms(100);       //延时0.1s
 0052 04E6              ldi R16,100
 0054 10E0              ldi R17,0
 0056 DCDF              xcall _Delay_ms
 0058                   .dbline 59
 0058           ;  PORTD|=0X80;         //高电平暂停
 0058 979A              sbi 0x12,7
 005A                   .dbline -2
 005A           L10:
 005A 0E940000          xcall pop_lset
 005E                   .dbline 0 ; func end
 005E 1895              reti
 0060                   .dbend
 0060                   .dbfunc e main _main fV
                        .even
 0060           _main::
 0060                   .dbline -1
 0060                   .dbline 63
 0060           ; }
 0060           ; 
 0060           ; void main(void)
 0060           ; {
 0060                   .dbline 65
 0060           ;   //蜂鸣器端口初始化
 0060           ;  DDRD |=0x80;         //设置PD7为输出                                                         
 0060 8F9A              sbi 0x11,7
 0062                   .dbline 66
 0062           ;  PORTD|=0x80;         //设置PD7为高电平
 0062 979A              sbi 0x12,7
 0064                   .dbline 69
 0064           ;  
 0064           ;  //按键0端口初始化
 0064           ;  DDRD &=~0x04;                //设置PD2为输入                                                         
 0064 8A98              cbi 0x11,2
 0066                   .dbline 70
 0066           ;  PORTD|=0x04;         //设置PD2为上拉
 0066 929A              sbi 0x12,2
 0068                   .dbline 72
 0068           ;  
 0068           ;  INT0_Init();                 //TART初始化
 0068 E4DF              xcall _INT0_Init
 006A                   .dbline 73
 006A           ;  SEI();                       //全局中断使能
 006A 7894              sei
 006C           L12:
 006C                   .dbline 75
 006C                   .dbline 76
 006C           L13:
 006C                   .dbline 74
 006C FFCF              xjmp L12
 006E           X2:
 006E                   .dbline -2
 006E           L11:
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbend

⌨️ 快捷键说明

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