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

📄 结点1.lst

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 LST
📖 第 1 页 / 共 3 页
字号:
  i                    --> Y,+1
     219 E081      LDI	R24,1
     21A 9380 00D8 STS	0x00D8,R24
(0046) 	while (CANGSTA & BIT(ENFG));
     21C 9020 00D9 LDS	R2,0x00D9
     21E FC22      SBRC	R2,2
     21F CFFC      RJMP	0x021C
(0047) 	CAN_ClrMailBox();
     220 DFD0      RCALL	_CAN_ClrMailBox
(0048) 	CANBT1 = 0x02;
     221 E082      LDI	R24,2
     222 9380 00E2 STS	0x00E2,R24
(0049) 	CANBT2 = 0x04;
     224 E084      LDI	R24,4
     225 9380 00E3 STS	0x00E3,R24
(0050) 	CANBT3 = 0x13;
     227 E183      LDI	R24,0x13
     228 9380 00E4 STS	0x00E4,R24
(0051) 	CANTCON = 0xFF;
     22A EF8F      LDI	R24,0xFF
     22B 9380 00E5 STS	0x00E5,R24
(0052) 
(0053) 	CANPAGE = 0x00;
     22D 2422      CLR	R2
     22E 9220 00ED STS	0x00ED,R2
(0054) 	CANSTMOB = 0x00;
     230 9220 00EE STS	0x00EE,R2
(0055) 	CANIDT4 = 0x00;
     232 9220 00F0 STS	0x00F0,R2
(0056) 	CANIDT3 = 0x00; 
     234 9220 00F1 STS	0x00F1,R2
(0057) 	CANIDT2 = 0x40;
     236 E480      LDI	R24,0x40
     237 9380 00F2 STS	0x00F2,R24
(0058) 	CANIDT1 = 0x02;
     239 E082      LDI	R24,2
     23A 9380 00F3 STS	0x00F3,R24
(0059)    
(0060)   	CANIDM4  = 0xFF;
     23C EF8F      LDI	R24,0xFF
     23D 9380 00F4 STS	0x00F4,R24
(0061)   	CANIDM3  = 0xFF; 
     23F 9380 00F5 STS	0x00F5,R24
(0062)   	CANIDM2  = 0xFF;
     241 9380 00F6 STS	0x00F6,R24
(0063)   	CANIDM1  = 0xFF;
     243 9380 00F7 STS	0x00F7,R24
(0064) 	CANCDMOB = 0x88;
     245 E888      LDI	R24,0x88
     246 9380 00EF STS	0x00EF,R24
(0065) 	
(0066) 	CANGCON = 0x02;
     248 E082      LDI	R24,2
     249 9380 00D8 STS	0x00D8,R24
(0067) 	while (!(CANGSTA & BIT(ENFG)));
     24B 9020 00D9 LDS	R2,0x00D9
     24D FE22      SBRS	R2,2
     24E CFFC      RJMP	0x024B
     24F 9508      RET
