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

📄 main.lis

📁 AT90CAN128的CAN通信源码测试成功
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\liliang\can-232\CAN-232/delay.c
 0000                   .dbfunc e shortdelay _shortdelay fV
 0000           ;             tt -> R16
                        .even
 0000           _shortdelay::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; /******************************************************************** 
 0000           ; *  函数库说明:主函数                                               * 
 0000           ; *  版本说明:  1.0 Bate                                             * 
 0000           ; *  作者:      andylee                                              * 
 0000           ; *  日期:      2006年10月                                            * 
 0000           ; *  平台:      mega16  16M                                          * 
 0000           ; *  说明:      CAN数据采集卡的系统监控函数                          * 
 0000           ; ********************************************************************/ 
 0000           ; 
 0000           ; #include <iom16v.h>        
 0000           ; #include <macros.h>
 0000           ; #include "libdef.h"
 0000           ; #include "delay.c"
 0000           ; #include "rprint.c"
 0000           ; #include "can.c"
 0000                   .dbline 16
 0000           ; #include "uart.c"
 0000 0150              _L2: subi R16,1
 0002                   .dbline 17
 0002           ; #include "isr.c"
 0002 0000               nop
 0004                   .dbline 18
 0004           ; 
 0004 E9F7               brne _L2
 0006                   .dbline 19
 0006           ; //#define DEBUG_MAIN
 0006 0000               nop
 0008                   .dbline 20
 0008           ; 
 0008 0895               ret
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbsym r tt 16 c
 000C                   .dbend
 000C                   .dbfunc e delay_us _delay_us fV
                        .even
 000C           _delay_us::
 000C                   .dbline -1
 000C                   .dbline 25
 000C           ; /**********
 000C           ; * 常量定义*  
 000C           ; **********/
 000C           ; unsigned int temp=0;
 000C           ; unsigned int value;
 000C                   .dbline 26
 000C           ; 
 000C 02E0              ldi R16,2
 000E F8DF              xcall _shortdelay
 0010                   .dbline -2
 0010           L2:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbend
 0012                   .dbfunc e delay_nus _delay_nus fV
 0012           ;              i -> R10,R11
 0012           ;              n -> R12,R13
                        .even
 0012           _delay_nus::
 0012 0E940000          xcall push_gset4x
 0016 6801              movw R12,R16
 0018                   .dbline -1
 0018                   .dbline 30
 0018           ; void main (void)
 0018           ; {
 0018           ;   unsigned char main_temp_all;        //数据暂变量
 0018           ;   unsigned char main_temp_uart;
 0018                   .dbline 31
 0018           ;   CLI();
 0018 AA24              clr R10
 001A BB24              clr R11
 001C                   .dbline 32
 001C           ;  
 001C 04C0              xjmp L7
 001E           L4:
 001E                   .dbline 33
 001E F6DF              xcall _delay_us
 0020           L5:
 0020                   .dbline 32
 0020 C501              movw R24,R10
 0022 0196              adiw R24,1
 0024 5C01              movw R10,R24
 0026           L7:
 0026                   .dbline 32
 0026 AC14              cp R10,R12
 0028 BD04              cpc R11,R13
 002A C8F3              brlo L4
 002C                   .dbline -2
 002C           L3:
 002C 0E940000          xcall pop_gset4x
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r i 10 i
 0032                   .dbsym r n 12 i
 0032                   .dbend
 0032                   .dbfunc e delay_ms _delay_ms fV
 0032           ;              i -> R16,R17
                        .even
 0032           _delay_ms::
 0032                   .dbline -1
 0032                   .dbline 37
 0032           ;   //CAN相关初始化
 0032           ;   sja_port_init();
 0032           ;   sja_init();
 0032           ; 
 0032           ;  //can_cmd_init();  
 0032                   .dbline 39
 0032 0027              clr R16
 0034 1127              clr R17
 0036 02C0              xjmp L12
 0038           L9:
 0038                   .dbline 39
 0038           L10:
 0038                   .dbline 39
 0038 0F5F              subi R16,255  ; offset = 1
 003A 1F4F              sbci R17,255
 003C           L12:
 003C                   .dbline 39
 003C           ;        
 003C           ;   isr_init();                         //外部中断0初始化
 003C 0437              cpi R16,116
 003E E4E0              ldi R30,4
 0040 1E07              cpc R17,R30
 0042 D0F3              brlo L9
 0044                   .dbline -2
 0044           L8:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046                   .dbsym r i 16 i
 0046                   .dbend
 0046                   .dbfunc e delay_nms _delay_nms fV
 0046           ;              i -> R10,R11
 0046           ;              n -> R12,R13
                        .even
 0046           _delay_nms::
 0046 0E940000          xcall push_gset4x
 004A 6801              movw R12,R16
 004C                   .dbline -1
 004C                   .dbline 43
 004C           ;   uartInit();                         //串口初始化
 004C           ;   rprintfInit(uartSendByte);          //发送函数初始化
 004C           ;   
 004C           ;   watchdog_init();
 004C                   .dbline 44
 004C           ;   
 004C AA24              clr R10
 004E BB24              clr R11
 0050                   .dbline 45
 0050           ;   SEI();
 0050 04C0              xjmp L17
 0052           L14:
 0052                   .dbline 46
 0052 EFDF              xcall _delay_ms
 0054           L15:
 0054                   .dbline 45
 0054 C501              movw R24,R10
 0056 0196              adiw R24,1
 0058 5C01              movw R10,R24
 005A           L17:
 005A                   .dbline 45
 005A AC14              cp R10,R12
 005C BD04              cpc R11,R13
 005E C8F3              brlo L14
 0060                   .dbline -2
 0060           L13:
 0060 0E940000          xcall pop_gset4x
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbsym r i 10 i
 0066                   .dbsym r n 12 i
 0066                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\liliang\can-232\CAN-232/delay.c
 0000           _HexChars:
 0000                   .blkb 17
                        .area idata
 0000 30313233343536373839414243444546  .byte 48,49,50,51,52,53,54,55,56,57,'A,'B,'C,'D,'E,'F
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile D:\liliang\can-232\CAN-232/delay.c
 0011                   .dbfile D:\liliang\can-232\CAN-232/rprint.c
 0011                   .dbsym s HexChars _HexChars A[17:17]c
                        .area text(rom, con, rel)
 0066                   .dbfile D:\liliang\can-232\CAN-232/rprint.c
 0066                   .dbfunc e rprintfInit _rprintfInit fV
 0066           ;   putchar_func -> R16,R17
                        .even
 0066           _rprintfInit::
 0066                   .dbline -1
 0066                   .dbline 31
 0066                   .dbline 32
 0066 10931D00          sts _rputchar+1,R17
 006A 00931C00          sts _rputchar,R16
 006E                   .dbline -2
 006E           L18:
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbsym r putchar_func 16 pfV
 0070                   .dbend
 0070                   .dbfunc e rprintfChar _rprintfChar fV
 0070           ;              c -> R10
                        .even
 0070           _rprintfChar::
 0070 0E940000          xcall push_gset3x
 0074 A02E              mov R10,R16
 0076                   .dbline -1
 0076                   .dbline 38
 0076                   .dbline 40
 0076 0A2D              mov R16,R10
 0078 E0911C00          lds R30,_rputchar
 007C F0911D00          lds R31,_rputchar+1
 0080 0E940000          xcall xicall
 0084                   .dbline -2
 0084           L19:
 0084 0E940000          xcall pop_gset3x
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r c 10 c
 008A                   .dbend
 008A                   .dbfunc e rprintfStr _rprintfStr fV
 008A           ;            str -> R10,R11
                        .even
 008A           _rprintfStr::
 008A 0E940000          xcall push_gset3x
 008E 5801              movw R10,R16
 0090                   .dbline -1
 0090                   .dbline 46
 0090           ;   buffer_init();                     //can发送的缓冲区初始化
 0090                   .dbline 49
 0090           ; #ifdef DEBUG_MAIN      
 0090           ; uartSendByte(0xaa);
 0090           ; uartSendByte(0xaa);
 0090 AA20              tst R10
 0092 39F4              brne L24
 0094 BB20              tst R11
 0096 29F4              brne L24
 0098           X0:
 0098                   .dbline 49
 0098 08C0              xjmp L20
 009A           L23:
 009A                   .dbline 53
 009A F501              movw R30,R10
 009C 0191              ld R16,Z+
 009E 5F01              movw R10,R30
 00A0 E7DF              xcall _rprintfChar
 00A2           L24:
 00A2                   .dbline 52
 00A2           ; #endif
 00A2           ;   DDRA|=(1<<DDA0)|(1<<DDA1);
 00A2           ;   
 00A2 F501              movw R30,R10
 00A4 2080              ldd R2,z+0
 00A6 2220              tst R2
 00A8 C1F7              brne L23
 00AA                   .dbline -2
 00AA           L20:
 00AA 0E940000          xcall pop_gset3x
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0                   .dbsym r str 10 pc
 00B0                   .dbend
 00B0                   .dbfunc e rprintfStrLen _rprintfStrLen fV
 00B0           ;              i -> R10,R11
 00B0           ;            len -> R12,R13
 00B0           ;          start -> y+6
 00B0           ;            str -> R14,R15
                        .even
 00B0           _rprintfStrLen::
 00B0 3A93              st -y,r19
 00B2 2A93              st -y,r18
 00B4 0E940000          xcall push_gset5x
 00B8 7801              movw R14,R16
 00BA C884              ldd R12,y+8
 00BC D984              ldd R13,y+9
 00BE                   .dbline -1
 00BE                   .dbline 59
 00BE           ;   PORTA&=~(1<<PA0);
 00BE           ;   PORTA&=~(1<<PA1);
 00BE           ;   WDR();
 00BE           ;   delay_nms(1000);
 00BE           ;   WDR();
 00BE           ;   PORTA|=(1<<PA0);
 00BE           ;   PORTA|=(1<<PA1);
 00BE                   .dbline 60
 00BE           ;   while(1)
 00BE AA24              clr R10
 00C0 BB24              clr R11
 00C2                   .dbline 63
 00C2           ;     { 
 00C2           ; #ifdef DEBUG_MAIN      
 00C2           ; uartSendByte(0XAA);
 00C2 EE20              tst R14
 00C4 19F4              brne L30
 00C6 FF20              tst R15
 00C8 09F4              brne L30
 00CA           X1:
 00CA                   .dbline 63
 00CA 21C0              xjmp L26
 00CC           L29:
 00CC                   .dbline 66
 00CC           L30:
 00CC                   .dbline 66
 00CC           ; uartSendByte(0XBB);
 00CC           ; #endif
 00CC           ;          /*
 00CC 1501              movw R2,R10
 00CE C101              movw R24,R2
 00D0 0196              adiw R24,1
 00D2 5C01              movw R10,R24
 00D4 0E80              ldd R0,y+6
 00D6 1F80              ldd R1,y+7
 00D8 2014              cp R2,R0
 00DA 3104              cpc R3,R1
 00DC 28F4              brsh L32
 00DE F701              movw R30,R14
 00E0 2190              ld R2,Z+
 00E2 7F01              movw R14,R30
 00E4 2220              tst R2
 00E6 91F7              brne L29
 00E8           L32:
 00E8                   .dbline 69
 00E8           ;                delay_nms(500);      //为什么加个延时在这才正常运行?
 00E8           ;                TransmitMessage[6]=0xb0;
 00E8           ;                uart_b0_flag=0;
 00E8 AA24              clr R10
 00EA BB24              clr R11
 00EC 0DC0              xjmp L36
 00EE           L33:
 00EE                   .dbline 70
 00EE           ;                sja_tx(TransmitMessage);      //CAN节点数据发送 
 00EE                   .dbline 73
 00EE           ;                PORTA&=~(1<<PA0);
 00EE           ;                */
 00EE           ;                WDR();
 00EE F701              movw R30,R14
 00F0 2080              ldd R2,z+0
 00F2 2220              tst R2
 00F4 21F0              breq L37
 00F6                   .dbline 74
 00F6           ;                delay_nms(1000); 
 00F6 0191              ld R16,Z+
 00F8 7F01              movw R14,R30
 00FA BADF              xcall _rprintfChar
 00FC 02C0              xjmp L38
 00FE           L37:
 00FE                   .dbline 76
 00FE           ;                WDR();
 00FE           ;                delay_nms(1000); 
 00FE 00E2              ldi R16,32
 0100 B7DF              xcall _rprintfChar
 0102           L38:
 0102                   .dbline 77
 0102           L34:
 0102                   .dbline 69
 0102 C501              movw R24,R10
 0104 0196              adiw R24,1
 0106 5C01              movw R10,R24
 0108           L36:
 0108                   .dbline 69
 0108 AC14              cp R10,R12
 010A BD04              cpc R11,R13
 010C 80F3              brlo L33
 010E                   .dbline -2
 010E           L26:
 010E 0E940000          xcall pop_gset5x
 0112 2296              adiw R28,2
 0114                   .dbline 0 ; func end
 0114 0895              ret
 0116                   .dbsym r i 10 I
 0116                   .dbsym r len 12 i
 0116                   .dbsym l start 6 i
 0116                   .dbsym r str 14 pc
 0116                   .dbend
 0116                   .dbfunc e rprintfProgStr _rprintfProgStr fV
 0116           ;              c -> R10
 0116           ;            str -> R12,R13

⌨️ 快捷键说明

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