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

📄 motor_main.lis

📁 基于AVRICC开发环境的ATMEL mega16单片机的电机速度控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module motor_main.c
                        .area code(ram, con, rel)
                        .area lit(rom, con, rel)
 0000           _table::
 0000 BD84              .byte 189,132
 0002 D9CD              .byte 217,205
 0004 E46D              .byte 228,'m
 0006 7D85              .byte 125,133
 0008 FDED              .byte 253,237
 000A                   .dbfile C:\icc\speedloop\motor_main.c
 000A                   .dbsym e table _table A[10:10]kc
                        .area data(ram, con, rel)
 0000                   .dbfile C:\icc\speedloop\motor_main.c
 0000           _ledbuff::
 0000                   .blkb 2
                        .area idata
 0000 BDBD              .byte 189,189
                        .area data(ram, con, rel)
 0002                   .dbfile C:\icc\speedloop\motor_main.c
 0002                   .blkb 2
                        .area idata
 0002 BDBD              .byte 189,189
                        .area data(ram, con, rel)
 0004                   .dbfile C:\icc\speedloop\motor_main.c
 0004                   .dbsym e ledbuff _ledbuff A[4:4]c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\icc\speedloop\motor_main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 19
 0000           ; //ICC-AVR application builder : 2005-8-3 
 0000           ; // Target : M16
 0000           ; // Crystal: 4.0000Mhz
 0000           ; //closed speed loop controlling 
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #pragma data:code
 0000           ; const unsigned char table[]={0xbd,0x84,0xd9,0xcd,0xe4,0x6d,0x7d,0x85,0xfd,0xed};//7segment
 0000           ; #pragma data:data
 0000           ; unsigned char ledbuff[]={0xbd,0xbd,0xbd,0xbd};
 0000           ; 
 0000           ; unsigned char adc_res8,count;
 0000           ; unsigned char ad_mux;
 0000           ; unsigned int adc_res16,count16;
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 20
 0000           ;  PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 21
 0004           ;  DDRA  = 0xF0;//HIGH 4BIT AS OUTPUT
 0004 80EF              ldi R24,240
 0006 8ABB              out 0x1a,R24
 0008                   .dbline 22
 0008           ;  PORTB = 0x00;
 0008 28BA              out 0x18,R2
 000A                   .dbline 23
 000A           ;  DDRB  = 0xfd;//t1 input other output
 000A 8DEF              ldi R24,253
 000C 87BB              out 0x17,R24
 000E                   .dbline 24
 000E           ;  PORTC = 0x00; //m103 output only
 000E 25BA              out 0x15,R2
 0010                   .dbline 25
 0010           ;  DDRC  = 0x00;
 0010 24BA              out 0x14,R2
 0012                   .dbline 26
 0012           ;  PORTD = 0x00;
 0012 22BA              out 0x12,R2
 0014                   .dbline 27
 0014           ;  DDRD  = 0xFF;//port d as a output
 0014 8FEF              ldi R24,255
 0016 81BB              out 0x11,R24
 0018                   .dbline -2
 0018           L1:
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbend
 001A                   .dbfunc e timer0_init _timer0_init fV
                        .even
 001A           _timer0_init::
 001A                   .dbline -1
 001A                   .dbline 36
 001A           ; }
 001A           ; 
 001A           ; 
 001A           ; //TIMER0 initialize - prescale:64
 001A           ; // WGM: Normal
 001A           ; // desired value: 2mSec
 001A           ; // actual value:  2.000mSec (0.0%)
 001A           ; void timer0_init(void)
 001A           ; {
 001A                   .dbline 37
 001A           ;  TCCR0 = 0x00; //stop
 001A 2224              clr R2
 001C 23BE              out 0x33,R2
 001E                   .dbline 38
 001E           ;  TCNT0 = 0x16; //set count
 001E 86E1              ldi R24,22
 0020 82BF              out 0x32,R24
 0022                   .dbline 39
 0022           ;  OCR0  = 0x57;  //set compare
 0022 87E5              ldi R24,87
 0024 8CBF              out 0x3c,R24
 0026                   .dbline 40
 0026           ;  TCCR0 = 0x05; //start timer
 0026 85E0              ldi R24,5
 0028 83BF              out 0x33,R24
 002A                   .dbline -2
 002A           L2:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C941600          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 002C                   .dbfile C:\icc\speedloop\motor_main.c
 002C                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
 002C           ;           temp -> R16
                        .even
 002C           _timer0_ovf_isr::
 002C 2A92              st -y,R2
 002E 3A92              st -y,R3
 0030 0A93              st -y,R16
 0032 8A93              st -y,R24
 0034 9A93              st -y,R25
 0036 2FB6              in R2,0x3f
 0038 2A92              st -y,R2
 003A                   .dbline -1
 003A                   .dbline 45
 003A           ; }
 003A           ; 
 003A           ; #pragma interrupt_handler timer0_ovf_isr:10
 003A           ; void timer0_ovf_isr(void)
 003A           ; {
 003A                   .dbline 47
 003A           ;  unsigned char temp;
 003A           ;  temp=SREG;
 003A 0FB7              in R16,0x3f
 003C                   .dbline 49
 003C           ;  //unsigned int temp16;
 003C           ;  TCCR1B=0X00;//STOP T1
 003C 2224              clr R2
 003E 2EBC              out 0x2e,R2
 0040                   .dbline 50
 0040           ;  TCCR0=0X00;//STOP T0
 0040 23BE              out 0x33,R2
 0042                   .dbline 51
 0042           ;  count++;
 0042 80910500          lds R24,_count
 0046 8F5F              subi R24,255    ; addi 1
 0048 80930500          sts _count,R24
 004C                   .dbline 52
 004C           ;  count16=TCNT1;
 004C 2CB4              in R2,0x2c
 004E 3DB4              in R3,0x2d
 0050 30920100          sts _count16+1,R3
 0054 20920000          sts _count16,R2
 0058                   .dbline 53
 0058           ;  TCNT1H = 0x00 /*INVALID SETTING*/; //setup
 0058 2224              clr R2
 005A 2DBC              out 0x2d,R2
 005C                   .dbline 54
 005C           ;  TCNT1L = 0x00 /*INVALID SETTING*/;
 005C 2CBC              out 0x2c,R2
 005E                   .dbline 56
 005E           ;   
 005E           ;  TCNT0 = 0x16; //reload counter value
 005E 86E1              ldi R24,22
 0060 82BF              out 0x32,R24
 0062                   .dbline 57
 0062           ;  OCR0=0X57;
 0062 87E5              ldi R24,87
 0064 8CBF              out 0x3c,R24
 0066                   .dbline 58
 0066           ;  TCCR0=0X05;//START TIMER0
 0066 85E0              ldi R24,5
 0068 83BF              out 0x33,R24
 006A                   .dbline 59
 006A           ;  TCCR1B=0X07;//START T1
 006A 87E0              ldi R24,7
 006C 8EBD              out 0x2e,R24
 006E                   .dbline 60
 006E           ;   if (count16==0)
 006E 20900000          lds R2,_count16
 0072 30900100          lds R3,_count16+1
 0076 2220              tst R2
 0078 21F4              brne L4
 007A 3320              tst R3
 007C 11F4              brne L4
 007E           X0:
 007E                   .dbline 61
 007E           ;    {
 007E                   .dbline 62
 007E           ;       TCCR0=0X00;
 007E 2224              clr R2
 0080 23BE              out 0x33,R2
 0082                   .dbline 63
 0082           ;    }
 0082           L4:
 0082                   .dbline 64
 0082           ;  SREG=temp;
 0082 0FBF              out 0x3f,R16
 0084                   .dbline -2
 0084           L3:
 0084 2990              ld R2,y+
 0086 2FBE              out 0x3f,R2
 0088 9991              ld R25,y+
 008A 8991              ld R24,y+
 008C 0991              ld R16,y+
 008E 3990              ld R3,y+
 0090 2990              ld R2,y+
 0092                   .dbline 0 ; func end
 0092 1895              reti
 0094                   .dbsym r temp 16 c
 0094                   .dbend
 0094                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0094           _timer1_init::
 0094                   .dbline -1
 0094                   .dbline 71
 0094           ; }
 0094           ; //TIMER1 initialize - prescale:Rising edge
 0094           ; // WGM: 0) Normal, TOP=0xFFFF
 0094           ; // desired value: 1Hz
 0094           ; // actual value: Out of range
 0094           ; void timer1_init(void)
 0094           ; {
 0094                   .dbline 72
 0094           ;  TCCR1B = 0x00; //stop
 0094 2224              clr R2
 0096 2EBC              out 0x2e,R2
 0098                   .dbline 73
 0098           ;  TCNT1H = 0x00 /*INVALID SETTING*/; //setup
 0098 2DBC              out 0x2d,R2
 009A                   .dbline 74
 009A           ;  TCNT1L = 0x00 /*INVALID SETTING*/;
 009A 2CBC              out 0x2c,R2
 009C                   .dbline 75
 009C           ;  OCR1AH = 0x00 /*INVALID SETTING*/;
 009C 2BBC              out 0x2b,R2
 009E                   .dbline 76
 009E           ;  OCR1AL = 0x00 /*INVALID SETTING*/;
 009E 2ABC              out 0x2a,R2
 00A0                   .dbline 77
 00A0           ;  OCR1BH = 0x00 /*INVALID SETTING*/;
 00A0 29BC              out 0x29,R2
 00A2                   .dbline 78
 00A2           ;  OCR1BL = 0x00 /*INVALID SETTING*/;
 00A2 28BC              out 0x28,R2
 00A4                   .dbline 81
 00A4           ;  //OCR1CH = $OCR1CH$;
 00A4           ;  //OCR1CL = $OCR1CL$;
 00A4           ;  ICR1H  = 0x00 /*INVALID SETTING*/;
 00A4 27BC              out 0x27,R2
 00A6                   .dbline 82
 00A6           ;  ICR1L  = 0x00 /*INVALID SETTING*/;
 00A6 26BC              out 0x26,R2
 00A8                   .dbline 83
 00A8           ;  TCCR1A = 0x00;
 00A8 2FBC              out 0x2f,R2
 00AA                   .dbline 84
 00AA           ;  TCCR1B = 0x07; //start Timer
 00AA 87E0              ldi R24,7
 00AC 8EBD              out 0x2e,R24
 00AE                   .dbline -2
 00AE           L6:
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0                   .dbend
 00B0                   .dbfunc e timer2_init _timer2_init fV
                        .even
 00B0           _timer2_init::
 00B0                   .dbline -1
 00B0                   .dbline 91
 00B0           ; }
 00B0           ;        
 00B0           ; //TIMER2 initialize - prescale:1
 00B0           ; // WGM: PWM Phase correct
 00B0           ; // actual value: 15.686KHz (93.6%)
 00B0           ; void timer2_init(void)
 00B0           ; {
 00B0                   .dbline 92
 00B0           ;  TCCR2 = 0x00; //stop
 00B0 2224              clr R2
 00B2 25BC              out 0x25,R2
 00B4                   .dbline 93
 00B4           ;  ASSR  = 0x00; //set async mode
 00B4 22BC              out 0x22,R2
 00B6                   .dbline 94
 00B6           ;  TCNT2 = 0x01; //setup
 00B6 81E0              ldi R24,1
 00B8 84BD              out 0x24,R24
 00BA                   .dbline 95
 00BA           ;  OCR2  = 0xFF;
 00BA 8FEF              ldi R24,255
 00BC 83BD              out 0x23,R24
 00BE                   .dbline 96
 00BE           ;  TCCR2 = 0x61; //start
 00BE 81E6              ldi R24,97
 00C0 85BD              out 0x25,R24
 00C2                   .dbline -2
 00C2           L7:
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbend
 00C4                   .dbfunc e adc_init _adc_init fV
                        .even
 00C4           _adc_init::
 00C4                   .dbline -1
 00C4                   .dbline 111
 00C4           ; }
 00C4           ; 
 00C4           ; //#pragma interrupt_handler timer2_ovf_isr:5

⌨️ 快捷键说明

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