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

📄 linsci.ls

📁 该程序是ST7MC驱动BLDC120
💻 LS
📖 第 1 页 / 共 2 页
字号:
   1                     ; C Compiler for ST7 (COSMIC Software)
   2                     ; Generator V4.4a - 17 Dec 2001
   3                     ; Optimizer V4.2g - 21 Dec 2001
   5                     	switch	.data
   6  0000               _MotorStatus_Backup:
   7  0000 00            	dc.b	0
  48                     ; 47 void SCI_Config(void)
  48                     ; 48 {
  49                     .text:	section	.text,new
  50  0000               _SCI_Config:
  53                     ; 49 	Resert_SCIRX_Watchdog();	// 6 second RX watchdog Refresh	
  55  0000 cd0000        	call	_Resert_SCIRX_Watchdog
  57                     ; 51 	SCIBRR = TX_RX_SCIBRR_2400_Bauds;	// 2.4K bauds TX RX 
  59  0003 a6e4          	ld	a,#228
  60  0005 b700          	ld	_SCIBRR,a
  61                     ; 53     SCISR;               		// Clear all the flags in Status register
  63  0007 b600          	ld	a,_SCISR
  64                     ; 54     SCIDR;
  66  0009 b600          	ld	a,_SCIDR
  67                     ; 55     SCIDR = 0xff;
  69  000b a6ff          	ld	a,#255
  70  000d b700          	ld	_SCIDR,a
  71                     ; 57 	SCICR1 = 0x00;				// SCI on,8 bit length,disable parity
  73  000f 3f00          	clr	_SCICR1
  74                     ; 58 	SCICR2 = SCI_RIE + SCI_RE + SCI_TE;	// Receive/transmit enable,Receive interrupt enable			
  76  0011 a62c          	ld	a,#44
  77  0013 b700          	ld	_SCICR2,a
  78                     ; 60 	Rx_Index = 0;               // Initializes variables 
  80  0015 4f            	clr	a
  81  0016 c70005        	ld	L5_Rx_Index,a
  82                     ; 61 	Tx_Index = 0;				
  84  0019 c70006        	ld	L3_Tx_Index,a
  85                     ; 62 	SCI_Status = 0;
  87  001c c70004        	ld	L7_SCI_Status,a
  88                     ; 63 	PtrToSCIBuffRx = Lin_Rx_Buffer;
  90  001f ae07          	ld	x,#high(_Lin_Rx_Buffer)
  91  0021 cf0000        	ld	_PtrToSCIBuffRx,x
  92  0024 a607          	ld	a,#low(_Lin_Rx_Buffer)
  93  0026 c70001        	ld	_PtrToSCIBuffRx+1,a
  94                     ; 64 } 
  97  0029 81            	ret	
 139                     ; 74 void SCI_Send_Data(void)
 139                     ; 75 {	
 140                     .text:	section	.text,new
 142                     	xref.b	_SCI_Send_Data$L
 143  0000               _SCI_Send_Data:
 146                     ; 76 	if (Timer_IsSCITXDelayElapsed() == TRUE)
 148  0000 cd0000        	call	_Timer_IsSCITXDelayElapsed
 150  0003 a101          	cp	a,#1
 151  0005 2703cc008e    	jrne	L54
 152                     ; 80 		Lin_Tx_Buffer[0] = Slave_Addr;		// master address	
 154  000a a601          	ld	a,#1
 155  000c c70010        	ld	_Lin_Tx_Buffer,a
 156                     ; 81 		Lin_Tx_Buffer[1] = Master_Addr;    	// slave address 
 158  000f 4f            	clr	a
 159  0010 c70011        	ld	_Lin_Tx_Buffer+1,a
 160                     ; 82 		Lin_Tx_Buffer[2] = SCI_COM;    		// command
 162  0013 a610          	ld	a,#16
 163  0015 c70012        	ld	_Lin_Tx_Buffer+2,a
 164                     ; 83 		Lin_Tx_Buffer[3] = Data_Length - 1; // data length - 1 
 166  0018 a603          	ld	a,#3
 167  001a c70013        	ld	_Lin_Tx_Buffer+3,a
 168                     ; 84 		Lin_Tx_Buffer[4] = (u8)(Freq_Motor/(10 * Pole_Pair_Num));	// actual frequency   	
 170  001d c60001        	ld	a,_Freq_Motor+1
 171  0020 ce0000        	ld	x,_Freq_Motor
 172  0023 3f00          	clr	c_y
 173  0025 90ae14        	ld	y,#20
 174  0028 cd0000        	call	c_udiv
 176  002b c70014        	ld	_Lin_Tx_Buffer+4,a
 177                     ; 85 		Lin_Tx_Buffer[6] = (u8)(Freq_Motor/(10 * Pole_Pair_Num)); 
 179  002e c60001        	ld	a,_Freq_Motor+1
 180  0031 ce0000        	ld	x,_Freq_Motor
 181  0034 3f00          	clr	c_y
 182  0036 90ae14        	ld	y,#20
 183  0039 cd0000        	call	c_udiv
 185  003c c70016        	ld	_Lin_Tx_Buffer+6,a
 186                     ; 91 		Lin_Tx_Buffer[5] = (u8)(MotorStatus_Backup & FAULT_MSK);      
 188  003f c60000        	ld	a,_MotorStatus_Backup
 189  0042 a4f0          	and	a,#240
 190  0044 c70015        	ld	_Lin_Tx_Buffer+5,a
 191                     ; 92 		Lin_Tx_Buffer[7] = (u8)(MotorStatus_Backup & FAULT_MSK);
 193  0047 c60000        	ld	a,_MotorStatus_Backup
 194  004a a4f0          	and	a,#240
 195  004c c70017        	ld	_Lin_Tx_Buffer+7,a
 196                     ; 94 		Lin_Tx_Buffer[8] = 0x00;         // checksum
 198  004f 4f            	clr	a
 199  0050 c70018        	ld	_Lin_Tx_Buffer+8,a
 200                     ; 95 		for (i=0;i<8;i++)
 202  0053 3fff          	clr	_SCI_Send_Data$L-1
 203  0055               L74:
 204                     ; 97 			Lin_Tx_Buffer[8] += Lin_Tx_Buffer[i];						
 206  0055 beff          	ld	x,_SCI_Send_Data$L-1
 207  0057 c60018        	ld	a,_Lin_Tx_Buffer+8
 208  005a db0010        	add	a,(_Lin_Tx_Buffer,x)
 209  005d c70018        	ld	_Lin_Tx_Buffer+8,a
 210                     ; 95 		for (i=0;i<8;i++)
 212  0060 3cff          	inc	_SCI_Send_Data$L-1
 215  0062 b6ff          	ld	a,_SCI_Send_Data$L-1
 216  0064 a108          	cp	a,#8
 217  0066 25ed          	jrult	L74
 218                     ; 99 		Lin_Tx_Buffer[8] =	(u8)(0 - Lin_Tx_Buffer[8]);
 220  0068 c60018        	ld	a,_Lin_Tx_Buffer+8
 221  006b 40            	neg	a
 222  006c c70018        	ld	_Lin_Tx_Buffer+8,a
 223                     ; 101 		PtrToSCIBuffTx = Lin_Tx_Buffer; 	// copies the user data to global variables  
 225  006f ae10          	ld	x,#high(_Lin_Tx_Buffer)
 226  0071 cf0002        	ld	_PtrToSCIBuffTx,x
 227  0074 a610          	ld	a,#low(_Lin_Tx_Buffer)
 228  0076 c70003        	ld	_PtrToSCIBuffTx+1,a
 229                     ; 105 	    Tx_Index = LIN_TX_BUFFER_SIZE;  
 231  0079 a609          	ld	a,#9
 232  007b c70006        	ld	L3_Tx_Index,a
 233                     ; 107     	SCISR;                          // clear TDRE & TC bit
 235  007e b600          	ld	a,_SCISR
 236                     ; 108 	    SCIDR = *PtrToSCIBuffTx;        /* First byte is transmitted to generate the
 238  0080 bf00          	ld	c_x,x
 239  0082 c60003        	ld	a,_PtrToSCIBuffTx+1
 240  0085 b701          	ld	c_x+1,a
 241  0087 92c600        	ld	a,[c_x.w]
 242  008a b700          	ld	_SCIDR,a
 243                     ; 110 	   	SCICR2 |= SCI_TIE; 		//Enable TDRE Interrupt
 245  008c 1e00          	bset	_SCICR2,#7
 246  008e               L54:
 247                     ; 112 } 
 250  008e 81            	ret	
 275                     ; 121 BOOL SCI_IsTransmitCompleted(void)
 275                     ; 122 {    
 276                     .text:	section	.text,new
 277  0000               _SCI_IsTransmitCompleted:
 280                     ; 123    	if ((Tx_Index == 0) && (SCISR & SCI_TC)) return (TRUE);   	
 282  0000 c60006        	ld	a,L3_Tx_Index
 283  0003 2606          	jrne	L56
 285  0005 0d0003        	btjf	_SCISR,#6,L56
 288  0008 a601          	ld	a,#1
 291  000a 81            	ret	
 292  000b               L56:
 293                     ; 124    	else return (FALSE);
 295  000b 4f            	clr	a
 298  000c 81            	ret	
 346                     ; 134 BOOL SCI_IsReceptionCompleted(void)  
 346                     ; 135 {       
 347                     .text:	section	.text,new
 349                     	xref.b	_SCI_IsReceptionCompleted$L
 350  0000               _SCI_IsReceptionCompleted:
 353                     ; 136     if (SCI_Status & RX_Complete)                                         
 355  0000 c60004        	ld	a,L7_SCI_Status
 356  0003 a580          	bcp	a,#128
 357  0005 274c          	jreq	L311
 358                     ; 140         SCI_Status &= (u8)(~RX_Complete);    	
 360  0007 c60004        	ld	a,L7_SCI_Status
 361  000a a47f          	and	a,#127
 362  000c c70004        	ld	L7_SCI_Status,a
 363                     ; 142         temp = Lin_Rx_Buffer[0];
 365  000f c60007        	ld	a,_Lin_Rx_Buffer
 366  0012 b7fe          	ld	_SCI_IsReceptionCompleted$L-2,a
 367                     ; 143         for (i=1;i<9;i++) 
 369  0014 a601          	ld	a,#1
 370  0016 b7ff          	ld	_SCI_IsReceptionCompleted$L-1,a
 371  0018               L511:
 372                     ; 145         	temp += Lin_Rx_Buffer[i];
 374  0018 beff          	ld	x,_SCI_IsReceptionCompleted$L-1
 375  001a b6fe          	ld	a,_SCI_IsReceptionCompleted$L-2
 376  001c db0007        	add	a,(_Lin_Rx_Buffer,x)
 377  001f b7fe          	ld	_SCI_IsReceptionCompleted$L-2,a
 378                     ; 143         for (i=1;i<9;i++) 
 380  0021 3cff          	inc	_SCI_IsReceptionCompleted$L-1
 383  0023 b6ff          	ld	a,_SCI_IsReceptionCompleted$L-1
 384  0025 a109          	cp	a,#9
 385  0027 25ef          	jrult	L511
 386                     ; 147         if ((temp == 0x00) && (Lin_Rx_Buffer[4] == Lin_Rx_Buffer[6]) 
 386                     ; 148                            && (Lin_Rx_Buffer[5] == Lin_Rx_Buffer[7]))
 388  0029 3dfe          	tnz	_SCI_IsReceptionCompleted$L-2
 389  002b 2624          	jrne	L321
 391  002d c6000b        	ld	a,_Lin_Rx_Buffer+4
 392  0030 c1000d        	cp	a,_Lin_Rx_Buffer+6
 393  0033 261c          	jrne	L321
 395  0035 c6000c        	ld	a,_Lin_Rx_Buffer+5
 396  0038 c1000e        	cp	a,_Lin_Rx_Buffer+7
 397  003b 2614          	jrne	L321
 398                     ; 150 	    	Timer_SetSCITXDelayPeriod(10);		// 100ms delay before transmission begin
 400  003d a60a          	ld	a,#10
 401  003f cd0000        	call	_Timer_SetSCITXDelayPeriod
 403                     ; 151     		Set_TargetSpeed(Lin_Rx_Buffer[4]);
 405  0042 c6000b        	ld	a,_Lin_Rx_Buffer+4
 406  0045 cd0000        	call	_Set_TargetSpeed
 408                     ; 152     		Set_SpdVarPeriod(Lin_Rx_Buffer[5]);        
 410  0048 c6000c        	ld	a,_Lin_Rx_Buffer+5
 411  004b cd0000        	call	_Set_SpdVarPeriod
 413                     ; 153 	    	return(TRUE);
 415  004e a601          	ld	a,#1
 418  0050 81            	ret	
 419  0051               L321:
 420                     ; 155     	else return(FALSE);	
 422  0051 4f            	clr	a
 425  0052 81            	ret	
 426  0053               L311:
 427                     ; 157     else return(FALSE);		    	   	
 429  0053 4f            	clr	a
 432  0054 81            	ret	
 465                     ; 175 void SCI_IT_Routine (void)
 465                     ; 176 {                                                 
 466                     .text:	section	.text,new
 468                     	xref.b	_SCI_IT_Routine$L
 469  0000               _SCI_IT_Routine:
 471  0000 b600          	ld	a,c_x
 472  0002 b700          	ld	_SCI_IT_Routine$L+0,a
 473  0004 b601          	ld	a,c_x+1
 474  0006 b701          	ld	_SCI_IT_Routine$L+1,a
 476                     ; 178     if (SCISR & SCI_RDRF)              
 478  0008 0a0003cc00e2  	btjf	_SCISR,#5,L751
 479                     ; 180         if (SCISR & SCI_ErrValue)   // Error(OR/NF/FE) happened
 481  000e b600          	ld	a,_SCISR
 482  0010 a50e          	bcp	a,#14

⌨️ 快捷键说明

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