FILE: D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
(0001) #define _USART1_H
(0002) #include "AT90CAN128.H"
(0003) 
(0004) uint8 rec_Buf[16];
(0005) uint8 volatile USART1_sendPosi =0;
(0006) uint8 volatile USART1_sendCount=0;
(0007) 
(0008) //UART1 initialize
(0009) // desired baud rate:9600
(0010) // actual baud rate:9615 (0.2%)
(0011) // char size: 8 bit
(0012) // parity: Disabled
(0013) void USART1_Init(void)
(0014) {
(0015) uint8 i;
(0016) 
(0017)  UCSR1B = 0x00; //disable while setting baud rate
_USART1_Init:
  i                    --> Y,+1
     250 2422      CLR	R2
     251 9220 00C9 STS	0x00C9,R2
(0018)  UCSR1A = 0x00;
     253 9220 00C8 STS	0x00C8,R2
(0019)  UCSR1C = 0x06;
     255 E086      LDI	R24,6
     256 9380 00CA STS	0x00CA,R24
(0020)  UBRR1L = 0x33; //set baud rate lo单片机内部晶振=8M
     258 E383      LDI	R24,0x33
     259 9380 00CC STS	0x00CC,R24
(0021)  UBRR1H = 0x00; //set baud rate hi
     25B 9220 00CD STS	0x00CD,R2
(0022)  UCSR1B = (1 << TXEN1) | (1 << TXCIE1); 
     25D E488      LDI	R24,0x48
     25E 9380 00C9 STS	0x00C9,R24
     260 9508      RET
(0023) }
(0024) 
(0025) 
(0026) void USART1_Begin_Send(void)
(0027) {
(0028) 	USART1_sendCount = 16;
_USART1_Begin_Send:
     261 E180      LDI	R24,0x10
     262 9380 010C STS	USART1_sendCount,R24
(0029) 	USART1_sendPosi = 0;
     264 2422      CLR	R2
     265 9220 010B STS	USART1_sendPosi,R2
(0030)    UDR1 = rec_Buf[USART1_sendPosi++];
     267 9020 010B LDS	R2,USART1_sendPosi
     269 2433      CLR	R3
     26A 2D82      MOV	R24,R2
     26B 5F8F      SUBI	R24,0xFF
     26C 9380 010B STS	USART1_sendPosi,R24
     26E E08D      LDI	R24,0xD
     26F E091      LDI	R25,1
     270 2DE2      MOV	R30,R2
     271 27FF      CLR	R31
     272 0FE8      ADD	R30,R24
     273 1FF9      ADC	R31,R25
     274 8020      LDD	R2,Z+0
     275 9220 00CE STS	0x00CE,R2
     277 9508      RET
_USART1_TX_ISR:
     278 922A      ST	R2,-Y
     279 923A      ST	R3,-Y
     27A 938A      ST	R24,-Y
     27B 939A      ST	R25,-Y
     27C 93EA      ST	R30,-Y
     27D 93FA      ST	R31,-Y
     27E B62F      IN	R2,0x3F
     27F 922A      ST	R2,-Y
(0031) }
(0032) 
(0033) 
(0034) #pragma interrupt_handler USART1_TX_ISR:iv_USART1_TX
(0035) void USART1_TX_ISR(void) 
(0036) {
(0037) 	if (USART1_sendPosi < USART1_sendCount)
     280 9020 010C LDS	R2,USART1_sendCount
     282 9030 010B LDS	R3,USART1_sendPosi
     284 1432      CP	R3,R2
     285 F480      BCC	0x0296
(0038) 			UDR1 = rec_Buf[USART1_sendPosi++];
     286 9020 010B LDS	R2,USART1_sendPosi
     288 2433      CLR	R3
     289 2D82      MOV	R24,R2
     28A 5F8F      SUBI	R24,0xFF
     28B 9380 010B STS	USART1_sendPosi,R24
     28D E08D      LDI	R24,0xD
     28E E091      LDI	R25,1
     28F 2DE2      MOV	R30,R2
     290 27FF      CLR	R31
     291 0FE8      ADD	R30,R24
     292 1FF9      ADC	R31,R25
     293 8020      LDD	R2,Z+0
     294 9220 00CE STS	0x00CE,R2
     296 9029      LD	R2,Y+
     297 BE2F      OUT	0x3F,R2
     298 91F9      LD	R31,Y+
     299 91E9      LD	R30,Y+
     29A 9199      LD	R25,Y+
     29B 9189      LD	R24,Y+
     29C 9039      LD	R3,Y+
     29D 9029      LD	R2,Y+
     29E 9518      RETI
_Separate_Integer_Of_Bit:
  Q                    --> R10
  Array                --> R14
  num                  --> R12
     29F 940E 0339 CALL	push_xgset00FC
     2A1 0179      MOVW	R14,R18
     2A2 0168      MOVW	R12,R16
FILE: D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\DISPLAY.C
(0001) #include "AT90CAN128.H"
(0002) 
(0003) uint8 dis[2];
(0004) const uint8 NUMBER_ROM[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
(0005) 
(0006) void Separate_Integer_Of_Bit(int16 num,uint8 *Array)
(0007) {
(0008) 	int8 *Q = Array;
     2A3 0157      MOVW	R10,R14
(0009) 
(0010) 	num %= 100;
     2A4 E624      LDI	R18,0x64
     2A5 E030      LDI	R19,0
     2A6 0186      MOVW	R16,R12
     2A7 940E 02E9 CALL	mod16s
     2A9 0168      MOVW	R12,R16
(0011) 	*Q++ = num / 10;
     2AA E02A      LDI	R18,0xA
     2AB E030      LDI	R19,0
     2AC 940E 02ED CALL	div16s
     2AE 01F5      MOVW	R30,R10
     2AF 9301      ST	R16,Z+
     2B0 015F      MOVW	R10,R30
(0012) 	*Q = num % 10;
     2B1 E02A      LDI	R18,0xA
     2B2 E030      LDI	R19,0
     2B3 0186      MOVW	R16,R12
     2B4 940E 02E9 CALL	mod16s
     2B6 01F5      MOVW	R30,R10
     2B7 8300      STD	Z+0,R16
     2B8 940C 0323 JMP	pop_xgset00FC
_DISPLAY_Init:
  i                    --> Y,+1
  digit                --> Y,+0
  num                  --> R10
     2BA 92AA      ST	R10,-Y
     2BB 92BA      ST	R11,-Y
     2BC 0158      MOVW	R10,R16
     2BD 9722      SBIW	R28,2
(0013) }
(0014) 
(0015) 
(0016) ///////////////////////////////////////////////////////////////////////////////////////////////
(0017) //1.dot=0 无小数点 2.dot=1 小数点在十位数 3.dot=2 小数点在百位数 4.dot=3 小数点在千位数
(0018) ///////////////////////////////////////////////////////////////////////////////////////////////
(0019) void DISPLAY_Init(int16 num)
(0020) {
(0021) 	uint8 i;
(0022) 	uint8 digit[2];
(0023) 
(0024) 	Separate_Integer_Of_Bit(num,digit);
     2BE 019E      MOVW	R18,R28
     2BF 0185      MOVW	R16,R10
     2C0 DFDE      RCALL	_Separate_Integer_Of_Bit
(0025) 	if (digit[0] > 0)
     2C1 E080      LDI	R24,0
     2C2 8028      LDD	R2,Y+0
     2C3 1582      CP	R24,R2
     2C4 F440      BCC	0x02CD
(0026) 		digit[0] = NUMBER_ROM[digit[0]];
     2C5 E984      LDI	R24,0x94
     2C6 E090      LDI	R25,0
     2C7 2DE2      MOV	R30,R2
     2C8 27FF      CLR	R31
     2C9 0FE8      ADD	R30,R24
     2CA 1FF9      ADC	R31,R25
     2CB 9026      ELPM	R2,0(Z)
     2CC 8228      STD	Y+0,R2
(0027) 	digit[1] = NUMBER_ROM[digit[1]];
     2CD E984      LDI	R24,0x94
     2CE E090      LDI	R25,0
     2CF 81E9      LDD	R30,Y+1
     2D0 27FF      CLR	R31
     2D1 0FE8      ADD	R30,R24
     2D2 1FF9      ADC	R31,R25
     2D3 9026      ELPM	R2,1(Z)
     2D4 8229      STD	Y+1,R2
(0028) 	OS_ENTER_CRITICAL();
     2D5 94F8      BCLR	7
(0029) 	dis[0] = digit[0];
     2D6 8028      LDD	R2,Y+0
     2D7 9220 011D STS	dis,R2
(0030) 	dis[1] = digit[1];
     2D9 8029      LDD	R2,Y+1
     2DA 9220 011E STS	dis+1,R2
(0031) 	OS_EXIT_CRITICAL();
     2DC 9478      BSET	7
     2DD 9622      ADIW	R28,2
     2DE 90B9      LD	R11,Y+
     2DF 90A9      LD	R10,Y+
     2E0 9508      RET
(0032) }
(0033) 
(0034) 
(0035) uint8 DISPLAY_CODE(uint8 ptr)
(0036) {
(0037) 	return (dis[ptr]);
FILE: <library>
_DISPLAY_CODE:
  ptr                  --> R16
     2E1 E18D      LDI	R24,0x1D
     2E2 E091      LDI	R25,1
     2E3 2FE0      MOV	R30,R16
     2E4 27FF      CLR	R31
     2E5 0FE8      ADD	R30,R24
     2E6 1FF9      ADC	R31,R25
     2E7 8100      LDD	R16,Z+0
     2E8 9508      RET
mod16s:
     2E9 9468      BSET	6
     2EA 92DA      ST	R13,-Y
     2EB 2ED1      MOV	R13,R17
     2EC C004      RJMP	0x02F1
div16s:
     2ED 94E8      BCLR	6
     2EE 92DA      ST	R13,-Y
     2EF 2ED1      MOV	R13,R17
     2F0 26D3      EOR	R13,R19
     2F1 FF17      SBRS	R17,7
     2F2 C004      RJMP	0x02F7
     2F3 9510      COM	R17
     2F4 9500      COM	R16
     2F5 5F0F      SUBI	R16,0xFF
     2F6 4F1F      SBCI	R17,0xFF
     2F7 FF37      SBRS	R19,7
     2F8 C004      RJMP	0x02FD
     2F9 9530      COM	R19
     2FA 9520      COM	R18
     2FB 5F2F      SUBI	R18,0xFF
     2FC 4F3F      SBCI	R19,0xFF
     2FD 940E 030A CALL	xdiv16u
     2FF FED7      SBRS	R13,7
     300 C004      RJMP	0x0305
     301 9510      COM	R17
     302 9500      COM	R16
     303 5F0F      SUBI	R16,0xFF
     304 4F1F      SBCI	R17,0xFF
     305 90D9      LD	R13,Y+
     306 9508      RET
mod16u:
     307 9468      BSET	6
     308 C001      RJMP	xdiv16u
div16u:
     309 94E8      BCLR	6
xdiv16u:
     30A 92EA      ST	R14,-Y
     30B 92FA      ST	R15,-Y
     30C 938A      ST	R24,-Y
     30D 24EE      CLR	R14
     30E 24FF      CLR	R15
     30F E180      LDI	R24,0x10
     310 0F00      LSL	R16
     311 1F11      ROL	R17
     312 1CEE      ROL	R14
     313 1CFF      ROL	R15
     314 16E2      CP	R14,R18
     315 06F3      CPC	R15,R19
     316 F018      BCS	0x031A
     317 1AE2      SUB	R14,R18
     318 0AF3      SBC	R15,R19
     319 9503      INC	R16
     31A 958A      DEC	R24
     31B F7A1      BNE	0x0310
     31C F416      BRTC	0x031F
     31D 2D0E      MOV	R16,R14
     31E 2D1F      MOV	R17,R15
     31F 9189      LD	R24,Y+
     320 90F9      LD	R15,Y+
     321 90E9      LD	R14,Y+
     322 9508      RET
pop_xgset00FC:
     323 90A9      LD	R10,Y+
     324 90B9      LD	R11,Y+
     325 90C9      LD	R12,Y+
     326 90D9      LD	R13,Y+
     327 90E9      LD	R14,Y+
     328 90F9      LD	R15,Y+
     329 9508      RET
pop_xgsetF0FC:
     32A 90A9      LD	R10,Y+
     32B 90B9      LD	R11,Y+
     32C 90C9      LD	R12,Y+
     32D 90D9      LD	R13,Y+
     32E 90E9      LD	R14,Y+
     32F 90F9      LD	R15,Y+
     330 9149      LD	R20,Y+
     331 9159      LD	R21,Y+
     332 9169      LD	R22,Y+
     333 9179      LD	R23,Y+
     334 9508      RET
push_xgsetF0FC:
     335 937A      ST	R23,-Y
     336 936A      ST	R22,-Y
push_xgset30FC:
     337 935A      ST	R21,-Y
     338 934A      ST	R20,-Y
push_xgset00FC:
     339 92FA      ST	R15,-Y
     33A 92EA      ST	R14,-Y
push_xgset003C:
     33B 92DA      ST	R13,-Y
     33C 92CA      ST	R12,-Y
     33D 92BA      ST	R11,-Y
     33E 92AA      ST	R10,-Y
     33F 9508      RET

⌨️ 快捷键说明

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