📄 main.lis
字号:
.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 + -