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

📄 mcp2510.lis

📁 用iccavr工具编写的mcp2510与can连接的通讯程序。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -