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

📄 signal.lis

📁 简易信号发生器+Protues仿真,函数波形发生器产生波形表
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -