📄 signal.lis
字号:
002A 8FEF ldi R24,255
002C 87BB out 0x17,R24
002E .dbline 50
002E ; PORTC = 0x00;
002E 25BA out 0x15,R2
0030 .dbline 51
0030 ; DDRC = 0xff;
0030 84BB out 0x14,R24
0032 .dbline 52
0032 ; PORTD = 0x00;
0032 22BA out 0x12,R2
0034 .dbline 53
0034 ; DDRD = 0x01;
0034 81E0 ldi R24,1
0036 81BB out 0x11,R24
0038 .dbline 54
0038 ; PORTE = 0x00;
0038 27B8 out 0x7,R2
003A .dbline 55
003A ; DDRE = 0x00;
003A 26B8 out 0x6,R2
003C .dbline -2
003C L10:
003C .dbline 0 ; func end
003C 0895 ret
003E .dbend
003E .dbfunc e timer1_init _timer1_init fV
.even
003E _timer1_init::
003E .dbline -1
003E .dbline 63
003E ; }
003E ;
003E ; //TIMER1 initialize - prescale:1
003E ; // WGM: 0) Normal, TOP=0xFFFF
003E ; // desired value: 400uSec
003E ; // actual value: 400.000uSec (0.0%)
003E ; void timer1_init(void)
003E ; {
003E .dbline 64
003E ; TCCR1B = 0x00; //stop
003E 2224 clr R2
0040 2EBC out 0x2e,R2
0042 .dbline 65
0042 ; TCNT1H = th1; //setup //th1,tl1用来改变频率
0042 20900300 lds R2,_th1
0046 2DBC out 0x2d,R2
0048 .dbline 66
0048 ; TCNT1L = tl1;
0048 20900400 lds R2,_tl1
004C 2CBC out 0x2c,R2
004E .dbline 67
004E ; OCR1AH = 0x20;
004E 80E2 ldi R24,32
0050 8BBD out 0x2b,R24
0052 .dbline 68
0052 ; OCR1AL = 0x00;
0052 2224 clr R2
0054 2ABC out 0x2a,R2
0056 .dbline 69
0056 ; OCR1BH = 0x20;
0056 89BD out 0x29,R24
0058 .dbline 70
0058 ; OCR1BL = 0x00;
0058 28BC out 0x28,R2
005A .dbline 71
005A ; TCCR1A = 0x00;
005A 2FBC out 0x2f,R2
005C .dbline 72
005C ; TCCR1B = 0x01; //start Timer
005C 81E0 ldi R24,1
005E 8EBD out 0x2e,R24
0060 .dbline -2
0060 L11:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbend
.area vector(rom, abs)
.org 12
000C 31C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
0062 .dbfile E:\OK\DA0832\signal.C
0062 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0062 _timer1_ovf_isr::
0062 2A92 st -y,R2
0064 3A92 st -y,R3
0066 4A92 st -y,R4
0068 5A92 st -y,R5
006A 8A93 st -y,R24
006C 9A93 st -y,R25
006E EA93 st -y,R30
0070 FA93 st -y,R31
0072 2FB6 in R2,0x3f
0074 2A92 st -y,R2
0076 .dbline -1
0076 .dbline 76
0076 ; }
0076 ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
0076 ; void timer1_ovf_isr(void)
0076 ; {
0076 .dbline 77
0076 ; TCCR1B = 0x00; //stop
0076 2224 clr R2
0078 2EBC out 0x2e,R2
007A .dbline 78
007A ; TCNT1H = th1; //reload counter high value
007A 20900300 lds R2,_th1
007E 2DBC out 0x2d,R2
0080 .dbline 79
0080 ; TCNT1L = tl1; //reload counter low value
0080 20900400 lds R2,_tl1
0084 2CBC out 0x2c,R2
0086 .dbline 81
0086 ; //func=1; //设置调试点,计算时间
0086 ; if(func==1) //正弦波
0086 80910000 lds R24,_func
008A 8130 cpi R24,1
008C 79F4 brne L13
008E X2:
008E .dbline 82
008E ; {
008E .dbline 83
008E ; data1=sin_table[j++];
008E 20900100 lds R2,_j
0092 3324 clr R3
0094 822D mov R24,R2
0096 8F5F subi R24,255 ; addi 1
0098 80930100 sts _j,R24
009C 80E0 ldi R24,<_sin_table
009E 90E0 ldi R25,>_sin_table
00A0 E22D mov R30,R2
00A2 FF27 clr R31
00A4 E80F add R30,R24
00A6 F91F adc R31,R25
00A8 2490 lpm R2,Z
00AA 28BA out 0x18,R2
00AC .dbline 84
00AC ; }
00AC L13:
00AC .dbline 86
00AC ; //func++; //设置调试点
00AC ; if(func==2) // 锯齿波
00AC 80910000 lds R24,_func
00B0 8230 cpi R24,2
00B2 A9F4 brne L15
00B4 X3:
00B4 .dbline 87
00B4 ; {
00B4 .dbline 88
00B4 ; if(h<128)
00B4 80910000 lds R24,_h
00B8 8038 cpi R24,128
00BA 10F4 brsh L17
00BC X4:
00BC .dbline 89
00BC ; data1=h;
00BC 88BB out 0x18,R24
00BE 09C0 rjmp L18
00C0 L17:
00C0 .dbline 91
00C0 ; else
00C0 ; data1=255-h;
00C0 20900000 lds R2,_h
00C4 3324 clr R3
00C6 8FEF ldi R24,255
00C8 90E0 ldi R25,0
00CA 2C01 movw R4,R24
00CC 4218 sub R4,R2
00CE 5308 sbc R5,R3
00D0 48BA out 0x18,R4
00D2 L18:
00D2 .dbline 92
00D2 ; h++;
00D2 80910000 lds R24,_h
00D6 8F5F subi R24,255 ; addi 1
00D8 80930000 sts _h,R24
00DC .dbline 93
00DC ; }
00DC 13C0 rjmp L16
00DE L15:
00DE .dbline 94
00DE ; else if(func==3) // 方波
00DE 80910000 lds R24,_func
00E2 8330 cpi R24,3
00E4 79F4 brne L19
00E6 X5:
00E6 .dbline 95
00E6 ; {
00E6 .dbline 96
00E6 ; k++;
00E6 80910200 lds R24,_k
00EA 8F5F subi R24,255 ; addi 1
00EC 80930200 sts _k,R24
00F0 .dbline 97
00F0 ; if(k<=127)
00F0 8FE7 ldi R24,127
00F2 20900200 lds R2,_k
00F6 8215 cp R24,R2
00F8 18F0 brlo L21
00FA X6:
00FA .dbline 98
00FA ; data1=0x00;
00FA 2224 clr R2
00FC 28BA out 0x18,R2
00FE 02C0 rjmp L22
0100 L21:
0100 .dbline 100
0100 ; else
0100 ; data1=0xff;
0100 8FEF ldi R24,255
0102 88BB out 0x18,R24
0104 L22:
0104 .dbline 102
0104 ;
0104 ; }
0104 L19:
0104 L16:
0104 .dbline 104
0104 ;
0104 ; TCCR1B = 0x01; //start Timer
0104 81E0 ldi R24,1
0106 8EBD out 0x2e,R24
0108 .dbline -2
0108 L12:
0108 .dbline 0 ; func end
0108 2990 ld R2,y+
010A 2FBE out 0x3f,R2
010C F991 ld R31,y+
010E E991 ld R30,y+
0110 9991 ld R25,y+
0112 8991 ld R24,y+
0114 5990 ld R5,y+
0116 4990 ld R4,y+
0118 3990 ld R3,y+
011A 2990 ld R2,y+
011C 1895 reti
011E .dbend
011E .dbfunc e init_devices _init_devices fV
.even
011E _init_devices::
011E .dbline -1
011E .dbline 110
011E ; }
011E ;
011E ;
011E ; //call this routine to initialize all peripherals
011E ; void init_devices(void)
011E ; {
011E .dbline 112
011E ; //stop errant interrupts until set up
011E ; CLI(); //disable all interrupts
011E F894 cli
0120 .dbline 113
0120 ; port_init();
0120 82DF rcall _port_init
0122 .dbline 114
0122 ; timer1_init();
0122 8DDF rcall _timer1_init
0124 .dbline 116
0124 ;
0124 ; MCUCR = 0x02;
0124 82E0 ldi R24,2
0126 85BF out 0x35,R24
0128 .dbline 117
0128 ; EMCUCR = 0x00;
0128 2224 clr R2
012A 26BE out 0x36,R2
012C .dbline 118
012C ; GICR = 0x40;
012C 80E4 ldi R24,64
012E 8BBF out 0x3b,R24
0130 .dbline 119
0130 ; TIMSK = 0x80;
0130 80E8 ldi R24,128
0132 89BF out 0x39,R24
0134 .dbline 120
0134 ; SEI(); //re-enable interrupts
0134 7894 sei
0136 .dbline -2
0136 L23:
0136 .dbline 0 ; func end
0136 0895 ret
0138 .dbend
0138 .dbfunc e key_read _key_read fV
0138 ; num -> <dead>
0138 ; i -> R16
.even
0138 _key_read::
0138 .dbline -1
0138 .dbline 125
0138 ; //all peripherals are now initialized
0138 ; }
0138 ;
0138 ; void key_read()
0138 ; {
0138 .dbline 127
0138 ; uchar num,i;
0138 ; DDRA=0xff; // 都定义为输出
0138 8FEF ldi R24,255
013A 8ABB out 0x1a,R24
013C .dbline 128
013C ; PORTA=0xf0; // 高位输出高电平,低位输出低电平
013C 80EF ldi R24,240
013E 8BBB out 0x1b,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -