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

📄 can162.lis

📁 Atmel mcu can interface design example
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module CAN162.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\candesignnow\CAN162.c
 0000                   .dbfunc e delay_1ms _delay_1ms fV
 0000           ;              k -> R16,R17
                        .even
 0000           _delay_1ms::
 0000                   .dbline -1
 0000                   .dbline 23
 0000           ; //ICC-AVR application builder : 2007-7-21 15:11:59
 0000           ; // Target : M162
 0000           ; // Crystal: 16.000Mhz
 0000           ; 
 0000           ; #include <iom162v.h>
 0000           ; #include <macros.h>
 0000           ; #include "can.h"
 0000           ; //extern unsigned char RX_Buffer[13];
 0000           ; //#define uchar unsigned char 
 0000           ; //#define uint  unsigned int
 0000           ; unsigned char TX_Buffer[13];
 0000           ; unsigned char RX_Buffer[13];
 0000           ; unsigned char timer_ok;
 0000           ; unsigned char timer_count;
 0000           ; unsigned char RevFlag;
 0000           ; unsigned int count;
 0000           ; 
 0000           ; /**********************************************************
 0000           ;                      软延时
 0000           ; **********************************************************/                                    
 0000           ;                                        
 0000           ; void delay_1ms(void) 
 0000           ; {
 0000                   .dbline 25
 0000           ;  unsigned int k; 
 0000           ;  for(k = 0; k < (16*142 - 2); k++) // 定时1ms公式:xtal*142-2
 0000 0027              clr R16
 0002 1127              clr R17
 0004 02C0              xjmp L5
 0006           L2:
 0006                   .dbline 26
 0006           L3:
 0006                   .dbline 25
 0006 0F5F              subi R16,255  ; offset = 1
 0008 1F4F              sbci R17,255
 000A           L5:
 000A                   .dbline 25
 000A 0E3D              cpi R16,222
 000C E8E0              ldi R30,8
 000E 1E07              cpc R17,R30
 0010 D0F3              brlo L2
 0012                   .dbline -2
 0012                   .dbline 28
 0012           ;        ;  
 0012           ;        //for(k = 0; k < 2; k++);
 0012           ; }
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r k 16 i
 0014                   .dbend
 0014                   .dbfunc e Delay _Delay fV
 0014           ;              p -> R20,R21
 0014           ;              n -> R22,R23
                        .even
 0014           _Delay::
 0014 0E940000          xcall push_gset2
 0018 B801              movw R22,R16
 001A                   .dbline -1
 001A                   .dbline 30
 001A           ; void Delay(unsigned int n)
 001A           ; {
 001A                   .dbline 32
 001A           ;  unsigned int p; 
 001A           ;  for(p = 0; p < n; p++) 
 001A 4427              clr R20
 001C 5527              clr R21
 001E 03C0              xjmp L10
 0020           L7:
 0020                   .dbline 33
 0020                   .dbline 34
 0020 EFDF              xcall _delay_1ms
 0022                   .dbline 35
 0022           L8:
 0022                   .dbline 32
 0022 4F5F              subi R20,255  ; offset = 1
 0024 5F4F              sbci R21,255
 0026           L10:
 0026                   .dbline 32
 0026 4617              cp R20,R22
 0028 5707              cpc R21,R23
 002A D0F3              brlo L7
 002C                   .dbline -2
 002C                   .dbline 36
 002C           ;  {
 002C           ;          delay_1ms();
 002C           ;  }
 002C           ; }
 002C           L6:
 002C 0E940000          xcall pop_gset2
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r p 20 i
 0032                   .dbsym r n 22 i
 0032                   .dbend
 0032                   .dbfunc e port_init _port_init fV
                        .even
 0032           _port_init::
 0032                   .dbline -1
 0032                   .dbline 39
 0032           ; 
 0032           ; void port_init(void)
 0032           ; {
 0032                   .dbline 40
 0032           ;    PORTA = 0x00;
 0032 2224              clr R2
 0034 2BBA              out 0x1b,R2
 0036                   .dbline 41
 0036           ;    DDRA  = 0xFF;
 0036 8FEF              ldi R24,255
 0038 8ABB              out 0x1a,R24
 003A                   .dbline 42
 003A           ;    PORTB = 0xF0;
 003A 80EF              ldi R24,240
 003C 88BB              out 0x18,R24
 003E                   .dbline 43
 003E           ;    DDRB  = 0x00;
 003E 27BA              out 0x17,R2
 0040                   .dbline 44
 0040           ;    PORTC = 0x7F; 
 0040 8FE7              ldi R24,127
 0042 85BB              out 0x15,R24
 0044                   .dbline 45
 0044           ;    DDRC  = 0xFF;
 0044 8FEF              ldi R24,255
 0046 84BB              out 0x14,R24
 0048                   .dbline 46
 0048           ;    PORTD = 0x04;
 0048 84E0              ldi R24,4
 004A 82BB              out 0x12,R24
 004C                   .dbline 47
 004C           ;    DDRD  = 0xFA;
 004C 8AEF              ldi R24,250
 004E 81BB              out 0x11,R24
 0050                   .dbline 48
 0050           ;    PORTE = 0x07;
 0050 87E0              ldi R24,7
 0052 87B9              out 0x7,R24
 0054                   .dbline 49
 0054           ;    DDRE  = 0x07;
 0054 86B9              out 0x6,R24
 0056                   .dbline -2
 0056                   .dbline 50
 0056           ; }
 0056           L11:
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbend
 0058                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 0058           _watchdog_init::
 0058                   .dbline -1
 0058                   .dbline 55
 0058           ; 
 0058           ; //Watchdog initialisation
 0058           ; // prescale: 2048K cycles
 0058           ; void watchdog_init(void)
 0058           ; {
 0058                   .dbline 56
 0058           ;  WDR(); //this prevents a timout on enabling
 0058 A895              wdr
 005A                   .dbline 57
 005A           ;  WDTCR= 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
 005A 8FE0              ldi R24,15
 005C 81BD              out 0x21,R24
 005E                   .dbline -2
 005E                   .dbline 58
 005E           ; }
 005E           L12:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbend
 0060                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0060           _timer1_init::
 0060                   .dbline -1
 0060                   .dbline 65
 0060           ; 
 0060           ; //TIMER1 initialisation - prescale:256
 0060           ; // WGM: 0) Normal, TOP=0xFFFF
 0060           ; // desired value: 50Hz
 0060           ; // actual value: 50.000Hz (0.0%)
 0060           ; void timer1_init(void)
 0060           ; {
 0060                   .dbline 66
 0060           ;  TCCR1B= 0x00; //stop
 0060 2224              clr R2
 0062 2EBC              out 0x2e,R2
 0064                   .dbline 67
 0064           ;  TCNT1H= 0xFB; //setup
 0064 8BEF              ldi R24,251
 0066 8DBD              out 0x2d,R24
 0068                   .dbline 68
 0068           ;  TCNT1L= 0x1E;
 0068 8EE1              ldi R24,30
 006A 8CBD              out 0x2c,R24
 006C                   .dbline 69
 006C           ;  OCR1AH= 0x04;
 006C 84E0              ldi R24,4
 006E 8BBD              out 0x2b,R24
 0070                   .dbline 70
 0070           ;  OCR1AL= 0xE2;
 0070 82EE              ldi R24,226
 0072 8ABD              out 0x2a,R24
 0074                   .dbline 71
 0074           ;  OCR1BH= 0x04;
 0074 84E0              ldi R24,4
 0076 89BD              out 0x29,R24
 0078                   .dbline 72
 0078           ;  OCR1BL= 0xE2;
 0078 82EE              ldi R24,226
 007A 88BD              out 0x28,R24
 007C                   .dbline 73
 007C           ;  TCCR1A= 0x00;
 007C 2FBC              out 0x2f,R2
 007E                   .dbline 74
 007E           ;  TCCR1B= 0x04; //start Timer
 007E 84E0              ldi R24,4
 0080 8EBD              out 0x2e,R24
 0082                   .dbline -2
 0082                   .dbline 75
 0082           ; }
 0082           L13:
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbend
                        .area vector(rom, abs)
                        .org 60
 003C 0C944200          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 0084                   .dbfile D:\candesignnow\CAN162.c
 0084                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0084           _timer1_ovf_isr::
 0084 2A92              st -y,R2
 0086 3A92              st -y,R3
 0088 8A93              st -y,R24
 008A 9A93              st -y,R25
 008C EA93              st -y,R30
 008E 2FB6              in R2,0x3f
 0090 2A92              st -y,R2
 0092                   .dbline -1
 0092                   .dbline 79
 0092                   .dbline 81
 0092 8BEF              ldi R24,251
 0094 8DBD              out 0x2d,R24
 0096                   .dbline 82
 0096 8EE1              ldi R24,30
 0098 8CBD              out 0x2c,R24
 009A                   .dbline 83
 009A 81E0              ldi R24,1
 009C 80930400          sts _timer_ok,R24
 00A0                   .dbline 84
 00A0 80910000          lds R24,_count
 00A4 90910100          lds R25,_count+1
 00A8 0196              adiw R24,1
 00AA 90930100          sts _count+1,R25
 00AE 80930000          sts _count,R24
 00B2                   .dbline 85
 00B2 8E31              cpi R24,30
 00B4 E0E0              ldi R30,0
 00B6 9E07              cpc R25,R30
 00B8 51F4              brne L15
 00BA                   .dbline 86
 00BA                   .dbline 87
 00BA 2224              clr R2
 00BC 3324              clr R3
 00BE 30920100          sts _count+1,R3
 00C2 20920000          sts _count,R2
 00C6                   .dbline 88
 00C6 80E1              ldi R24,16
 00C8 22B2              in R2,0x12
 00CA 2826              eor R2,R24
 00CC 22BA              out 0x12,R2
 00CE                   .dbline 89
 00CE           L15:
 00CE                   .dbline -2
 00CE                   .dbline 91
 00CE           ; 
 00CE           ; #pragma interrupt_handler timer1_ovf_isr:16
 00CE           ; void timer1_ovf_isr(void)
 00CE           ; {
 00CE           ;  //TIMER1 has overflowed 
 00CE           ;  TCNT1H= 0xFB; //reload counter high value
 00CE           ;  TCNT1L= 0x1E; //reload counter low value
 00CE           ;  timer_ok = 1;
 00CE           ;  count++;
 00CE           ;  if(count == 30)
 00CE           ;  {
 00CE           ;     count = 0;
 00CE           ;     PORTD ^= (1<<PD4); //程序在运行
 00CE           ;  }
 00CE           ; 
 00CE           ; }
 00CE           L14:
 00CE 2990              ld R2,y+
 00D0 2FBE              out 0x3f,R2
 00D2 E991              ld R30,y+
 00D4 9991              ld R25,y+
 00D6 8991              ld R24,y+
 00D8 3990              ld R3,y+
 00DA 2990              ld R2,y+
 00DC                   .dbline 0 ; func end
 00DC 1895              reti
 00DE                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C946F00          jmp _int0_isr
                        .area text(rom, con, rel)
 00DE                   .dbfile D:\candesignnow\CAN162.c
 00DE                   .dbfunc e int0_isr _int0_isr fV
 00DE           ;     can_status -> R22
 00DE           ;            reg -> R20
 00DE           ;      CompCount -> R22
                        .even
 00DE           _int0_isr::
 00DE 0E940000          xcall push_lset
 00E2 0E940000          xcall push_gset2
 00E6                   .dbline -1
 00E6                   .dbline 122
 00E6           ; /*
 00E6           ; //TIMER0 initialisation - prescale:256

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -