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

📄 main.s

📁 AT90CAN128的CAN通信源码测试成功
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile D:\liliang\can-232\CAN-232/delay.c
	.dbfunc e shortdelay _shortdelay fV
;             tt -> R16
	.even
_shortdelay::
	.dbline -1
	.dbline 15
; /******************************************************************** 
; *  函数库说明:主函数                                               * 
; *  版本说明:  1.0 Bate                                             * 
; *  作者:      andylee                                              * 
; *  日期:      2006年10月                                            * 
; *  平台:      mega16  16M                                          * 
; *  说明:      CAN数据采集卡的系统监控函数                          * 
; ********************************************************************/ 
; 
; #include <iom16v.h>        
; #include <macros.h>
; #include "libdef.h"
; #include "delay.c"
; #include "rprint.c"
; #include "can.c"
	.dbline 16
; #include "uart.c"
	_L2: subi R16,1
	.dbline 17
; #include "isr.c"
	 nop
	.dbline 18
; 
	 brne _L2
	.dbline 19
; //#define DEBUG_MAIN
	 nop
	.dbline 20
; 
	 ret
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r tt 16 c
	.dbend
	.dbfunc e delay_us _delay_us fV
	.even
_delay_us::
	.dbline -1
	.dbline 25
; /**********
; * 常量定义*  
; **********/
; unsigned int temp=0;
; unsigned int value;
	.dbline 26
; 
	ldi R16,2
	xcall _shortdelay
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              i -> R10,R11
;              n -> R12,R13
	.even
_delay_nus::
	xcall push_gset4x
	movw R12,R16
	.dbline -1
	.dbline 30
; void main (void)
; {
;   unsigned char main_temp_all;        //数据暂变量
;   unsigned char main_temp_uart;
	.dbline 31
;   CLI();
	clr R10
	clr R11
	.dbline 32
;  
	xjmp L7
L4:
	.dbline 33
	xcall _delay_us
L5:
	.dbline 32
	movw R24,R10
	adiw R24,1
	movw R10,R24
L7:
	.dbline 32
	cp R10,R12
	cpc R11,R13
	brlo L4
	.dbline -2
L3:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r i 10 i
	.dbsym r n 12 i
	.dbend
	.dbfunc e delay_ms _delay_ms fV
;              i -> R16,R17
	.even
_delay_ms::
	.dbline -1
	.dbline 37
;   //CAN相关初始化
;   sja_port_init();
;   sja_init();
; 
;  //can_cmd_init();  
	.dbline 39
	clr R16
	clr R17
	xjmp L12
L9:
	.dbline 39
L10:
	.dbline 39
	subi R16,255  ; offset = 1
	sbci R17,255
L12:
	.dbline 39
;        
;   isr_init();                         //外部中断0初始化
	cpi R16,116
	ldi R30,4
	cpc R17,R30
	brlo L9
	.dbline -2
L8:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R10,R11
;              n -> R12,R13
	.even
_delay_nms::
	xcall push_gset4x
	movw R12,R16
	.dbline -1
	.dbline 43
;   uartInit();                         //串口初始化
;   rprintfInit(uartSendByte);          //发送函数初始化
;   
;   watchdog_init();
	.dbline 44
;   
	clr R10
	clr R11
	.dbline 45
;   SEI();
	xjmp L17
L14:
	.dbline 46
	xcall _delay_ms
L15:
	.dbline 45
	movw R24,R10
	adiw R24,1
	movw R10,R24
L17:
	.dbline 45
	cp R10,R12
	cpc R11,R13
	brlo L14
	.dbline -2
L13:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r i 10 i
	.dbsym r n 12 i
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\liliang\can-232\CAN-232/delay.c
_HexChars:
	.blkb 17
	.area idata
	.byte 48,49,50,51,52,53,54,55,56,57,'A,'B,'C,'D,'E,'F
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\liliang\can-232\CAN-232/delay.c
	.dbfile D:\liliang\can-232\CAN-232/rprint.c
	.dbsym s HexChars _HexChars A[17:17]c
	.area text(rom, con, rel)
	.dbfile D:\liliang\can-232\CAN-232/rprint.c
	.dbfunc e rprintfInit _rprintfInit fV
;   putchar_func -> R16,R17
	.even
_rprintfInit::
	.dbline -1
	.dbline 31
	.dbline 32
	sts _rputchar+1,R17
	sts _rputchar,R16
	.dbline -2
L18:
	.dbline 0 ; func end
	ret
	.dbsym r putchar_func 16 pfV
	.dbend
	.dbfunc e rprintfChar _rprintfChar fV
;              c -> R10
	.even
_rprintfChar::
	xcall push_gset3x
	mov R10,R16
	.dbline -1
	.dbline 38
	.dbline 40
	mov R16,R10
	lds R30,_rputchar
	lds R31,_rputchar+1
	xcall xicall
	.dbline -2
L19:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r c 10 c
	.dbend
	.dbfunc e rprintfStr _rprintfStr fV
;            str -> R10,R11
	.even
_rprintfStr::
	xcall push_gset3x
	movw R10,R16
	.dbline -1
	.dbline 46
;   buffer_init();                     //can发送的缓冲区初始化
	.dbline 49
; #ifdef DEBUG_MAIN	 
; uartSendByte(0xaa);
; uartSendByte(0xaa);
	tst R10
	brne L24
	tst R11
	brne L24
X0:
	.dbline 49
	xjmp L20
L23:
	.dbline 53
	movw R30,R10
	ld R16,Z+
	movw R10,R30
	xcall _rprintfChar
L24:
	.dbline 52
; #endif
;   DDRA|=(1<<DDA0)|(1<<DDA1);
;   
	movw R30,R10
	ldd R2,z+0
	tst R2
	brne L23
	.dbline -2
L20:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r str 10 pc
	.dbend
	.dbfunc e rprintfStrLen _rprintfStrLen fV
;              i -> R10,R11
;            len -> R12,R13
;          start -> y+6
;            str -> R14,R15
	.even
_rprintfStrLen::
	st -y,r19
	st -y,r18
	xcall push_gset5x
	movw R14,R16
	ldd R12,y+8
	ldd R13,y+9
	.dbline -1
	.dbline 59
;   PORTA&=~(1<<PA0);
;   PORTA&=~(1<<PA1);
;   WDR();
;   delay_nms(1000);
;   WDR();
;   PORTA|=(1<<PA0);
;   PORTA|=(1<<PA1);
	.dbline 60
;   while(1)
	clr R10
	clr R11
	.dbline 63
;     { 
; #ifdef DEBUG_MAIN	 
; uartSendByte(0XAA);
	tst R14
	brne L30
	tst R15
	brne L30
X1:
	.dbline 63
	xjmp L26
L29:
	.dbline 66
L30:
	.dbline 66
; uartSendByte(0XBB);
; #endif
;          /*
	movw R2,R10
	movw R24,R2
	adiw R24,1
	movw R10,R24
	ldd R0,y+6
	ldd R1,y+7
	cp R2,R0
	cpc R3,R1
	brsh L32
	movw R30,R14
	ld R2,Z+
	movw R14,R30
	tst R2
	brne L29
L32:
	.dbline 69
; 		 delay_nms(500);      //为什么加个延时在这才正常运行?
; 		 TransmitMessage[6]=0xb0;
; 		 uart_b0_flag=0;
	clr R10
	clr R11
	xjmp L36
L33:
	.dbline 70
; 		 sja_tx(TransmitMessage);      //CAN节点数据发送 
	.dbline 73
; 		 PORTA&=~(1<<PA0);
; 		 */
; 		 WDR();
	movw R30,R14
	ldd R2,z+0
	tst R2
	breq L37
	.dbline 74
; 		 delay_nms(1000); 
	ld R16,Z+
	movw R14,R30
	xcall _rprintfChar
	xjmp L38
L37:
	.dbline 76
; 		 WDR();
; 		 delay_nms(1000); 
	ldi R16,32
	xcall _rprintfChar
L38:
	.dbline 77
L34:
	.dbline 69
	movw R24,R10
	adiw R24,1
	movw R10,R24
L36:
	.dbline 69
	cp R10,R12
	cpc R11,R13
	brlo L33
	.dbline -2
L26:
	xcall pop_gset5x
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r i 10 I
	.dbsym r len 12 i
	.dbsym l start 6 i
	.dbsym r str 14 pc
	.dbend
	.dbfunc e rprintfProgStr _rprintfProgStr fV
;              c -> R10
;            str -> R12,R13
	.even
_rprintfProgStr::
	xcall push_gset4x
	movw R12,R16
	.dbline -1
	.dbline 88
; 		 WDR();
; 		 if(uart_b0_flag==1)  //降压模拟
; 		 {
; 		    TransmitMessage[6]=0xb0;
; 			uart_b0_flag=0;
; 			sja_tx(TransmitMessage);      //CAN节点数据发送 
; 			PORTA&=~(1<<PA0);
; 		 }
; 		 
; 		 if(uart_b8_flag==1)  //停止充电模拟
; 		 {
; 		    TransmitMessage[6]=0xb8;
	.dbline 93
; 			uart_b8_flag=0;
; 			sja_tx(TransmitMessage);      //CAN节点数据发送 
; 			PORTA&=~(1<<PA1);
; 		 }
; 		 
	tst R12
	brne L43
	tst R13
	brne L43
X2:
	.dbline 93
	xjmp L39
L42:
	.dbline 97
	mov R16,R10
	xcall _rprintfChar
L43:
	.dbline 96
; 		 if(uart_normal_flag==1)         //正常工作状态
; 		 {
; 		    TransmitMessage[6]=0x00;
	movw R2,R12
	movw R24,R2
	adiw R24,1
	movw R12,R24
	movw R30,R2
	lpm R2,Z
	mov R10,R2
	tst R10
	brne L42
	.dbline -2
L39:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r c 10 c
	.dbsym r str 12 pkc
	.dbend
	.dbfunc e rprintfCRLF _rprintfCRLF fV
	.even
_rprintfCRLF::
	.dbline -1
	.dbline 107
; 			uart_normal_flag=0;
; 			sja_tx(TransmitMessage);      //CAN节点数据发送 
; 		 }
; 		 
; 		 if(uart_alarm_flag==1)          //报警状态
; 		 {
; 		    TransmitMessage[6]=0xa0;
; 			uart_alarm_flag=0;
; 			sja_tx(TransmitMessage);      //CAN节点数据发送 
; 		 }
; 
	.dbline 109
; 		 WDR();
; 		 delay_nms(100);
	ldi R16,13
	xcall _rprintfChar
	.dbline 110
; 		 WDR();
	ldi R16,10
	xcall _rprintfChar
	.dbline -2
L45:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e rprintfu04 _rprintfu04 fV
;           data -> R10
	.even
_rprintfu04::
	xcall push_gset3x
	mov R10,R16
	.dbline -1
	.dbline 120
; 		 if(can_receive_flag==1)        //有一次有效中断
; 		 {
; 		  	can_receive_flag=0;        //清标志
; 			
; 			//给串口发数据,把收到的数据送向计算机,计算机去处理
; 			for(main_temp_all=0;main_temp_all<=12;main_temp_all++)
; 			{
; 			    main_temp_uart=RxBuffer[main_temp_all];
; 			 	uartSendByte(main_temp_uart);
; 			}
	.dbline 121
; 			delay_nms(1000);
	ldi R24,<_HexChars
	ldi R25,>_HexChars
	mov R30,R10
	clr R31
	andi R30,15
	andi R31,0
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _rprintfChar
	.dbline -2
L46:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r data 10 c
	.dbend
	.dbfunc e rprintfu08 _rprintfu08 fV
;           data -> R10
	.even
_rprintfu08::
	xcall push_gset3x
	mov R10,R16
	.dbline -1
	.dbline 127
; 		 }
; 
; 		 WDR();
; 		 delay_nms(1000);   //方便看数据
; 		 WDR();
; 		 PORTA|=(1<<PA0);
	.dbline 129
;   		 PORTA|=(1<<PA1);
;     }
	mov R16,R10
	swap R16
	andi R16,#0x0F
	xcall _rprintfu04
	.dbline 130
; }
	mov R16,R10
	xcall _rprintfu04
	.dbline -2
L47:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r data 10 c
	.dbend
	.dbfunc e rprintfu16 _rprintfu16 fV
;           data -> R10,R11
	.even
_rprintfu16::
	xcall push_gset3x
	movw R10,R16
	.dbline -1
	.dbline 136
; 
; 
; 
; 
; 
; 
	.dbline 138
; 
; 
	movw R16,R10
	mov R16,R17
	clr R17
	xcall _rprintfu08
	.dbline 139
; 
	mov R16,R10
	xcall _rprintfu08
	.dbline -2
L48:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r data 10 s
	.dbend
	.dbfunc e rprintfu32 _rprintfu32 fV
;           data -> y+0
	.even
_rprintfu32::
	xcall push_arg4
	.dbline -1
	.dbline 145
; 
; 
; 
; 
; 
; 
	.dbline 147
; 
; 
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R16,R4
	xcall _rprintfu16
	.dbline 148
; 
	movw R30,R28
	ldd R16,z+0
	ldd R17,z+1
	xcall _rprintfu16
	.dbline -2
L49:
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l data 0 l
	.dbend
	.dbfunc e rprintfFloat _rprintfFloat fV
;       negative -> R10
;     firstplace -> y+12
;          digit -> R14
;              i -> R12
;          place -> y+0
;              x -> y+21
;      numDigits -> y+19
	.even
