📄 motor_master.lis
字号:
.module Motor_master.c
.area text(rom, con, rel)
0000 .dbfile F:\IccAvr_Pro\Motor_master.c
.area data(ram, con, rel)
0000 .dbfile F:\IccAvr_Pro\Motor_master.c
0000 _pwm::
0000 .blkb 2
.area idata
0000 7FFF .byte 127,255
.area data(ram, con, rel)
0002 .dbfile F:\IccAvr_Pro\Motor_master.c
0002 .dbsym e pwm _pwm A[2:2]c
.area text(rom, con, rel)
0000 .dbfile F:\IccAvr_Pro\Motor_master.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 19
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; //#include "Display.h"
0000 ; #include "SPI_master.h"
0000 ; #include "time_master.h"
0000 ;
0000 ; extern unsigned char timeflag,dispflag;
0000 ;
0000 ;
0000 ; extern unsigned char SPI_rx_buff[SIZE];
0000 ; extern unsigned char SPI_tx_buff[SIZE];
0000 ; extern unsigned char rx_wr_index,rx_rd_index,rx_counter,rx_buffer_overflow;
0000 ; extern unsigned char tx_wr_index,tx_rd_index,tx_counter,SPI_ok,SPI_datain,temp;
0000 ;
0000 ; unsigned char pwm[2]={0x7f,0xff};
0000 ; unsigned char qep_data1[3],qep_data2[3];
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 = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 22
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 23
0008 ; DDRB = 0x00;
0008 27BA out 0x17,R2
000A .dbline 24
000A ; PORTC = 0x00; //m103 output only
000A 25BA out 0x15,R2
000C .dbline 25
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 26
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 27
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e init_devices _init_devices fV
.even
0014 _init_devices::
0014 .dbline -1
0014 .dbline 34
0014 ; }
0014 ;
0014 ;
0014 ;
0014 ; //call this routine to initialize all peripherals
0014 ; void init_devices(void)
0014 ; {
0014 .dbline 36
0014 ; //stop errant interrupts until set up
0014 ; CLI(); //disable all interrupts
0014 F894 cli
0016 .dbline 37
0016 ; port_init();
0016 F4DF xcall _port_init
0018 .dbline 38
0018 ; timer0_init();
0018 0E940000 xcall _timer0_init
001C .dbline 39
001C ; timer2_init();
001C 0E940000 xcall _timer2_init
0020 .dbline 40
0020 ; spi_init();
0020 0E940000 xcall _spi_init
0024 .dbline 43
0024 ;
0024 ;
0024 ; MCUCR = 0x00;
0024 2224 clr R2
0026 25BE out 0x35,R2
0028 .dbline 44
0028 ; GICR = 0x00;
0028 2BBE out 0x3b,R2
002A .dbline 45
002A ; TIMSK = 0x41; //timer interrupt sources
002A 81E4 ldi R24,65
002C 89BF out 0x39,R24
002E .dbline 46
002E ; SEI(); //re-enable interrupts
002E 7894 sei
0030 .dbline -2
0030 L2:
0030 .dbline 0 ; func end
0030 0895 ret
0032 .dbend
0032 .dbfunc e main _main fV
0032 ; t -> R20
0032 ; set_pwm -> R10
0032 ; SPI_flag -> R20
0032 ; c -> R14
0032 ; i -> y+2
0032 ; j -> y+0
.even
0032 _main::
0032 2397 sbiw R28,3
0034 .dbline -1
0034 .dbline 52
0034 ; //all peripherals are now initialized
0034 ; }
0034 ;
0034 ; //
0034 ; void main(void)
0034 ; {
0034 .dbline 53
0034 ; unsigned char i=0,t=0;
0034 0024 clr R0
0036 0A82 std y+2,R0
0038 .dbline 53
0038 4427 clr R20
003A .dbline 54
003A ; int j=0;
003A 1124 clr R1
003C 1982 std y+1,R1
003E 0882 std y+0,R0
0040 .dbline 55
0040 ; unsigned char SPI_flag=1;
0040 41E0 ldi R20,1
0042 .dbline 57
0042 ; unsigned char c;
0042 ; unsigned char set_pwm=1;
0042 AA24 clr R10
0044 A394 inc R10
0046 .dbline 62
0046 ;
0046 ; //unsigned char aa_flag;
0046 ;
0046 ;
0046 ; init_devices();
0046 E6DF xcall _init_devices
0048 .dbline 64
0048 ; //insert your functional code here...
0048 ; PORTB&=~BIT(SS);
0048 C498 cbi 0x18,4
004A .dbline 65
004A ; putSPIchar(0xaa);
004A 0AEA ldi R16,170
004C 0E940000 xcall _putSPIchar
0050 .dbline 66
0050 ; getSPIchar();
0050 0E940000 xcall _getSPIchar
0054 .dbline 67
0054 ; putSPIchar(0x00);
0054 0027 clr R16
0056 0E940000 xcall _putSPIchar
005A .dbline 68
005A ; getSPIchar();
005A 0E940000 xcall _getSPIchar
005E .dbline 69
005E ; putSPIchar(0x00);
005E 0027 clr R16
0060 0E940000 xcall _putSPIchar
0064 .dbline 70
0064 ; getSPIchar();
0064 0E940000 xcall _getSPIchar
0068 .dbline 71
0068 ; putSPIchar(0x00);
0068 0027 clr R16
006A 0E940000 xcall _putSPIchar
006E .dbline 72
006E ; getSPIchar();
006E 0E940000 xcall _getSPIchar
0072 .dbline 73
0072 ; PORTB|=BIT(SS);
0072 C49A sbi 0x18,4
0074 D3C0 xjmp L5
0076 X0:
0076 .dbline 79
0076 ;
0076 ;
0076 ;
0076 ;
0076 ; while(1)
0076 ; {
0076 L7:
0076 .dbline 81
0076 ; while(timeflag)
0076 ; {
0076 .dbline 82
0076 ; timeflag=0;
0076 2224 clr R2
0078 20920000 sts _timeflag,R2
007C .dbline 83
007C ; if(SPI_flag)
007C 4423 tst R20
007E 09F4 brne X4
0080 AEC0 xjmp L10
0082 X4:
0082 .dbline 84
0082 ; {
0082 .dbline 85
0082 ; PORTB&=~BIT(SS);
0082 C498 cbi 0x18,4
0084 .dbline 86
0084 ; putSPIchar(0xaa);
0084 0AEA ldi R16,170
0086 0E940000 xcall _putSPIchar
008A .dbline 87
008A ; getSPIchar();
008A 0E940000 xcall _getSPIchar
008E .dbline 88
008E ; putSPIchar(0x01);
008E 01E0 ldi R16,1
0090 0E940000 xcall _putSPIchar
0094 .dbline 89
0094 ; getSPIchar();
0094 0E940000 xcall _getSPIchar
0098 .dbline 90
0098 ; putSPIchar(0x00);
0098 0027 clr R16
009A 0E940000 xcall _putSPIchar
009E .dbline 91
009E ; for(i=0,j=-1;i<10&j<3;i++)
009E 0024 clr R0
00A0 0A82 std y+2,R0
00A2 8FEF ldi R24,-1
00A4 9FEF ldi R25,-1
00A6 9983 std y+1,R25
00A8 8883 std y+0,R24
00AA 1FC0 xjmp L15
00AC L12:
00AC .dbline 92
00AC ; {
00AC .dbline 93
00AC ; if((c=getSPIchar())==0x55)
00AC 0E940000 xcall _getSPIchar
00B0 E02E mov R14,R16
00B2 0535 cpi R16,85
00B4 21F4 brne L16
00B6 .dbline 94
00B6 ; j=0;
00B6 0024 clr R0
00B8 1124 clr R1
00BA 1982 std y+1,R1
00BC 0882 std y+0,R0
00BE L16:
00BE .dbline 95
00BE ; putSPIchar(0x44);
00BE 04E4 ldi R16,68
00C0 0E940000 xcall _putSPIchar
00C4 .dbline 96
00C4 ; if(j>=0)
00C4 8881 ldd R24,y+0
00C6 9981 ldd R25,y+1
00C8 8030 cpi R24,0
00CA E0E0 ldi R30,0
00CC 9E07 cpc R25,R30
00CE 54F0 brlt L18
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -