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

📄 adc.ls

📁 该程序是ST7MC驱动三洋压缩机(交流)
💻 LS
字号:
   1                     ; C Compiler for ST7 (COSMIC Software)
   2                     ; Generator V4.4a - 17 Dec 2001
   3                     ; Optimizer V4.2g - 21 Dec 2001
1542                     ; 95 void ADC_Init(void)
1542                     ; 96 {
1543                     	switch	.text
1544  0000               _ADC_Init:
1547                     ; 99 	ADCCSR = TEMP_SENSOR_CHANNEL;
1549  0000 a610          	ld	a,#16
1550  0002 b72e          	ld	_ADCCSR,a
1551                     ; 101 	InverterStatus = 0;
1553  0004 4f            	clr	a
1554  0005 c70000        	ld	L3501_InverterStatus,a
1555                     ; 102 }
1558  0008 81            	ret	
1612                     ; 112 u16 ADC_Get_10bits(u8 Channel)		
1612                     ; 113 {
1613                     	switch	.text
1615                     	xref.b	L7401_ADC_Get_10bits$L
1616  0009               L7401_ADC_Get_10bits:
1618  0009 b700          	ld	L7401_ADC_Get_10bits$L,a
1620                     ; 114 		u16 result = 0;
1622  000b 3ffe          	clr	L7401_ADC_Get_10bits$L-2
1623  000d 3fff          	clr	L7401_ADC_Get_10bits$L-1
1624                     ; 117 	ADCCSR = Channel;		// 4 Mhz sampling, ADC on
1626  000f b72e          	ld	_ADCCSR,a
1628  0011               L5211:
1629                     ; 119 	while (!ValBit(ADCCSR,ADCCSR_EOC));	// wait till end of conversion
1631  0011 0f2efd        	btjf	_ADCCSR,#7,L5211
1632                     ; 120 	ADCDRH;                       // and ignore 1st result
1634  0014 b62f          	ld	a,_ADCDRH
1635                     ; 122 	for (i=0;i<=7;i++)      // take 8 samples
1637  0016 3ffd          	clr	L7401_ADC_Get_10bits$L-3
1638  0018               L1411:
1639                     ; 124 		while (!ValBit(ADCCSR,ADCCSR_EOC));	// wait till end of conversion
1641  0018 0f2efd        	btjf	_ADCCSR,#7,L1411
1642                     ; 125 		result += ADCDRL;
1644  001b b630          	ld	a,_ADCDRL
1645  001d bbff          	add	a,L7401_ADC_Get_10bits$L-1
1646  001f b7ff          	ld	L7401_ADC_Get_10bits$L-1,a
1647  0021 2402          	jrnc	L01
1648  0023 3cfe          	inc	L7401_ADC_Get_10bits$L-2
1649  0025               L01:
1650                     ; 126 		result += (u16)(ADCDRH << 2);	// clear EOC bit
1652  0025 b62f          	ld	a,_ADCDRH
1653  0027 ae04          	ld	x,#4
1654  0029 42            	mul	x,a
1655  002a b7fc          	ld	L7401_ADC_Get_10bits$L-4,a
1656  002c bffb          	ld	L7401_ADC_Get_10bits$L-5,x
1657  002e b6ff          	ld	a,L7401_ADC_Get_10bits$L-1
1658  0030 bbfc          	add	a,L7401_ADC_Get_10bits$L-4
1659  0032 b7ff          	ld	L7401_ADC_Get_10bits$L-1,a
1660  0034 b6fe          	ld	a,L7401_ADC_Get_10bits$L-2
1661  0036 b9fb          	adc	a,L7401_ADC_Get_10bits$L-5
1662  0038 b7fe          	ld	L7401_ADC_Get_10bits$L-2,a
1663                     ; 122 	for (i=0;i<=7;i++)      // take 8 samples
1665  003a 3cfd          	inc	L7401_ADC_Get_10bits$L-3
1668  003c b6fd          	ld	a,L7401_ADC_Get_10bits$L-3
1669  003e a108          	cp	a,#8
1670  0040 25d6          	jrult	L1411
1671                     ; 129 	result = result >> 3;	// div/8 -> smooth result
1673  0042 34fe          	srl	L7401_ADC_Get_10bits$L-2
1674  0044 36ff          	rrc	L7401_ADC_Get_10bits$L-1
1675  0046 34fe          	srl	L7401_ADC_Get_10bits$L-2
1676  0048 36ff          	rrc	L7401_ADC_Get_10bits$L-1
1677  004a 34fe          	srl	L7401_ADC_Get_10bits$L-2
1678  004c 36ff          	rrc	L7401_ADC_Get_10bits$L-1
1679                     ; 130 	return (result);
1681  004e b6ff          	ld	a,L7401_ADC_Get_10bits$L-1
1682  0050 befe          	ld	x,L7401_ADC_Get_10bits$L-2
1685  0052 81            	ret	
1738                     ; 142 u8 ADC_Get_8bits(u8 Channel)	
1738                     ; 143 {
1739                     	switch	.text
1741                     	xref.b	L1501_ADC_Get_8bits$L
1742  0053               L1501_ADC_Get_8bits:
1744  0053 b700          	ld	L1501_ADC_Get_8bits$L,a
1746                     ; 144 		u16 result = 0;
1748  0055 3ffd          	clr	L1501_ADC_Get_8bits$L-3
1749  0057 3ffe          	clr	L1501_ADC_Get_8bits$L-2
1750                     ; 147 	ADCCSR = Channel;		// 4 Mhz sampling, ADC on
1752  0059 b72e          	ld	_ADCCSR,a
1754  005b               L7711:
1755                     ; 149 	while (!ValBit(ADCCSR,ADCCSR_EOC));	// wait till end of conversion
1757  005b 0f2efd        	btjf	_ADCCSR,#7,L7711
1758                     ; 150 	ADCDRH;                       // and ignore 1st result
1760  005e b62f          	ld	a,_ADCDRH
1761                     ; 152 	for (i=0;i<=7;i++)      // take 8 samples
1763  0060 3fff          	clr	L1501_ADC_Get_8bits$L-1
1764  0062               L3121:
1765                     ; 154 		while (!ValBit(ADCCSR,ADCCSR_EOC));	// wait till end of conversion
1767  0062 0f2efd        	btjf	_ADCCSR,#7,L3121
1768                     ; 155 		result += ADCDRH;	// clear EOC bit
1770  0065 b62f          	ld	a,_ADCDRH
1771  0067 bbfe          	add	a,L1501_ADC_Get_8bits$L-2
1772  0069 b7fe          	ld	L1501_ADC_Get_8bits$L-2,a
1773  006b 2402          	jrnc	L41
1774  006d 3cfd          	inc	L1501_ADC_Get_8bits$L-3
1775  006f               L41:
1776                     ; 152 	for (i=0;i<=7;i++)      // take 8 samples
1778  006f 3cff          	inc	L1501_ADC_Get_8bits$L-1
1781  0071 b6ff          	ld	a,L1501_ADC_Get_8bits$L-1
1782  0073 a108          	cp	a,#8
1783  0075 25eb          	jrult	L3121
1784                     ; 158 	result = result >> 3;	// div/8 -> smooth result
1786  0077 34fd          	srl	L1501_ADC_Get_8bits$L-3
1787  0079 36fe          	rrc	L1501_ADC_Get_8bits$L-2
1788  007b 34fd          	srl	L1501_ADC_Get_8bits$L-3
1789  007d 36fe          	rrc	L1501_ADC_Get_8bits$L-2
1790  007f 34fd          	srl	L1501_ADC_Get_8bits$L-3
1791  0081 36fe          	rrc	L1501_ADC_Get_8bits$L-2
1792                     ; 159 	return ((u8)result);
1794  0083 b6fe          	ld	a,L1501_ADC_Get_8bits$L-2
1797  0085 81            	ret	
1820                     ; 170 u8 ADC_GetRV1(void)
1820                     ; 171 {
1821                     	switch	.text
1822  0086               _ADC_GetRV1:
1825                     ; 172 	return(ADC_Get_8bits(CONVERT_AIN13));
1827  0086 a61d          	ld	a,#29
1831  0088 20c9          	jp	L1501_ADC_Get_8bits
1854                     ; 175 u8 ADC_GetRV2(void)
1854                     ; 176 {
1855                     	switch	.text
1856  008a               _ADC_GetRV2:
1859                     ; 177 	return(ADC_Get_8bits(CONVERT_AIN11));
1861  008a a61b          	ld	a,#27
1865  008c 20c5          	jp	L1501_ADC_Get_8bits
1888                     ; 180 u8 ADC_GetRV3(void)
1888                     ; 181 {
1889                     	switch	.text
1890  008e               _ADC_GetRV3:
1893                     ; 182 	return(ADC_Get_8bits(CONVERT_AIN7));
1895  008e a617          	ld	a,#23
1899  0090 20c1          	jp	L1501_ADC_Get_8bits
1934                     ; 196 BOOL ADC_CheckOverTemp(void)
1934                     ; 197 {
1935                     	switch	.text
1937                     	xref.b	_ADC_CheckOverTemp$L
1938  0092               _ADC_CheckOverTemp:
1941                     ; 200 	HeatsinkTemp = ADC_Get_10bits(TEMP_SENSOR_CHANNEL);
1943  0092 a610          	ld	a,#16
1944  0094 cd0009        	call	L7401_ADC_Get_10bits
1946  0097 b7ff          	ld	_ADC_CheckOverTemp$L-1,a
1947  0099 bffe          	ld	_ADC_CheckOverTemp$L-2,x
1948                     ; 202 	if (HeatsinkTemp >= NTC_THRESHOLD)
1950  009b a06e          	sub	a,#110
1951  009d 9f            	ld	a,x
1952  009e a200          	sbc	a,#0
1953  00a0 250b          	jrult	L5621
1954                     ; 204 		InverterStatus |= OVER_TEMPERATURE;
1956  00a2 c60000        	ld	a,L3501_InverterStatus
1957  00a5 aa01          	or	a,#1
1958  00a7 c70000        	ld	L3501_InverterStatus,a
1959                     ; 205 		return(TRUE);
1961  00aa a601          	ld	a,#1
1964  00ac 81            	ret	
1965  00ad               L5621:
1966                     ; 209 		if ( (HeatsinkTemp >= (NTC_THRESHOLD - NTC_HYSTERESIS))
1966                     ; 210             && (InverterStatus & OVER_TEMPERATURE) )
1968  00ad b6ff          	ld	a,_ADC_CheckOverTemp$L-1
1969  00af a066          	sub	a,#102
1970  00b1 b6fe          	ld	a,_ADC_CheckOverTemp$L-2
1971  00b3 a200          	sbc	a,#0
1972  00b5 250a          	jrult	L1721
1974  00b7 c60000        	ld	a,L3501_InverterStatus
1975  00ba a501          	bcp	a,#1
1976  00bc 2703          	jreq	L1721
1977                     ; 212 			return(TRUE);	// Wait heatsink cooling before re-enabling inverter
1979  00be a601          	ld	a,#1
1982  00c0 81            	ret	
1983  00c1               L1721:
1984                     ; 216 			InverterStatus &= (u8)(~OVER_TEMPERATURE);
1986  00c1 c60000        	ld	a,L3501_InverterStatus
1987  00c4 a4fe          	and	a,#254
1988  00c6 c70000        	ld	L3501_InverterStatus,a
1989                     ; 217 			return(FALSE);	// Normal operation
1991  00c9 4f            	clr	a
1994  00ca 81            	ret	
2030                     ; 235 BOOL ADC_CheckOverVoltage(void)
2030                     ; 236 {
2031                     	switch	.text
2033                     	xref.b	_ADC_CheckOverVoltage$L
2034  00cb               _ADC_CheckOverVoltage:
2037                     ; 240     BusVoltage = ADC_Get_10bits(BUS_VOLTAGE_CHANNEL);
2039  00cb a611          	ld	a,#17
2040  00cd cd0009        	call	L7401_ADC_Get_10bits
2042  00d0 b7ff          	ld	_ADC_CheckOverVoltage$L-1,a
2043  00d2 bffe          	ld	_ADC_CheckOverVoltage$L-2,x
2044                     ; 242 	if (BusVoltage >= HVBUS_THRESHOLD)
2046  00d4 a0fc          	sub	a,#252
2047  00d6 9f            	ld	a,x
2048  00d7 a203          	sbc	a,#3
2049  00d9 250b          	jrult	L3131
2050                     ; 244 		InverterStatus |= OVER_VOLTAGE;
2052  00db c60000        	ld	a,L3501_InverterStatus
2053  00de aa02          	or	a,#2
2054  00e0 c70000        	ld	L3501_InverterStatus,a
2055                     ; 245 		return(TRUE);
2057  00e3 a601          	ld	a,#1
2060  00e5 81            	ret	
2061  00e6               L3131:
2062                     ; 249 		if ( (BusVoltage >= (HVBUS_THRESHOLD - HVBUS_HYSTERESIS))
2062                     ; 250             && (InverterStatus & OVER_VOLTAGE) )
2064  00e6 b6ff          	ld	a,_ADC_CheckOverVoltage$L-1
2065  00e8 a0e9          	sub	a,#233
2066  00ea b6fe          	ld	a,_ADC_CheckOverVoltage$L-2
2067  00ec a203          	sbc	a,#3
2068  00ee 250a          	jrult	L7131
2070  00f0 c60000        	ld	a,L3501_InverterStatus
2071  00f3 a502          	bcp	a,#2
2072  00f5 2703          	jreq	L7131
2073                     ; 252 			return(TRUE);	// Wait Bus voltage decrease before re-enabling inverter
2075  00f7 a601          	ld	a,#1
2078  00f9 81            	ret	
2079  00fa               L7131:
2080                     ; 256 			InverterStatus &= (u8)(~OVER_VOLTAGE);
2082  00fa c60000        	ld	a,L3501_InverterStatus
2083  00fd a4fd          	and	a,#253
2084  00ff c70000        	ld	L3501_InverterStatus,a
2085                     ; 257 			return(FALSE);	// Normal operation
2087  0102 4f            	clr	a
2090  0103 81            	ret	
2113                     ; 271 u8 ADC_GetBusVoltage(void)
2113                     ; 272 {
2114                     	switch	.text
2115  0104               _ADC_GetBusVoltage:
2118                     ; 273 	return(ADC_Get_8bits(BUS_VOLTAGE_CHANNEL));
2120  0104 a611          	ld	a,#17
2124  0106 cc0053        	jp	L1501_ADC_Get_8bits
2148                     ; 286 u8 ADC_GetHeatsinkTemp(void)
2148                     ; 287 {
2149                     	switch	.text
2150  0109               _ADC_GetHeatsinkTemp:
2153                     ; 288 	return(ADC_Get_8bits(TEMP_SENSOR_CHANNEL));
2155  0109 a610          	ld	a,#16
2159  010b cc0053        	jp	L1501_ADC_Get_8bits
2182                     	switch	.bss
2183  0000               L3501_InverterStatus:
2184  0000 00            	ds.b	1
2185                     	xdef	_ADC_GetBusVoltage
2186                     	xdef	_ADC_CheckOverVoltage
2187                     	xdef	_ADC_GetHeatsinkTemp
2188                     	xdef	_ADC_CheckOverTemp
2189                     	xdef	_ADC_GetRV3
2190                     	xdef	_ADC_GetRV2
2191                     	xdef	_ADC_GetRV1
2192                     	xdef	_ADC_Init
2212                     	end

⌨️ 快捷键说明

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