📄 step.lis
字号:
00DC .dbline 85
00DC ; else
00DC ; {
00DC .dbline 86
00DC ; if(step == 0)
00DC 20900500 lds R2,_step
00E0 2220 tst R2
00E2 19F4 brne L22
00E4 .dbline 87
00E4 ; aon;
00E4 81E0 ldi R24,1
00E6 88BB out 0x18,R24
00E8 2CC0 rjmp L23
00EA L22:
00EA .dbline 88
00EA ; else if(step == 1)
00EA 80910500 lds R24,_step
00EE 8130 cpi R24,1
00F0 19F4 brne L24
00F2 .dbline 89
00F2 ; daon;
00F2 89E0 ldi R24,9
00F4 88BB out 0x18,R24
00F6 25C0 rjmp L25
00F8 L24:
00F8 .dbline 90
00F8 ; else if(step == 2)
00F8 80910500 lds R24,_step
00FC 8230 cpi R24,2
00FE 19F4 brne L26
0100 .dbline 91
0100 ; don;
0100 88E0 ldi R24,8
0102 88BB out 0x18,R24
0104 1EC0 rjmp L27
0106 L26:
0106 .dbline 92
0106 ; else if(step == 3)
0106 80910500 lds R24,_step
010A 8330 cpi R24,3
010C 19F4 brne L28
010E .dbline 93
010E ; cdon;
010E 8CE0 ldi R24,12
0110 88BB out 0x18,R24
0112 17C0 rjmp L29
0114 L28:
0114 .dbline 94
0114 ; else if(step == 4)
0114 80910500 lds R24,_step
0118 8430 cpi R24,4
011A 19F4 brne L30
011C .dbline 95
011C ; con;
011C 84E0 ldi R24,4
011E 88BB out 0x18,R24
0120 10C0 rjmp L31
0122 L30:
0122 .dbline 96
0122 ; else if(step == 5)
0122 80910500 lds R24,_step
0126 8530 cpi R24,5
0128 19F4 brne L32
012A .dbline 97
012A ; bcon;
012A 86E0 ldi R24,6
012C 88BB out 0x18,R24
012E 09C0 rjmp L33
0130 L32:
0130 .dbline 98
0130 ; else if(step == 6)
0130 80910500 lds R24,_step
0134 8630 cpi R24,6
0136 19F4 brne L34
0138 .dbline 99
0138 ; bon;
0138 82E0 ldi R24,2
013A 88BB out 0x18,R24
013C 02C0 rjmp L35
013E L34:
013E .dbline 101
013E ; else
013E ; abon;
013E 83E0 ldi R24,3
0140 88BB out 0x18,R24
0142 L35:
0142 L33:
0142 L31:
0142 L29:
0142 L27:
0142 L25:
0142 L23:
0142 .dbline 102
0142 ; }
0142 L7:
0142 .dbline 103
0142 ; step ++;
0142 80910500 lds R24,_step
0146 8F5F subi R24,255 ; addi 1
0148 80930500 sts _step,R24
014C .dbline 104
014C ; if(step>=8) step =0;
014C 8830 cpi R24,8
014E 18F0 brlo L36
0150 .dbline 104
0150 2224 clr R2
0152 20920500 sts _step,R2
0156 L36:
0156 .dbline 106
0156 ;
0156 ; TCNT1H = 0xE0; //reload counter high value更改速度
0156 80EE ldi R24,224
0158 8DBD out 0x2d,R24
015A .dbline 107
015A ; TCNT1L = 0x01; //reload counter low value
015A 81E0 ldi R24,1
015C 8CBD out 0x2c,R24
015E .dbline 108
015E ; TCCR1A = 0x00;
015E 2224 clr R2
0160 2FBC out 0x2f,R2
0162 .dbline 109
0162 ; TCCR1B = 0x02; //start Timer
0162 82E0 ldi R24,2
0164 8EBD out 0x2e,R24
0166 .dbline 111
0166 ;
0166 ; pcont++;
0166 80910300 lds R24,_pcont
016A 90910400 lds R25,_pcont+1
016E 0196 adiw R24,1
0170 90930400 sts _pcont+1,R25
0174 80930300 sts _pcont,R24
0178 .dbline 112
0178 ; }
0178 02C0 rjmp L5
017A L4:
017A .dbline 114
017A 2224 clr R2
017C 2EBC out 0x2e,R2
017E L5:
017E .dbline -2
017E .dbline 115
017E ; else
017E ; TCCR1B = 0x00;
017E ; }
017E L3:
017E 2990 ld R2,y+
0180 2FBE out 0x3f,R2
0182 9991 ld R25,y+
0184 8991 ld R24,y+
0186 5990 ld R5,y+
0188 4990 ld R4,y+
018A 3990 ld R3,y+
018C 2990 ld R2,y+
018E .dbline 0 ; func end
018E 1895 reti
0190 .dbend
0190 .dbfunc e uart0_init _uart0_init fV
.even
0190 _uart0_init::
0190 .dbline -1
0190 .dbline 123
0190 ;
0190 ; //UART0 initialisation
0190 ; // desired baud rate: 9600
0190 ; // actual: baud rate:9600 (0.0%)
0190 ; // char size: 8 bit
0190 ; // parity: Disabled
0190 ; void uart0_init(void)
0190 ; {
0190 .dbline 124
0190 ; UCSRB = 0x00; //disable while setting baud rate
0190 2224 clr R2
0192 2AB8 out 0xa,R2
0194 .dbline 125
0194 ; UCSRA = 0x00;
0194 2BB8 out 0xb,R2
0196 .dbline 126
0196 ; UCSRC = 0x86;
0196 86E8 ldi R24,134
0198 80BD out 0x20,R24
019A .dbline 127
019A ; UBRRL = 0x47; //set baud rate lo
019A 87E4 ldi R24,71
019C 89B9 out 0x9,R24
019E .dbline 128
019E ; UBRRH = 0x00; //set baud rate hi
019E 20BC out 0x20,R2
01A0 .dbline 129
01A0 ; UCSRB = 0x98;
01A0 88E9 ldi R24,152
01A2 8AB9 out 0xa,R24
01A4 .dbline -2
01A4 .dbline 130
01A4 ; }
01A4 L38:
01A4 .dbline 0 ; func end
01A4 0895 ret
01A6 .dbend
.area vector(rom, abs)
.org 22
0016 D3C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
01A6 .dbfile F:\单片机教学\调试程序\stepmotor\step.c
01A6 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
01A6 _uart0_rx_isr::
01A6 .dbline -1
01A6 .dbline 134
01A6 ;
01A6 ; #pragma interrupt_handler uart0_rx_isr:12
01A6 ; void uart0_rx_isr(void)
01A6 ; {
01A6 .dbline -2
01A6 .dbline 136
01A6 ; //uart has received a character in UDR
01A6 ; }
01A6 L39:
01A6 .dbline 0 ; func end
01A6 1895 reti
01A8 .dbend
01A8 .dbfunc e init_devices _init_devices fV
.even
01A8 _init_devices::
01A8 .dbline -1
01A8 .dbline 140
01A8 ;
01A8 ; //call this routine to initialise all peripherals
01A8 ; void init_devices(void)
01A8 ; {
01A8 .dbline 142
01A8 ; //stop errant interrupts until set up
01A8 ; CLI(); //disable all interrupts
01A8 F894 cli
01AA .dbline 143
01AA ; port_init();
01AA 2ADF rcall _port_init
01AC .dbline 144
01AC ; timer1_init();
01AC 35DF rcall _timer1_init
01AE .dbline 145
01AE ; uart0_init();
01AE F0DF rcall _uart0_init
01B0 .dbline 147
01B0 ;
01B0 ; MCUCR = 0x00;
01B0 2224 clr R2
01B2 25BE out 0x35,R2
01B4 .dbline 148
01B4 ; GICR = 0x00;
01B4 2BBE out 0x3b,R2
01B6 .dbline 149
01B6 ; TIMSK = 0x04; //timer interrupt sources
01B6 84E0 ldi R24,4
01B8 89BF out 0x39,R24
01BA .dbline 150
01BA ; SEI(); //re-enable interrupts
01BA 7894 sei
01BC .dbline -2
01BC .dbline 152
01BC ; //all peripherals are now initialised
01BC ; }
01BC L40:
01BC .dbline 0 ; func end
01BC 0895 ret
01BE .dbend
01BE .dbfunc e main _main fV
.even
01BE _main::
01BE .dbline -1
01BE .dbline 156
01BE ;
01BE ; //
01BE ; void main(void)
01BE ; {
01BE .dbline 157
01BE ; init_devices();
01BE F4DF rcall _init_devices
01C0 L42:
01C0 .dbline 159
01C0 L43:
01C0 .dbline 159
01C0 FFCF rjmp L42
01C2 X1:
01C2 .dbline -2
01C2 .dbline 160
01C2 ; //insert your functional code here...
01C2 ; while(1);
01C2 ; }
01C2 L41:
01C2 .dbline 0 ; func end
01C2 0895 ret
01C4 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -