📄 正弦波.lis
字号:
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 + -