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

📄 正弦波.lis

📁 AVR之ATMega16
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0042 2ABA              out 0x1a,R2
 0044                   .dbline 29
 0044           ;  PORTB = 0x00;
 0044 28BA              out 0x18,R2
 0046                   .dbline 30
 0046           ;  DDRB  = 0x00;
 0046 27BA              out 0x17,R2
 0048                   .dbline 31
 0048           ;  PORTC = 0x00;
 0048 25BA              out 0x15,R2
 004A                   .dbline 32
 004A           ;  DDRC  = 0x00;
 004A 24BA              out 0x14,R2
 004C                   .dbline 33
 004C           ;  PORTD = 0x00;
 004C 22BA              out 0x12,R2
 004E                   .dbline 34
 004E           ;  DDRD  = 0x20;
 004E 80E2              ldi R24,32
 0050 81BB              out 0x11,R24
 0052                   .dbline -2
 0052           L13:
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbend
 0054                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0054           _timer1_init::
 0054                   .dbline -1
 0054                   .dbline 40
 0054           ; }
 0054           ; 
 0054           ; 
 0054           ; //定时T1初始化
 0054           ; void timer1_init(void)
 0054           ; {
 0054                   .dbline 41
 0054           ;  TCCR1B = 0x00;//停止定时器
 0054 2224              clr R2
 0056 2EBC              out 0x2e,R2
 0058                   .dbline 42
 0058           ;  TIMSK |= 0x04;//中断允许
 0058 89B7              in R24,0x39
 005A 8460              ori R24,4
 005C 89BF              out 0x39,R24
 005E                   .dbline 43
 005E           ;  TIFR   = 0x00;//中断标志位
 005E 28BE              out 0x38,R2
 0060                   .dbline 44
 0060           ;  TCNT1H = 0x00;
 0060 2DBC              out 0x2d,R2
 0062                   .dbline 45
 0062           ;  TCNT1L = 0x00;//初始值
 0062 2CBC              out 0x2c,R2
 0064                   .dbline 46
 0064           ;  OCR1AH = 0x00;
 0064 2BBC              out 0x2b,R2
 0066                   .dbline 47
 0066           ;  OCR1AL = 0xD0;//匹配A值
 0066 80ED              ldi R24,208
 0068 8ABD              out 0x2a,R24
 006A                   .dbline 48
 006A           ;  OCR1BH = 0x00;
 006A 29BC              out 0x29,R2
 006C                   .dbline 49
 006C           ;  OCR1BL = 0x7F;//匹配B值
 006C 8FE7              ldi R24,127
 006E 88BD              out 0x28,R24
 0070                   .dbline 50
 0070           ;  ICR1H  = 0xFF;
 0070 8FEF              ldi R24,255
 0072 87BD              out 0x27,R24
 0074                   .dbline 51
 0074           ;  ICR1L  = 0xFF;//输入捕捉匹配值
 0074 86BD              out 0x26,R24
 0076                   .dbline 52
 0076           ;  TCCR1A = 0x81;
 0076 81E8              ldi R24,129
 0078 8FBD              out 0x2f,R24
 007A                   .dbline 53
 007A           ;  TCCR1B = 0x09;//启动定时器
 007A 89E0              ldi R24,9
 007C 8EBD              out 0x2e,R24
 007E                   .dbline -2
 007E           L14:
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C944000          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 0080                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\正弦波\正弦波.c
 0080                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0080           _timer1_ovf_isr::
 0080 2A92              st -y,R2
 0082 3A92              st -y,R3
 0084 8A93              st -y,R24
 0086 9A93              st -y,R25
 0088 EA93              st -y,R30
 008A FA93              st -y,R31
 008C 2FB6              in R2,0x3f
 008E 2A92              st -y,R2
 0090                   .dbline -1
 0090                   .dbline 60
 0090           ; }
 0090           ; 
 0090           ; 
 0090           ; //定时器T1溢出中断服务程序
 0090           ; #pragma interrupt_handler timer1_ovf_isr:9
 0090           ; void timer1_ovf_isr(void)
 0090           ; {
 0090                   .dbline 61
 0090           ;  x=x+1;
 0090 80910000          lds R24,_x
 0094 8F5F              subi R24,255    ; addi 1
 0096 80930000          sts _x,R24
 009A                   .dbline 62
 009A           ;  if (x>128)
 009A 80E8              ldi R24,128
 009C 20900000          lds R2,_x
 00A0 8215              cp R24,R2
 00A2 18F4              brsh L16
 00A4                   .dbline 63
 00A4           ;  x=0;
 00A4 2224              clr R2
 00A6 20920000          sts _x,R2
 00AA           L16:
 00AA                   .dbline 64
 00AA           ;  OCR1A=auc_SinParam[x];//auc_SinParam[x];取样点指针到比较匹配寄存器
 00AA 80E0              ldi R24,<_auc_SinParam
 00AC 90E0              ldi R25,>_auc_SinParam
 00AE E0910000          lds R30,_x
 00B2 FF27              clr R31
 00B4 E80F              add R30,R24
 00B6 F91F              adc R31,R25
 00B8 2080              ldd R2,z+0
 00BA 3324              clr R3
 00BC 3BBC              out 0x2b,R3
 00BE 2ABC              out 0x2a,R2
 00C0                   .dbline -2
 00C0           L15:
 00C0 2990              ld R2,y+
 00C2 2FBE              out 0x3f,R2
 00C4 F991              ld R31,y+
 00C6 E991              ld R30,y+
 00C8 9991              ld R25,y+
 00CA 8991              ld R24,y+
 00CC 3990              ld R3,y+
 00CE 2990              ld R2,y+
 00D0                   .dbline 0 ; func end
 00D0 1895              reti
 00D2                   .dbend
 00D2                   .dbfunc e init_devices _init_devices fV
                        .even
 00D2           _init_devices::
 00D2                   .dbline -1
 00D2                   .dbline 69
 00D2           ; }
 00D2           ; 
 00D2           ; 
 00D2           ; void init_devices(void)
 00D2           ; {
 00D2                   .dbline 70
 00D2           ;  CLI(); //禁止所有中断
 00D2 F894              cli
 00D4                   .dbline 71
 00D4           ;  MCUCR  = 0x00;//INT0、INT1中断触发方式
 00D4 2224              clr R2
 00D6 25BE              out 0x35,R2
 00D8                   .dbline 72
 00D8           ;  MCUCSR = 0x80;//禁止JTAG
 00D8 80E8              ldi R24,128
 00DA 84BF              out 0x34,R24
 00DC                   .dbline 73
 00DC           ;  GICR   = 0x00;//外部中断使能
 00DC 2BBE              out 0x3b,R2
 00DE                   .dbline 74
 00DE           ;  port_init();
 00DE AFDF              xcall _port_init
 00E0                   .dbline 75
 00E0           ;  timer1_init();
 00E0 B9DF              xcall _timer1_init
 00E2                   .dbline 76
 00E2           ;  SEI();//开全局中断
 00E2 7894              sei
 00E4                   .dbline -2
 00E4           L18:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend
 00E6                   .dbfunc e main _main fV
                        .even
 00E6           _main::
 00E6                   .dbline -1
 00E6                   .dbline 80
 00E6           ; }
 00E6           ; //主函数
 00E6           ; void main(void)
 00E6           ; {
 00E6                   .dbline 81
 00E6           ;  init_devices();
 00E6 F5DF              xcall _init_devices
 00E8 01C0              xjmp L21
 00EA           L20:
 00EA                   .dbline 84
 00EA                   .dbline 85
 00EA 0000              nop
 00EC                   .dbline 86
 00EC           L21:
 00EC                   .dbline 83
 00EC FECF              xjmp L20
 00EE           X1:
 00EE                   .dbline -2
 00EE           L19:
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend

⌨️ 快捷键说明

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