📄 scon2.lis
字号:
.module scon2.c
.area data(ram, con, rel)
0000 _time1::
0000 .blkb 2
.area idata
0000 7F00 .word 127
.area data(ram, con, rel)
0002 .dbfile D:\AVR程序\舵机控制2\scon2.c
0002 .dbsym e time1 _time1 i
0002 _time2::
0002 .blkb 2
.area idata
0002 7F00 .word 127
.area data(ram, con, rel)
0004 .dbfile D:\AVR程序\舵机控制2\scon2.c
0004 .dbsym e time2 _time2 i
.area text(rom, con, rel)
0000 .dbfile D:\AVR程序\舵机控制2\scon2.c
0000 .dbfunc e Delay _Delay fV
0000 ; time -> R16,R17
.even
0000 _Delay::
0000 .dbline -1
0000 .dbline 40
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define Uchar unsigned char
0000 ; #define Uint unsigned int
0000 ;
0000 ;
0000 ; #define nop() asm("nop")
0000 ; #define _nop_() asm("nop")
0000 ;
0000 ;
0000 ;
0000 ; #define PB PORTB
0000 ; #define PC PORTC
0000 ; #define PD PORTD
0000 ;
0000 ;
0000 ;
0000 ; #define Forward0 PB|=0x01; PB&=~0x02;
0000 ; #define Backward0 PB|=0x02; PB&=~0x01;
0000 ; #define Stop0 PB|=0x03;
0000 ;
0000 ; #define Forward1 PC|=0x10; PC&=~0x20;
0000 ; #define Backward1 PC|=0x20; PC&=~0x10;
0000 ; #define Stop1 PC|=0x30;
0000 ;
0000 ;
0000 ; #define IN0 PIND&0x04
0000 ; #define IN1 PIND&0x08
0000 ; #define OF2 TIFR&0x40
0000 ; #define COF2 TIFR|=0x40
0000 ;
0000 ; //原理;外部上升中断-定时器开-0。4毫秒后比较中断-清零定时器-外部下降中断-读出计数器-PWM输出
0000 ;
0000 ; Uint time1=127,time2=127;//定时器数据
0000 ;
0000 ;
0000 ;
0000 ; void Delay (Uint time)
0000 ; {
0000 02C0 rjmp L3
0002 L2:
0002 .dbline 42
0002 .dbline 43
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 .dbline 44
0006 L3:
0006 .dbline 41
0006 ; while(time)
0006 0030 cpi R16,0
0008 0107 cpc R16,R17
000A D9F7 brne L2
000C X0:
000C .dbline -2
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbsym r time 16 i
000E .dbend
000E .dbfunc e port_init _port_init fV
.even
000E _port_init::
000E .dbline -1
000E .dbline 50
000E ; {
000E ; time--;
000E ; }
000E ; }
000E ;
000E ;
000E ;
000E ; void port_init(void)
000E ; {
000E .dbline 51
000E ; PORTB = 0x00;
000E 2224 clr R2
0010 28BA out 0x18,R2
0012 .dbline 52
0012 ; DDRB = 0x0F;
0012 8FE0 ldi R24,15
0014 87BB out 0x17,R24
0016 .dbline 53
0016 ; PORTC = 0x00; //m103 output only
0016 25BA out 0x15,R2
0018 .dbline 54
0018 ; DDRC = 0x30;
0018 80E3 ldi R24,48
001A 84BB out 0x14,R24
001C .dbline 55
001C ; PORTD = 0x00;
001C 22BA out 0x12,R2
001E .dbline 56
001E ; DDRD = 0x00;
001E 21BA out 0x11,R2
0020 .dbline -2
0020 L5:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbend
0022 .dbfunc e timer1_init _timer1_init fV
.even
0022 _timer1_init::
0022 .dbline -1
0022 .dbline 67
0022 ; }
0022 ;
0022 ;
0022 ;
0022 ;
0022 ; //TIMER1 initialize - prescale:8
0022 ; // WGM: 0) Normal, TOP=0xFFFF
0022 ; // desired value: 1Hz
0022 ; // actual value: Out of range
0022 ; void timer1_init(void)
0022 ; {
0022 .dbline 68
0022 ; TCCR1B = 0x00; //stop
0022 2224 clr R2
0024 2EBC out 0x2e,R2
0026 .dbline 69
0026 ; TCNT1 = 0x00 /*INVALID SETTING*/; //setup
0026 3324 clr R3
0028 3DBC out 0x2d,R3
002A 2CBC out 0x2c,R2
002C .dbline 70
002C ; OCR1A = 100;
002C 84E6 ldi R24,100
002E 90E0 ldi R25,0
0030 9BBD out 0x2b,R25
0032 8ABD out 0x2a,R24
0034 .dbline 71
0034 ; OCR1B = 0x00 /*INVALID SETTING*/;
0034 39BC out 0x29,R3
0036 28BC out 0x28,R2
0038 .dbline 72
0038 ; ICR1 = 0x00 /*INVALID SETTING*/;
0038 37BC out 0x27,R3
003A 26BC out 0x26,R2
003C .dbline 73
003C ; TCCR1A = 0x00;
003C 2FBC out 0x2f,R2
003E .dbline -2
003E L6:
003E .dbline 0 ; func end
003E 0895 ret
0040 .dbend
0040 .dbfunc e timer2_init _timer2_init fV
.even
0040 _timer2_init::
0040 .dbline -1
0040 .dbline 84
0040 ; // TCCR1B = 0x03; //start Timer
0040 ; }
0040 ;
0040 ;
0040 ;
0040 ; //TIMER2 initialize - prescale:8
0040 ; // WGM: Normal
0040 ; // desired value: 1Hz
0040 ; // actual value: Out of range
0040 ; void timer2_init(void)
0040 ; {
0040 .dbline 85
0040 ; TCCR2 = 0x00; //stop
0040 2224 clr R2
0042 25BC out 0x25,R2
0044 .dbline 86
0044 ; ASSR = 0x00; //set async mode
0044 22BC out 0x22,R2
0046 .dbline 87
0046 ; TCNT2 = 0x00 /*INVALID SETTING*/; //setup
0046 24BC out 0x24,R2
0048 .dbline 88
0048 ; OCR2 = 100;
0048 84E6 ldi R24,100
004A 83BD out 0x23,R24
004C .dbline -2
004C L7:
004C .dbline 0 ; func end
004C 0895 ret
004E .dbend
004E .dbfunc e adc_init _adc_init fV
.even
004E _adc_init::
004E .dbline -1
004E .dbline 97
004E ; //TCCR2 = 0x03; //start
004E ; }
004E ;
004E ;
004E ;
004E ; //ADC initialize
004E ; // Conversion time: 104uS
004E ; void adc_init(void)
004E ; {
004E .dbline 98
004E ; ADCSR = 0x00; //disable adc
004E 2224 clr R2
0050 26B8 out 0x6,R2
0052 .dbline 99
0052 ; ADMUX = 0x00; //select adc input 0
0052 27B8 out 0x7,R2
0054 .dbline 100
0054 ; ACSR = 0x80;
0054 80E8 ldi R24,128
0056 88B9 out 0x8,R24
0058 .dbline 101
0058 ; ADCSR = 0x86;
0058 86E8 ldi R24,134
005A 86B9 out 0x6,R24
005C .dbline -2
005C L8:
005C .dbline 0 ; func end
005C 0895 ret
005E .dbend
.area vector(rom, abs)
.org 2
0002 2FC0 rjmp _int0_isr
.area text(rom, con, rel)
005E .dbfile D:\AVR程序\舵机控制2\scon2.c
005E .dbfunc e int0_isr _int0_isr fV
.even
005E _int0_isr::
005E 2A92 st -y,R2
0060 3A92 st -y,R3
0062 0A93 st -y,R16
0064 1A93 st -y,R17
0066 8A93 st -y,R24
0068 9A93 st -y,R25
006A EA93 st -y,R30
006C 2FB6 in R2,0x3f
006E 2A92 st -y,R2
0070 .dbline -1
0070 .dbline 106
0070 ; }
0070 ;
0070 ; #pragma interrupt_handler int0_isr:2
0070 ; void int0_isr(void)
0070 ; {
0070 .dbline 108
0070 ; //external interupt on INT0
0070 ; switch(IN0)
0070 00B3 in R16,0x10
0072 1127 clr R17
0074 0470 andi R16,4
0076 1070 andi R17,0
0078 0030 cpi R16,0
007A 0107 cpc R16,R17
007C 49F0 breq L13
007E X1:
007E 0030 cpi R16,0
0080 E0E0 ldi R30,0
0082 1E07 cpc R17,R30
0084 3CF1 brlt L10
0086 L17:
0086 0430 cpi R16,4
0088 E0E0 ldi R30,0
008A 1E07 cpc R17,R30
008C 09F1 breq L16
008E 22C0 rjmp L10
0090 X2:
0090 .dbline 109
0090 ; {
0090 L13:
0090 .dbline 111
0090 ; case 0://下降触发
0090 ; TCCR1B = 0x00; //stop
0090 2224 clr R2
0092 2EBC out 0x2e,R2
0094 .dbline 112
0094 ; time1=TCNT1&0x01ff;
0094 8CB5 in R24,0x2c
0096 9DB5 in R25,0x2d
0098 9170 andi R25,1
009A 90930100 sts _time1+1,R25
009E 80930000 sts _time1,R24
00A2 .dbline 113
00A2 ; time1-=40;
00A2 8897 sbiw R24,40
00A4 90930100 sts _time1+1,R25
00A8 80930000 sts _time1,R24
00AC .dbline 114
00AC ; if(time1>250)time1=250;
00AC 8AEF ldi R24,250
00AE 90E0 ldi R25,0
00B0 20900000 lds R2,_time1
00B4 30900100 lds R3,_time1+1
00B8 8215 cp R24,R2
00BA 9305 cpc R25,R3
00BC 20F4 brsh L14
00BE .dbline 114
00BE 90930100 sts _time1+1,R25
00C2 80930000 sts _time1,R24
00C6 L14:
00C6 .dbline 115
00C6 ; TCNT1=0;
00C6 2224 clr R2
00C8 3324 clr R3
00CA 3DBC out 0x2d,R3
00CC 2CBC out 0x2c,R2
00CE .dbline 116
00CE ; break;
00CE 02C0 rjmp L11
00D0 L16:
00D0 .dbline 118
00D0 ; case 0x04://上升触发
00D0 ; TCCR1B = 0x03; //start Timer
00D0 83E0 ldi R24,3
00D2 8EBD out 0x2e,R24
00D4 .dbline 119
00D4 ; }
00D4 L10:
00D4 L11:
00D4 .dbline -2
00D4 L9:
00D4 2990 ld R2,y+
00D6 2FBE out 0x3f,R2
00D8 E991 ld R30,y+
00DA 9991 ld R25,y+
00DC 8991 ld R24,y+
00DE 1991 ld R17,y+
00E0 0991 ld R16,y+
00E2 3990 ld R3,y+
00E4 2990 ld R2,y+
00E6 .dbline 0 ; func end
00E6 1895 reti
00E8 .dbend
.area vector(rom, abs)
.org 4
0004 74C0 rjmp _int1_isr
.area text(rom, con, rel)
00E8 .dbfile D:\AVR程序\舵机控制2\scon2.c
00E8 .dbfunc e int1_isr _int1_isr fV
.even
00E8 _int1_isr::
00E8 2A92 st -y,R2
00EA 3A92 st -y,R3
00EC 0A93 st -y,R16
00EE 1A93 st -y,R17
00F0 8A93 st -y,R24
00F2 9A93 st -y,R25
00F4 EA93 st -y,R30
00F6 2FB6 in R2,0x3f
00F8 2A92 st -y,R2
00FA .dbline -1
00FA .dbline 124
00FA ; }
00FA ;
00FA ; #pragma interrupt_handler int1_isr:3
00FA ; void int1_isr(void)
00FA ; {
00FA .dbline 126
00FA ; //external interupt on INT1
00FA ; switch(IN1)
00FA 00B3 in R16,0x10
00FC 1127 clr R17
00FE 0870 andi R16,8
0100 1070 andi R17,0
0102 0030 cpi R16,0
0104 0107 cpc R16,R17
0106 49F0 breq L22
0108 X3:
0108 0030 cpi R16,0
010A E0E0 ldi R30,0
010C 1E07 cpc R17,R30
010E C4F1 brlt L19
0110 L28:
0110 0830 cpi R16,8
0112 E0E0 ldi R30,0
0114 1E07 cpc R17,R30
0116 91F1 breq L27
0118 33C0 rjmp L19
011A X4:
011A .dbline 127
011A ; {
011A L22:
011A .dbline 129
011A ; case 0://下降触发
011A ; TCCR2 = 0x00; //stop
011A 2224 clr R2
011C 25BC out 0x25,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -