📄 mcp2510.lis
字号:
.module mcp2510.c
.area text(rom, con, rel)
0000 .dbfile F:\多运动体协调控制程序\通信程序1\mcp2510.c
.area data(ram, con, rel)
0000 .dbfile F:\多运动体协调控制程序\通信程序1\mcp2510.c
0000 _count1::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile F:\多运动体协调控制程序\通信程序1\mcp2510.c
0002 .dbsym e count1 _count1 I
0002 _RecID_H::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile F:\多运动体协调控制程序\通信程序1\mcp2510.c
0004 .dbsym e RecID_H _RecID_H I
0004 _RecID_L::
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile F:\多运动体协调控制程序\通信程序1\mcp2510.c
0006 .dbsym e RecID_L _RecID_L I
.area text(rom, con, rel)
0000 .dbfile F:\多运动体协调控制程序\通信程序1\mcp2510.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 25
0000 ; //ICC-AVR application builder : 2007-10-17 16:47:59
0000 ; // Target : M16
0000 ; // Crystal: 16.000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #define READ 0x03 // 读MCP2510指令代码
0000 ; #define WRITE 0x02 // 写MCP2510指令代码
0000 ; #define RESET 0xC0 // 复位MCP2510指令代码
0000 ; #define RTS 0x80 // MCP2510请求发送指令代码
0000 ; #define STA2510 0xA0 // 读MCP2510状态指令代码
0000 ; #define BITMOD 0x05 // MCP2510位修改指令代码
0000 ; int timecount;
0000 ; int a[]; // SPI发送或接收数据寄存器
0000 ; int b[]; // 发送或接收的数据
0000 ; int c[]; // 发送或接收的数据
0000 ; int i; // 临时变量
0000 ; int count; // 发送接收计数器
0000 ; int count1=0; // for test
0000 ; int RecID_H=0;
0000 ; int RecID_L=0;
0000 ; int DLC;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 26
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 27
0004 ; DDRA = 0x00;
0004 2224 clr R2
0006 2ABA out 0x1a,R2
0008 .dbline 28
0008 ; PORTB = 0xFF;
0008 88BB out 0x18,R24
000A .dbline 29
000A ; DDRB = 0x00;
000A 27BA out 0x17,R2
000C .dbline 30
000C ; PORTC = 0xFF; //m103 output only
000C 85BB out 0x15,R24
000E .dbline 31
000E ; DDRC = 0x00;
000E 24BA out 0x14,R2
0010 .dbline 32
0010 ; PORTD = 0xFF;
0010 82BB out 0x12,R24
0012 .dbline 33
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 41
0016 ; }
0016 ;
0016 ; //TIMER0 initialize - prescale:1
0016 ; // WGM: Normal
0016 ; // desired value: 100KHz
0016 ; // actual value: 100.000KHz (0.0%)
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 42
0016 ; TCCR0 = 0x00; //stop
0016 2224 clr R2
0018 23BE out 0x33,R2
001A .dbline 43
001A ; TCNT0 = 0x60; //set count
001A 80E6 ldi R24,96
001C 82BF out 0x32,R24
001E .dbline 44
001E ; OCR0 = 0xA0; //set compare
001E 80EA ldi R24,160
0020 8CBF out 0x3c,R24
0022 .dbline 45
0022 ; TCCR0 = 0x01; //start timer
0022 81E0 ldi R24,1
0024 83BF out 0x33,R24
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
.area vector(rom, abs)
.org 76
004C 0C941400 jmp _timer0_comp_isr
.area text(rom, con, rel)
0028 .dbfile F:\多运动体协调控制程序\通信程序1\mcp2510.c
0028 .dbfunc e timer0_comp_isr _timer0_comp_isr fV
.even
0028 _timer0_comp_isr::
0028 .dbline -1
0028 .dbline 50
0028 ; }
0028 ;
0028 ; #pragma interrupt_handler timer0_comp_isr:20
0028 ; void timer0_comp_isr(void)
0028 ; {/*int i=0;
0028 .dbline 59
0028 ; timecount=0;
0028 ; timecount++;
0028 ; if (timecount>=1000) timecount=0;
0028 ; SPDR=READ;
0028 ; SPDR=0x66;
0028 ; b[i]=SPDR;
0028 ; b[i++]=SPDR;
0028 ; while(!(SPSR & (1<<SPIF)))*/
0028 ; ;
0028 .dbline -2
0028 L3:
0028 .dbline 0 ; func end
0028 1895 reti
002A .dbend
002A .dbfunc e timer1_init _timer1_init fV
.even
002A _timer1_init::
002A .dbline -1
002A .dbline 68
002A ; //compare occured TCNT0=OCR0
002A ; }
002A ;
002A ; //TIMER1 initialize - prescale:1
002A ; // WGM: 0) Normal, TOP=0xFFFF
002A ; // desired value: 100KHz
002A ; // actual value: 100.000KHz (0.0%)
002A ; void timer1_init(void)
002A ; {
002A .dbline 69
002A ; TCCR1B = 0x00; //stop
002A 2224 clr R2
002C 2EBC out 0x2e,R2
002E .dbline 70
002E ; TCNT1H = 0xFF; //setup
002E 8FEF ldi R24,255
0030 8DBD out 0x2d,R24
0032 .dbline 71
0032 ; TCNT1L = 0x60;
0032 80E6 ldi R24,96
0034 8CBD out 0x2c,R24
0036 .dbline 72
0036 ; OCR1AH = 0x00;
0036 2BBC out 0x2b,R2
0038 .dbline 73
0038 ; OCR1AL = 0xA0;
0038 80EA ldi R24,160
003A 8ABD out 0x2a,R24
003C .dbline 74
003C ; OCR1BH = 0x00;
003C 29BC out 0x29,R2
003E .dbline 75
003E ; OCR1BL = 0xA0;
003E 88BD out 0x28,R24
0040 .dbline 78
0040 ; //OCR1CH = $OCR1CH$;
0040 ; //OCR1CL = $OCR1CL$;
0040 ; ICR1H = 0x00;
0040 27BC out 0x27,R2
0042 .dbline 79
0042 ; ICR1L = 0xA0;
0042 86BD out 0x26,R24
0044 .dbline 80
0044 ; TCCR1A = 0x50;
0044 80E5 ldi R24,80
0046 8FBD out 0x2f,R24
0048 .dbline 81
0048 ; TCCR1B = 0x01; //start Timer
0048 81E0 ldi R24,1
004A 8EBD out 0x2e,R24
004C .dbline -2
004C L4:
004C .dbline 0 ; func end
004C 0895 ret
004E .dbend
004E .dbfunc e timer2_init _timer2_init fV
.even
004E _timer2_init::
004E .dbline -1
004E .dbline 89
004E ; }
004E ;
004E ; //TIMER2 initialize - prescale:1
004E ; // WGM: Normal
004E ; // desired value: 100KHz
004E ; // actual value: 100.000KHz (0.0%)
004E ; void timer2_init(void)
004E ; {
004E .dbline 90
004E ; TCCR2 = 0x00; //stop
004E 2224 clr R2
0050 25BC out 0x25,R2
0052 .dbline 91
0052 ; ASSR = 0x00; //set async mode
0052 22BC out 0x22,R2
0054 .dbline 92
0054 ; TCNT2 = 0x60; //setup
0054 80E6 ldi R24,96
0056 84BD out 0x24,R24
0058 .dbline 93
0058 ; OCR2 = 0xA0;
0058 80EA ldi R24,160
005A 83BD out 0x23,R24
005C .dbline 94
005C ; TCCR2 = 0x11; //start
005C 81E1 ldi R24,17
005E 85BD out 0x25,R24
0060 .dbline -2
0060 L5:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbend
0062 .dbfunc e spi_init _spi_init fV
.even
0062 _spi_init::
0062 .dbline -1
0062 .dbline 100
0062 ; }
0062 ;
0062 ; //SPI initialize
0062 ; // clock rate: 4000000hz
0062 ; void spi_init(void)
0062 ; {
0062 .dbline 101
0062 ; SPCR = 0x50; //setup SPI
0062 80E5 ldi R24,80
0064 8DB9 out 0xd,R24
0066 .dbline 102
0066 ; SPSR = 0x00; //setup SPI
0066 2224 clr R2
0068 2EB8 out 0xe,R2
006A .dbline -2
006A L6:
006A .dbline 0 ; func end
006A 0895 ret
006C .dbend
006C .dbfunc e adc_init _adc_init fV
.even
006C _adc_init::
006C .dbline -1
006C .dbline 108
006C ; }
006C ;
006C ; //ADC initialize
006C ; // Conversion time: 3uS
006C ; void adc_init(void)
006C ; {
006C .dbline 109
006C ; ADCSR = 0x00; //disable adc
006C 2224 clr R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -