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

📄 test_t1.lis

📁 ad7135的avr16的源程序
💻 LIS
字号:
                        .module test_t1.c
                        .area data(ram, con, rel)
 0000           _N::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile test_t1.c
 0001                   .dbsym e N _N c
 0001           _T1OVF_NUM::
 0001                   .blkb 2
                        .area idata
 0001 0000              .word 0
                        .area data(ram, con, rel)
 0003                   .dbfile test_t1.c
 0003                   .dbsym e T1OVF_NUM _T1OVF_NUM i
                        .area text(rom, con, rel)
 0000                   .dbfile test_t1.c
 0000                   .dbfunc e INT0_INIT _INT0_INIT fV
                        .even
 0000           _INT0_INIT::
 0000                   .dbline -1
 0000                   .dbline 38
 0000           ; //************************************************* 
 0000           ; //测试功能:t1内部计数,如有溢出则计量溢出次数
 0000           ; //测试方法:
 0000           ; //测试结果:ok
 0000           ; //时钟频率:外部8m
 0000           ; //管脚分配:
 0000           ; //注意事项: 
 0000           ; //完成时间:2009.03.15 
 0000           ; //**************************************************
 0000           ; 
 0000           ; //************************************************** 
 0000           ; //头文件
 0000           ; //************************************************** 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; //************************************************** 
 0000           ; 
 0000           ; 
 0000           ; //***************************************************** 
 0000           ; //全局变量定义
 0000           ; //*****************************************************
 0000           ; unsigned char N=0;//用来区别是第一次外部中断还是第二次中断
 0000           ; unsigned int T1OVF_NUM=0;//用来计定时器T1的溢出次数
 0000           ; unsigned long int T1_NUM;//T1计的总时钟的个数
 0000           ; 
 0000           ; //***************************************************** 
 0000           ; //函数声明
 0000           ; //*****************************************************
 0000           ; void INT0_INIT(void);
 0000           ; void T1_INIT(void);
 0000           ; 
 0000           ; //***************************************************** 
 0000           ; //函数名称:void INT0_INIT(void)  
 0000           ; //函数功能:int0初始化,上升沿产生中断,使能中断
 0000           ; //注意事项:未开总中断
 0000           ; //*****************************************************
 0000           ; void INT0_INIT(void)
 0000           ; {      
 0000                   .dbline 39
 0000           ;        MCUCR|=((1<<ISC01)|(1<<ISC00));
 0000 85B7              in R24,0x35
 0002 8360              ori R24,3
 0004 85BF              out 0x35,R24
 0006                   .dbline 40
 0006           ;        GICR|=(1<<INT0);
 0006 8BB7              in R24,0x3b
 0008 8064              ori R24,64
 000A 8BBF              out 0x3b,R24
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C940700          jmp _INT0_INTERRUPT
                        .area text(rom, con, rel)
 000E                   .dbfile test_t1.c
 000E                   .dbfunc e INT0_INTERRUPT _INT0_INTERRUPT fV
                        .even
 000E           _INT0_INTERRUPT::
 000E 0A92              st -y,R0
 0010 1A92              st -y,R1
 0012 2A92              st -y,R2
 0014 3A92              st -y,R3
 0016 4A92              st -y,R4
 0018 5A92              st -y,R5
 001A 6A92              st -y,R6
 001C 7A92              st -y,R7
 001E 8A92              st -y,R8
 0020 9A92              st -y,R9
 0022 0A93              st -y,R16
 0024 1A93              st -y,R17
 0026 2A93              st -y,R18
 0028 3A93              st -y,R19
 002A 8A93              st -y,R24
 002C 9A93              st -y,R25
 002E EA93              st -y,R30
 0030 0FB6              in R0,0x3f
 0032 0A92              st -y,R0
 0034 0E940000          xcall push_gset2
 0038                   .dbline -1
 0038                   .dbline 49
 0038           ; }
 0038           ; //***************************************************** 
 0038           ; //函数名称:void INT0_INTERRUPT(void) 
 0038           ; //函数功能:中断处理,N+1
 0038           ; //注意事项: 
 0038           ; //*****************************************************
 0038           ; #pragma interrupt_handler INT0_INTERRUPT:2
 0038           ; void INT0_INTERRUPT(void)
 0038           ; {      
 0038                   .dbline 50
 0038           ;        if(!N)
 0038 20900000          lds R2,_N
 003C 2220              tst R2
 003E 49F4              brne L3
 0040                   .dbline 51
 0040           ;        {    
 0040                   .dbline 52
 0040           ;                 TCCR1B=0X01;//开始内部计数
 0040 81E0              ldi R24,1
 0042 8EBD              out 0x2e,R24
 0044                   .dbline 53
 0044           ;                 MCUCR=0X02;//设置外部中断0下降沿产生中断
 0044 82E0              ldi R24,2
 0046 85BF              out 0x35,R24
 0048                   .dbline 54
 0048           ;                 N++;
 0048 822D              mov R24,R2
 004A 8F5F              subi R24,255    ; addi 1
 004C 80930000          sts _N,R24
 0050                   .dbline 55
 0050           ;        }
 0050 45C0              xjmp L4
 0052           L3:
 0052                   .dbline 57
 0052                   .dbline 58
 0052 2224              clr R2
 0054 2EBC              out 0x2e,R2
 0056                   .dbline 59
 0056 F894              cli
 0058                   .dbline 61
 0058 20900100          lds R2,_T1OVF_NUM
 005C 30900200          lds R3,_T1OVF_NUM+1
 0060 4424              clr R4
 0062 5524              clr R5
 0064 30920100          sts _T1_NUM+1,R3
 0068 20920000          sts _T1_NUM,R2
 006C 50920300          sts _T1_NUM+2+1,R5
 0070 40920200          sts _T1_NUM+2,R4
 0074                   .dbline 62
 0074 40900200          lds R4,_T1_NUM+2
 0078 50900300          lds R5,_T1_NUM+2+1
 007C 20900000          lds R2,_T1_NUM
 0080 30900100          lds R3,_T1_NUM+1
 0084 40E0              ldi R20,0
 0086 50E0              ldi R21,0
 0088 61E0              ldi R22,1
 008A 70E0              ldi R23,0
 008C 5A92              st -y,R5
 008E 4A92              st -y,R4
 0090 3A92              st -y,R3
 0092 2A92              st -y,R2
 0094 8A01              movw R16,R20
 0096 9B01              movw R18,R22
 0098 0E940000          xcall empy32u
 009C 1801              movw R2,R16
 009E 2901              movw R4,R18
 00A0 6CB4              in R6,0x2c
 00A2 7DB4              in R7,0x2d
 00A4 8824              clr R8
 00A6 9924              clr R9
 00A8 260C              add R2,R6
 00AA 371C              adc R3,R7
 00AC 481C              adc R4,R8
 00AE 591C              adc R5,R9
 00B0 30920100          sts _T1_NUM+1,R3
 00B4 20920000          sts _T1_NUM,R2
 00B8 50920300          sts _T1_NUM+2+1,R5
 00BC 40920200          sts _T1_NUM+2,R4
 00C0                   .dbline 64
 00C0 2224              clr R2
 00C2 3324              clr R3
 00C4 30920200          sts _T1OVF_NUM+1,R3
 00C8 20920100          sts _T1OVF_NUM,R2
 00CC                   .dbline 65
 00CC 3DBC              out 0x2d,R3
 00CE 2CBC              out 0x2c,R2
 00D0                   .dbline 66
 00D0 85B7              in R24,0x35
 00D2 8360              ori R24,3
 00D4 85BF              out 0x35,R24
 00D6                   .dbline 67
 00D6 20920000          sts _N,R2
 00DA                   .dbline 68
 00DA 7894              sei
 00DC                   .dbline 69
 00DC           L4:
 00DC                   .dbline -2
 00DC           L2:
 00DC 0E940000          xcall pop_gset2
 00E0 0990              ld R0,y+
 00E2 0FBE              out 0x3f,R0
 00E4 E991              ld R30,y+
 00E6 9991              ld R25,y+
 00E8 8991              ld R24,y+
 00EA 3991              ld R19,y+
 00EC 2991              ld R18,y+
 00EE 1991              ld R17,y+
 00F0 0991              ld R16,y+
 00F2 9990              ld R9,y+
 00F4 8990              ld R8,y+
 00F6 7990              ld R7,y+
 00F8 6990              ld R6,y+
 00FA 5990              ld R5,y+
 00FC 4990              ld R4,y+
 00FE 3990              ld R3,y+
 0100 2990              ld R2,y+
 0102 1990              ld R1,y+
 0104 0990              ld R0,y+
 0106                   .dbline 0 ; func end
 0106 1895              reti
 0108                   .dbend
 0108                   .dbfunc e T1_INIT _T1_INIT fV
                        .even
 0108           _T1_INIT::
 0108                   .dbline -1
 0108                   .dbline 77
 0108           ;        else
 0108           ;        {    
 0108           ;                 TCCR1B=0X00;//定时器t1停止工作
 0108           ;                 CLI();//关中断,进行数据处理
 0108           ;                 //数据处理
 0108           ;                 T1_NUM=T1OVF_NUM;
 0108           ;                 T1_NUM=T1_NUM*65536+TCNT1;
 0108           ;                 //数据处理结束
 0108           ;                 T1OVF_NUM=0;
 0108           ;                 TCNT1=0X0000;
 0108           ;                 MCUCR|=((1<<ISC01)|(1<<ISC00));//设置外部上升沿中断
 0108           ;                 N=0;//
 0108           ;                 SEI();
 0108           ;        }
 0108           ; }
 0108           ; //************************************************** 
 0108           ; //函数名称:void T1_INIT(void)  
 0108           ; //函数功能:内部定时
 0108           ; //注意事项,定时器未工作,定时器工作,需+TCCR1B=0X01;
 0108           ; //************************************************** 
 0108           ; void T1_INIT(void)
 0108           ; {      
 0108                   .dbline 78
 0108           ;        TCCR1A=0X00;
 0108 2224              clr R2
 010A 2FBC              out 0x2f,R2
 010C                   .dbline 79
 010C           ;        TCNT1=0X0000;
 010C 3324              clr R3
 010E 3DBC              out 0x2d,R3
 0110 2CBC              out 0x2c,R2
 0112                   .dbline 80
 0112           ;        TIMSK|=(1<<TOIE1);
 0112 89B7              in R24,0x39
 0114 8460              ori R24,4
 0116 89BF              out 0x39,R24
 0118                   .dbline -2
 0118           L5:
 0118                   .dbline 0 ; func end
 0118 0895              ret
 011A                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C948D00          jmp _T1_OVF
                        .area text(rom, con, rel)
 011A                   .dbfile test_t1.c
 011A                   .dbfunc e T1_OVF _T1_OVF fV
                        .even
 011A           _T1_OVF::
 011A 8A93              st -y,R24
 011C 9A93              st -y,R25
 011E 8FB7              in R24,0x3f
 0120 8A93              st -y,R24
 0122                   .dbline -1
 0122                   .dbline 89
 0122           ; }
 0122           ; //************************************************** 
 0122           ; //函数名称:void T1_OVF(void)  
 0122           ; //函数功能:ti溢出处理
 0122           ; //注意事项:
 0122           ; //**************************************************
 0122           ; #pragma interrupt_handler T1_OVF:9
 0122           ; void T1_OVF(void)
 0122           ; {      
 0122                   .dbline 90
 0122           ;        T1OVF_NUM++;
 0122 80910100          lds R24,_T1OVF_NUM
 0126 90910200          lds R25,_T1OVF_NUM+1
 012A 0196              adiw R24,1
 012C 90930200          sts _T1OVF_NUM+1,R25
 0130 80930100          sts _T1OVF_NUM,R24
 0134                   .dbline -2
 0134           L6:
 0134 8991              ld R24,y+
 0136 8FBF              out 0x3f,R24
 0138 9991              ld R25,y+
 013A 8991              ld R24,y+
 013C                   .dbline 0 ; func end
 013C 1895              reti
 013E                   .dbend
 013E                   .dbfunc e main _main fV
                        .even
 013E           _main::
 013E                   .dbline -1
 013E                   .dbline 96
 013E           ; }
 013E           ; //********************************************************** 
 013E           ; //主函数
 013E           ; //**********************************************************
 013E           ; void main(void)
 013E           ; {      
 013E                   .dbline 97
 013E           ;        CLI();
 013E F894              cli
 0140                   .dbline 98
 0140           ;        INT0_INIT();
 0140 5FDF              xcall _INT0_INIT
 0142                   .dbline 99
 0142           ;        T1_INIT();
 0142 E2DF              xcall _T1_INIT
 0144                   .dbline 100
 0144           ;        SEI();
 0144 7894              sei
 0146           L8:
 0146                   .dbline 102
 0146           L9:
 0146                   .dbline 101
 0146 FFCF              xjmp L8
 0148           X0:
 0148                   .dbline -2
 0148           L7:
 0148                   .dbline 0 ; func end
 0148 0895              ret
 014A                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile test_t1.c
 0000           _T1_NUM::
 0000                   .blkb 4
 0004                   .dbsym e T1_NUM _T1_NUM l

⌨️ 快捷键说明

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