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

📄 main.ls

📁 利用PWM产生高精度正弦波,从PWM引脚输出的脉冲信号经过简单的低通滤波后,可以得到平滑的正弦波,波的频率可以微调
💻 LS
字号:
   1                     ; C Compiler for ST7 (COSMIC Software)
   2                     ; Generator V4.5b - 07 Sep 2004
1788                     ; 3 void main(void)
1788                     ; 4 {
1789                     	switch	.text
1791                     	xref.b	_main$L
1792  0000               _main:
1795                     ; 7 	Nop;
1798  0000 9d            nop
1800                     ; 9 	ARTARR = 0;
1803  0001 3f38          	clr	_ARTARR
1804                     ; 11 	PWMDCR0=0x20;
1806  0003 a620          	ld	a,#32
1807  0005 b734          	ld	_PWMDCR0,a
1808                     ; 12 	PWMDCR1=0x40;
1810  0007 a640          	ld	a,#64
1811  0009 b733          	ld	_PWMDCR1,a
1812                     ; 13 	PWMDCR2=0x80;
1814  000b a680          	ld	a,#128
1815  000d b732          	ld	_PWMDCR2,a
1816                     ; 14 	PWMDCR3=0xc0;
1818  000f a6c0          	ld	a,#192
1819  0011 b731          	ld	_PWMDCR3,a
1820                     ; 16 	ARTCSR |=0x2f;
1822  0013 b636          	ld	a,_ARTCSR
1823  0015 aa2f          	or	a,#47
1824  0017 b736          	ld	_ARTCSR,a
1825                     ; 17 	PWMCR = 0xf5;
1827  0019 a6f5          	ld	a,#245
1828  001b b735          	ld	_PWMCR,a
1829                     ; 18 	_asm("RIM");
1832  001d 9a            RIM
1834  001e               L7121:
1835                     ; 21 		for(ii=0;ii<256;ii++)
1837  001e 3ffc          	clr	_main$L-4
1838  0020 3ffd          	clr	_main$L-3
1839  0022               L3221:
1840                     ; 23 		     for(jj=0;jj<20;jj++)
1842  0022 3ffe          	clr	_main$L-2
1843  0024 3fff          	clr	_main$L-1
1844  0026               L1321:
1845                     ; 24 		     Nop;			
1848  0026 9d            nop
1850                     ; 23 		     for(jj=0;jj<20;jj++)
1852  0027 3cff          	inc	_main$L-1
1853  0029 2602          	jrne	L6
1854  002b 3cfe          	inc	_main$L-2
1855  002d               L6:
1858  002d b6ff          	ld	a,_main$L-1
1859  002f a014          	sub	a,#20
1860  0031 b6fe          	ld	a,_main$L-2
1861  0033 a200          	sbc	a,#0
1862  0035 25ef          	jrult	L1321
1863                     ; 21 		for(ii=0;ii<256;ii++)
1866  0037 3cfd          	inc	_main$L-3
1867  0039 2602          	jrne	L01
1868  003b 3cfc          	inc	_main$L-4
1869  003d               L01:
1872  003d b6fc          	ld	a,_main$L-4
1873  003f a101          	cp	a,#1
1874  0041 25df          	jrult	L3221
1875                     ; 26 		PWMDCR1+=2;
1877  0043 3c33          	inc	_PWMDCR1
1878  0045 3c33          	inc	_PWMDCR1
1879                     ; 27 		PWMDCR2+=3;
1881  0047 3c32          	inc	_PWMDCR2
1882  0049 3c32          	inc	_PWMDCR2
1883  004b 3c32          	inc	_PWMDCR2
1884                     ; 28 		PWMDCR3+=4;
1886  004d b631          	ld	a,_PWMDCR3
1887  004f ab04          	add	a,#4
1888  0051 b731          	ld	_PWMDCR3,a
1890  0053 20c9          	jra	L7121
1892                     	switch	.ubsct
1893  0000               L1421_i:
1894  0000 0000          	ds.b	2
1930                     ; 37 @interrupt void PWMRefresh(void)
1930                     ; 38 {
1931                     	switch	.text
1932  0055               _PWMRefresh:
1934  0055 b601          	ld	a,c_x+1
1935  0057 88            	push	a
1936  0058 b600          	ld	a,c_x
1937  005a 88            	push	a
1940                     ; 40 	if(++i>=1)
1942  005b 3c01          	inc	L1421_i+1
1943  005d 2602          	jrne	L41
1944  005f 3c00          	inc	L1421_i
1945  0061               L41:
1946  0061 b601          	ld	a,L1421_i+1
1947  0063 a001          	sub	a,#1
1948  0065 b600          	ld	a,L1421_i
1949  0067 a200          	sbc	a,#0
1950  0069 2b30          	jrmi	L1621
1951                     ; 42 		i=0;
1953  006b 3f00          	clr	L1421_i
1954  006d 3f01          	clr	L1421_i+1
1955                     ; 43 		if(++j>100)
1957  006f 3c03          	inc	L7321_j+1
1958  0071 2602          	jrne	L61
1959  0073 3c02          	inc	L7321_j
1960  0075               L61:
1961  0075 b603          	ld	a,L7321_j+1
1962  0077 a065          	sub	a,#101
1963  0079 b602          	ld	a,L7321_j
1964  007b a200          	sbc	a,#0
1965  007d 2b04          	jrmi	L3621
1966                     ; 44 		j=0;
1968  007f 3f02          	clr	L7321_j
1969  0081 3f03          	clr	L7321_j+1
1970  0083               L3621:
1971                     ; 45 		PWMDCR0=PWMDuty[j];
1973  0083 b603          	ld	a,L7321_j+1
1974  0085 be02          	ld	x,L7321_j
1975  0087 48            	sll	a
1976  0088 59            	rlc	x
1977  0089 ab01          	add	a,#low(_PWMDuty+1)
1978  008b 88            	push	a
1979  008c 9f            	ld	a,x
1980  008d a901          	adc	a,#high(_PWMDuty+1)
1981  008f 97            	ld	x,a
1982  0090 84            	pop	a
1983  0091 bf00          	ld	c_x,x
1984  0093 97            	ld	x,a
1985  0094 bf01          	ld	c_x+1,x
1986  0096 92c600        	ld	a,[c_x.w]
1987  0099 b734          	ld	_PWMDCR0,a
1988  009b               L1621:
1989                     ; 47 	ARTCSR&=0xfe;
1991  009b 1136          	bres	_ARTCSR,#0
1992                     ; 48 }
1995  009d 84            	pop	a
1996  009e b700          	ld	c_x,a
1997  00a0 84            	pop	a
1998  00a1 b701          	ld	c_x+1,a
1999  00a3 80            	iret
2022                     	xdef	_PWMRefresh
2023                     	switch	.ubsct
2024  0002               L7321_j:
2025  0002 0000          	ds.b	2
2026                     	xref	_PWMDuty
2027                     	xdef	_main
2028                     	xref.b	c_x
2048                     	end

⌨️ 快捷键说明

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