_rprintfFloat::
	xcall push_arg4
	xcall push_gset5x
	sbiw R28,13
	.dbline -1
	.dbline 159
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 160
; 
	clr R0
	std y+12,R0
	.dbline 163
; 
; 
; 
	ldi R16,<L51
	ldi R17,>L51
	xcall lpm32
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 166
; 
; 
; 
	movw R30,R28
	ldd R2,z+21
	ldd R3,z+22
	ldd R4,z+23
	ldd R5,z+24
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L54
	ldi R17,>L54
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall cmp32f
	brge L52
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L53
L52:
	clr R10
	clr R11
L53:
	.dbline 168
; 
; 
	ldi R16,<L54
	ldi R17,>L54
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R30,R28
 ; stack offset 4
	ldd R2,z+25
	ldd R3,z+26
	ldd R4,z+27
	ldd R5,z+28
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	xcall cmp32f
	brge L55
	movw R30,R28
	ldd R2,z+21
	ldd R3,z+22
	ldd R4,z+23
	ldd R5,z+24
	movw R30,R28
	std z+4,R2
	std z+5,R3
	std z+6,R4
	std z+7,R5
	xjmp L56
L55:
	movw R30,R28
	ldd R2,z+21
	ldd R3,z+22
	ldd R4,z+23
	ldd R5,z+24
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	xcall neg32f
	movw R30,R28
	std z+4,R16
	std z+5,R17
	std z+6,R18
	std z+7,R19
L56:
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	std z+21,R2
	std z+22,R3
	std z+23,R4
	std z+24,R5
	.dbline 171
; 
; 
; 
	clr R12
	xjmp L60
L57:
	.dbline 172
; 
	.dbline 173
; 
	movw R30,R28
	ldd R2,z+21
	ldd R3,z+22
	ldd R4,z+23
	ldd R5,z+24
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R30,R28
 ; stack offset 4
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R5
	st -y,R4
	st -y,R3

⌨️ 快捷键说明

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