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

📄 at90can128.lis

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module AT90CAN128.C
                        .area text(rom, con, rel)
 0000                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
                        .area data(ram, con, rel)
 0000                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0000           _CS::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0001                   .dbsym e CS _CS c
 0001           _CHA::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0002                   .dbsym e CHA _CHA c
 0002           _LED::
 0002                   .blkb 2
                        .area idata
 0002 0000              .byte 0,0
                        .area data(ram, con, rel)
 0004                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0004                   .blkb 2
                        .area idata
 0004 0000              .byte 0,0
                        .area data(ram, con, rel)
 0006                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0006                   .blkb 1
                        .area idata
 0006 00                .byte 0
                        .area data(ram, con, rel)
 0007                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0007                   .dbsym e LED _LED A[5:5]c
 0007           _send_mark::
 0007                   .blkb 1
                        .area idata
 0007 01                .byte 1
                        .area data(ram, con, rel)
 0008                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0008                   .dbsym e send_mark _send_mark c
 0008           _display_mark::
 0008                   .blkb 1
                        .area idata
 0008 01                .byte 1
                        .area data(ram, con, rel)
 0009                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0009                   .dbsym e display_mark _display_mark c
 0009           _send_time::
 0009                   .blkb 1
                        .area idata
 0009 00                .byte 0
                        .area data(ram, con, rel)
 000A                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 000A                   .dbsym e send_time _send_time c
 000A           _display_time::
 000A                   .blkb 1
                        .area idata
 000A 00                .byte 0
                        .area data(ram, con, rel)
 000B                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 000B                   .dbsym e display_time _display_time c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\AT90CAN128.C
 0000                   .dbfunc e PORT_Init _PORT_Init fV
                        .even
 0000           _PORT_Init::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; #define _MAIN_H
 0000           ; #include "AT90CAN128.H"
 0000           ; 
 0000           ; uint8 CS = 0;
 0000           ; uint8 volatile CHA = 0;
 0000           ; 
 0000           ; BOOL LED[5] = {FALSE,FALSE,FALSE,FALSE,FALSE};
 0000           ; BOOL volatile send_mark = TRUE;
 0000           ; BOOL volatile display_mark = TRUE;
 0000           ; uint8 send_time = 0;
 0000           ; uint8 display_time = 0;
 0000           ; 
 0000           ; 
 0000           ; void PORT_Init(void)
 0000           ; {
 0000                   .dbline 16
 0000           ;       PORTA = 0xFF;
 0000 8FEF              ldi R24,255
 0002 82B9              out 0x2,R24
 0004                   .dbline 17
 0004           ;       DDRA  = 0xFF;   //数码管
 0004 81B9              out 0x1,R24
 0006                   .dbline 19
 0006           ;    
 0006           ;       PORTB = 0xFF;
 0006 85B9              out 0x5,R24
 0008                   .dbline 20
 0008           ;       DDRB  = 0x00;
 0008 2224              clr R2
 000A 24B8              out 0x4,R2
 000C                   .dbline 22
 000C           ;    
 000C           ;       PORTC = 0xFF; //m103 output only
 000C 88B9              out 0x8,R24
 000E                   .dbline 23
 000E           ;       DDRC  = 0xFF;
 000E 87B9              out 0x7,R24
 0010                   .dbline 25
 0010           ;    
 0010           ;       PORTD = 0xFF;//PD4
 0010 8BB9              out 0xb,R24
 0012                   .dbline 26
 0012           ;       DDRD  = 0x10;
 0012 80E1              ldi R24,16
 0014 8AB9              out 0xa,R24
 0016                   .dbline 28
 0016           ;    
 0016           ;       PORTE = 0xFF;
 0016 8FEF              ldi R24,255
 0018 8EB9              out 0xe,R24
 001A                   .dbline 29
 001A           ;       DDRE  = 0x00;
 001A 2DB8              out 0xd,R2
 001C                   .dbline 31
 001C           ;    
 001C           ;       PORTF = 0xFF;   
 001C 81BB              out 0x11,R24
 001E                   .dbline 32
 001E           ;    DDRF  = 0x00;
 001E 20BA              out 0x10,R2
 0020                   .dbline 34
 0020           ;    
 0020           ;       PORTG = 0xFF;
 0020 84BB              out 0x14,R24
 0022                   .dbline 35
 0022           ;       DDRG  = 0x00;
 0022 23BA              out 0x13,R2
 0024                   .dbline 40
 0024           ; //=======================================================================
 0024           ; //ADEN置位即启动ADC,否则ADC功能关闭。在转换过程中关闭ADC将立即中止正在进
 0024           ; //行的转换。
 0024           ; //=======================================================================
 0024           ;       ADCSRA = (0 << ADEN);                           //      关闭数/模转换器
 0024 20927A00          sts 122,R2
 0028                   .dbline 48
 0028           ; //=======================================================================
 0028           ; //ACD 置位时,模拟比较器的电源被切断。可以在任何时候设置此位来关掉模拟比较器。这
 0028           ; //可以减少器件工作模式及空闲模式下的功耗。改变ACD 位时,必须清零ACSR 寄存器的
 0028           ; //ACIE 位来禁止模拟比较器中断。否则ACD 改变时可能会产生中断。
 0028           ; //当ACIE 位被置"1” 且状态寄存器中的全局中断标志I 也被置位时,模拟比较器中断被激
 0028           ; //活。否则中断被禁止。
 0028           ; //=======================================================================
 0028           ;       ACSR = (1 << ACD) | (0 << ACIE);        //      关闭模拟比较器
 0028 80E8              ldi R24,128
 002A 80BF              out 0x30,R24
 002C                   .dbline 52
 002C           ; //=======================================================================
 002C           ; //    EEWE复位值不定
 002C           ; //=======================================================================
 002C           ;       EECR = 0;
 002C 2FBA              out 0x1f,R2
 002E                   .dbline -2
 002E           L3:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbend
 0030                   .dbfunc e TIMER0_Init _TIMER0_Init fV
                        .even
 0030           _TIMER0_Init::
 0030                   .dbline -1
 0030                   .dbline 67
 0030           ; }
 0030           ; 
 0030           ; 
 0030           ; //////////////////////////////////////////////////////////////////////
 0030           ; //TIMER0 initialize - prescale:1024
 0030           ; // WGM: CTC
 0030           ; // desired value: 1mSec
 0030           ; // actual value:  1.019mSec (-1.9%)
 0030           ; // 定时器0=2毫秒=寄存器比较值11059200*2/1024/1000-1=21.6-1=20.6=0x35
 0030           ; //--------------------------------------------------------------------
 0030           ; //FOC0A WGM00 COM0A1 COM0A0 WGM01 CS02 CS01 CS00
 0030           ; //        0                   1    1    0    1 
 0030           ; //////////////////////////////////////////////////////////////////////
 0030           ; void TIMER0_Init(void)
 0030           ; {
 0030                   .dbline 68
 0030           ;       TCCR0 = 0x00; //stop
 0030 2224              clr R2
 0032 24BC              out 0x24,R2
 0034                   .dbline 69
 0034           ;       ASSR  = 0x00; //set async mode
 0034 2092B600          sts 182,R2
 0038                   .dbline 70
 0038           ;       TCNT0 = 0xF9; //set count
 0038 89EF              ldi R24,249
 003A 86BD              out 0x26,R24
 003C                   .dbline 71
 003C           ;       OCR0  = 0x07;
 003C 87E0              ldi R24,7
 003E 87BD              out 0x27,R24
 0040                   .dbline 72
 0040           ;       TCCR0 = 0x0D; //start timer     
 0040 8DE0              ldi R24,13
 0042 84BD              out 0x24,R24
 0044                   .dbline 73
 0044           ;       TIMSK0 = (1 << OCIE0);                                  //      使能T0=自动重装中断(1<<TOIE0)|
 0044 82E0              ldi R24,2
 0046 80936E00          sts 110,R24
 004A                   .dbline -2
 004A           L4:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbend
 004C                   .dbfunc e TIMER2_Init _TIMER2_Init fV
                        .even
 004C           _TIMER2_Init::
 004C                   .dbline -1
 004C                   .dbline 89
 004C           ; }
 004C           ; 
 004C           ; 
 004C           ; //////////////////////////////////////////////////////////////////////
 004C           ; //TIMER2 initialize - prescale:1024
 004C           ; // WGM: CTC
 004C           ; // desired value: 5mSec
 004C           ; // actual value:  5.000mSec (0.0%)
 004C           ; // 256-11059200*5/1024/1000/10=256-54=202=0xCA(5毫秒)
 004C           ; // 定时器2=10毫秒=寄存器比较值11059200*10/1024/1000-1=108-1=107=0x6B
 004C           ; //--------------------------------------------------------------------
 004C           ; //FOC2A WGM20 COM2A1 COM2A0 WGM21 CS22 CS21 CS20
 004C           ; //        0                   1     1    1    1
 004C           ; //////////////////////////////////////////////////////////////////////
 004C           ; void TIMER2_Init(void)
 004C           ; {
 004C                   .dbline 90
 004C           ;       TCCR2 = 0x00; //stop
 004C 2224              clr R2
 004E 2092B000          sts 176,R2
 0052                   .dbline 91
 0052           ;       TCNT2 = 0xD9; //setup
 0052 89ED              ldi R24,217
 0054 8093B200          sts 178,R24
 0058                   .dbline 92
 0058           ;       OCR2  = 0x27;
 0058 87E2              ldi R24,39
 005A 8093B300          sts 179,R24
 005E                   .dbline 93
 005E           ;       TCCR2 = 0x0F; //start   
 005E 8FE0              ldi R24,15
 0060 8093B000          sts 176,R24
 0064                   .dbline 94
 0064           ;       TIMSK2 = (1 << OCIE2);                                  //      使能T2=自动重装中断(1<<TOIE0)|
 0064 82E0              ldi R24,2
 0066 80937000          sts 112,R24
 006A                   .dbline -2
 006A           L5:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
 006C                   .dbfunc e Watchdog_Init _Watchdog_Init fV
                        .even
 006C           _Watchdog_Init::
 006C                   .dbline -1
 006C                   .dbline 99
 006C           ; }
 006C           ; 
 006C           ; 
 006C           ; void Watchdog_Init(void)
 006C           ; {
 006C                   .dbline 100
 006C           ;       WDR();                          //      看门狗计数清零
 006C A895              wdr
 006E                   .dbline 101
 006E           ;       WDTCR = (1 << WDE) | (1 << WDP2) | (1 << WDP1) | (0 << WDP0);  //       使能watchdog,并且,采用128K分频,典型溢出时间5V时1S
 006E 8EE0              ldi R24,14
 0070 80936000          sts 96,R24
 0074                   .dbline -2
 0074           L6:
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbend
 0076                   .dbfunc e ExChange _ExChange fc
 0076           ;              K -> R10
 0076           ;           K_Lo -> R20
 0076           ;           K_Hi -> R22
 0076           ;            KK2 -> R12
 0076           ;            KK1 -> R14
 0076           ;              i -> R10
 0076           ;            num -> R16
                        .even
 0076           _ExChange::
 0076 0E940000          xcall push_xgsetF0FC
 007A                   .dbline -1
 007A                   .dbline 116
 007A           ; } 
 007A           ; 
 007A           ; 
 007A           ; //////////////////////////////////////////////////////////////////////
 007A           ; // a = PA7(pa0)                        
 007A           ; // b = PA6(pa1)
 007A           ; // c = PA5(pa2)
 007A           ; // d = PA4(pa3)
 007A           ; // e = PA3(pa4)
 007A           ; // f = PA2(pa5)
 007A           ; // g = PA1(pa6);
 007A           ; // h = PA0(pa7)               
 007A           ; //////////////////////////////////////////////////////////////////////
 007A           ; uint8 ExChange(uint8 num)
 007A           ; {
 007A                   .dbline 118
 007A           ;    uint8 i;
 007A           ;    uint8 KK1 = num;
 007A E02E              mov R14,R16
 007C                   .dbline 119
 007C           ;    uint8 KK2 = num;
 007C C02E              mov R12,R16
 007E                   .dbline 120
 007E           ;    uint8 K_Hi = 0;
 007E 6627              clr R22
 0080                   .dbline 121
 0080           ;    uint8 K_Lo = 0;
 0080 4427              clr R20
 0082                   .dbline 127
 0082           ;    uint8 K;
 0082           ;       
 0082           ; //----------------------------------------------------------------- 
 0082           ; //bit0-->bit7   //bit1-->bit6   //bit2-->bit5   //bit3-->bit4     
 0082           ; //----------------------------------------------------------------- 
 0082           ;       for (i=0;i<4;i++)
 0082 AA24              clr R10
 0084 06C0              xjmp L11
 0086           L8:
 0086                   .dbline 128
 0086           ;       {
 0086                   .dbline 129
 0086           ;                       K_Hi <<= 1;
 0086 660F              lsl R22
 0088                   .dbline 130
 0088           ;                       if (KK1 & 0x01)
 0088 E0FE              sbrs R14,0
 008A 01C0              rjmp L12
 008C           X0:
 008C                   .dbline 131
 008C           ;                               K_Hi |= 0x01;
 008C 6160              ori R22,1
 008E           L12:
 008E                   .dbline 132

⌨️ 快捷键说明

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