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

📄 timer.lis

📁 使用8880实现DTMF通信及拨号的程序.
💻 LIS
字号:
                        .module timer.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\Shuaihu\AVR\8880\timer.c
 0000                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0000           _timer1_init::
 0000                   .dbline -1
 0000                   .dbline 7
 0000           ; #include <iom8v.h>
 0000           ; #include "main.h"
 0000           ; #include "shell.h"
 0000           ; #include "8880.h"
 0000           ; #include "serial.h"
 0000           ; void timer1_init(void)
 0000           ; {
 0000                   .dbline 8
 0000           ;  TCCR1B = 0x00; //stop
 0000 2224              clr R2
 0002 2EBC              out 0x2e,R2
 0004                   .dbline 9
 0004           ;  TCNT1H = 0xE3; //setup
 0004 83EE              ldi R24,227
 0006 8DBD              out 0x2d,R24
 0008                   .dbline 10
 0008           ;  TCNT1L = 0xE1;
 0008 81EE              ldi R24,225
 000A 8CBD              out 0x2c,R24
 000C                   .dbline 11
 000C           ;  OCR1AH = 0x1C;
 000C 8CE1              ldi R24,28
 000E 8BBD              out 0x2b,R24
 0010                   .dbline 12
 0010           ;  OCR1AL = 0x1F;
 0010 8FE1              ldi R24,31
 0012 8ABD              out 0x2a,R24
 0014                   .dbline 13
 0014           ;  OCR1BH = 0x1C;
 0014 8CE1              ldi R24,28
 0016 89BD              out 0x29,R24
 0018                   .dbline 14
 0018           ;  OCR1BL = 0x1F;
 0018 8FE1              ldi R24,31
 001A 88BD              out 0x28,R24
 001C                   .dbline 15
 001C           ;  ICR1H  = 0x1C;
 001C 8CE1              ldi R24,28
 001E 87BD              out 0x27,R24
 0020                   .dbline 16
 0020           ;  ICR1L  = 0x1F;
 0020 8FE1              ldi R24,31
 0022 86BD              out 0x26,R24
 0024                   .dbline 17
 0024           ;  TCCR1A = 0x00;
 0024 2FBC              out 0x2f,R2
 0026                   .dbline 18
 0026           ;  TIMSK |= 0x04;
 0026 89B7              in R24,0x39
 0028 8460              ori R24,4
 002A 89BF              out 0x39,R24
 002C                   .dbline -2
 002C           L1:
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\Shuaihu\AVR\8880\timer.c
 0000           _x::
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\Shuaihu\AVR\8880\timer.c
 0002                   .dbsym e x _x I
                        .area vector(rom, abs)
                        .org 16
 0010 17C0              rjmp _timer1_ovf_isr
                        .area data(ram, con, rel)
 0002                   .dbfile E:\Shuaihu\AVR\8880\timer.c
                        .area text(rom, con, rel)
 002E                   .dbfile E:\Shuaihu\AVR\8880\timer.c
 002E                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
 002E           ;              i -> R20,R21
                        .even
 002E           _timer1_ovf_isr::
 002E 0A92              st -y,R0
 0030 1A92              st -y,R1
 0032 2A92              st -y,R2
 0034 3A92              st -y,R3
 0036 4A92              st -y,R4
 0038 5A92              st -y,R5
 003A 6A92              st -y,R6
 003C 7A92              st -y,R7
 003E 8A92              st -y,R8
 0040 9A92              st -y,R9
 0042 0A93              st -y,R16
 0044 1A93              st -y,R17
 0046 2A93              st -y,R18
 0048 3A93              st -y,R19
 004A 8A93              st -y,R24
 004C 9A93              st -y,R25
 004E AA93              st -y,R26
 0050 BA93              st -y,R27
 0052 EA93              st -y,R30
 0054 FA93              st -y,R31
 0056 0FB6              in R0,0x3f
 0058 0A92              st -y,R0
 005A 4A93              st -y,R20
 005C 5A93              st -y,R21
 005E                   .dbline -1
 005E                   .dbline 24
 005E           ; }
 005E           ; 
 005E           ; int x=0;
 005E           ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
 005E           ; void timer1_ovf_isr(void)
 005E           ; {
 005E                   .dbline 27
 005E           ;  int i;
 005E           ;  //TIMER1 has overflowed
 005E           ;  TCNT1H = 0xE3; //reload counter high value
 005E 83EE              ldi R24,227
 0060 8DBD              out 0x2d,R24
 0062                   .dbline 28
 0062           ;  TCNT1L = 0xE1; //reload counter low value
 0062 81EE              ldi R24,225
 0064 8CBD              out 0x2c,R24
 0066                   .dbline 29
 0066           ;  switch (sysoption.calling)
 0066 40910100          lds R20,_sysoption+1
 006A 5527              clr R21
 006C 4130              cpi R20,1
 006E E0E0              ldi R30,0
 0070 5E07              cpc R21,R30
 0072 29F0              breq L7
 0074           X0:
 0074 4230              cpi R20,2
 0076 E0E0              ldi R30,0
 0078 5E07              cpc R21,R30
 007A 09F1              breq L17
 007C           X1:
 007C 28C0              rjmp L3
 007E           L7:
 007E                   .dbline 31
 007E           ;  {            case 1:
 007E           ;                        if (sysoption.timer==40){
 007E 80910300          lds R24,_sysoption+3
 0082 8832              cpi R24,40
 0084 B1F4              brne L8
 0086           X2:
 0086                   .dbline 31
 0086                   .dbline 32
 0086           ;                               M8880_Handdown;
 0086 AD98              cbi 0x15,5
 0088                   .dbline 33
 0088           ;                               for (i=0;i<10;i++) delay(0xffff);
 0088 4427              clr R20
 008A 5527              clr R21
 008C           L11:
 008C                   .dbline 33
 008C 0FEF              ldi R16,65535
 008E 1FEF              ldi R17,255
 0090 00D0              rcall _delay
 0092           L12:
 0092                   .dbline 33
 0092 4F5F              subi R20,255  ; offset = 1
 0094 5F4F              sbci R21,255
 0096                   .dbline 33
 0096 4A30              cpi R20,10
 0098 E0E0              ldi R30,0
 009A 5E07              cpc R21,R30
 009C BCF3              brlt L11
 009E           X3:
 009E                   .dbline 34
 009E           ;                               serial_send(noresponse);
 009E 00910000          lds R16,_noresponse
 00A2 10910100          lds R17,_noresponse+1
 00A6 00D0              rcall _serial_send
 00A8                   .dbline 35
 00A8           ;                               sysoption.calling=0;
 00A8 2224              clr R2
 00AA 20920100          sts _sysoption+1,R2
 00AE                   .dbline 36
 00AE           ;                               TCCR1B=0x0;
 00AE 2EBC              out 0x2e,R2
 00B0                   .dbline 37
 00B0           ;                        }else   sysoption.timer++;
 00B0 0EC0              rjmp L4
 00B2           L8:
 00B2                   .dbline 37
 00B2 80910300          lds R24,_sysoption+3
 00B6 8F5F              subi R24,255    ; addi 1
 00B8 80930300          sts _sysoption+3,R24
 00BC                   .dbline 38
 00BC           ;                        break;
 00BC 08C0              rjmp L4
 00BE           L17:
 00BE                   .dbline 40
 00BE           ;               case 2:
 00BE           ;                               sysoption.calling=3;
 00BE 83E0              ldi R24,3
 00C0 80930100          sts _sysoption+1,R24
 00C4                   .dbline 41
 00C4           ;                               serial_send("answered");
 00C4 00E0              ldi R16,<L19
 00C6 10E0              ldi R17,>L19
 00C8 00D0              rcall _serial_send
 00CA                   .dbline 42
 00CA           ;                               TCCR1B=0;
 00CA 2224              clr R2
 00CC 2EBC              out 0x2e,R2
 00CE                   .dbline 43
 00CE           ;                               break;
 00CE           L3:
 00CE           L4:
 00CE                   .dbline -2
 00CE           L2:
 00CE                   .dbline 0 ; func end
 00CE 5991              ld R21,y+
 00D0 4991              ld R20,y+
 00D2 0990              ld R0,y+
 00D4 0FBE              out 0x3f,R0
 00D6 F991              ld R31,y+
 00D8 E991              ld R30,y+
 00DA B991              ld R27,y+
 00DC A991              ld R26,y+
 00DE 9991              ld R25,y+
 00E0 8991              ld R24,y+
 00E2 3991              ld R19,y+
 00E4 2991              ld R18,y+
 00E6 1991              ld R17,y+
 00E8 0991              ld R16,y+
 00EA 9990              ld R9,y+
 00EC 8990              ld R8,y+
 00EE 7990              ld R7,y+
 00F0 6990              ld R6,y+
 00F2 5990              ld R5,y+
 00F4 4990              ld R4,y+
 00F6 3990              ld R3,y+
 00F8 2990              ld R2,y+
 00FA 1990              ld R1,y+
 00FC 0990              ld R0,y+
 00FE 1895              reti
 0100                   .dbsym r i 20 I
 0100                   .dbend
                        .area data(ram, con, rel)
 0002                   .dbfile E:\Shuaihu\AVR\8880\timer.c
 0002           L19:
 0002                   .blkb 9
                        .area idata
 0002 616E73776572656400        .byte 'a,'n,'s,'w,'e,'r,'e,'d,0
                        .area data(ram, con, rel)
 000B                   .dbfile E:\Shuaihu\AVR\8880\timer.c
 000B           ;  }
 000B           ; }

⌨️ 快捷键说明

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