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

📄 main.c

📁 dsPIC33F DAC程序 实现DAC输出正弦波型。
💻 C
字号:
/*************************************************************************************/
#define  IN_P_MAIN
#include "CONFIG.H"
#include "p33FJ16GS502.h"
#include "dac.h"
#include "delay.h"
/* -------------------------------------------------------- */
/* Macros for setting device configuration registers        */
/* -------------------------------------------------------- */

//_FBS( BWRP_WRPROTECT_OFF & BSS_NO_BOOT_CODE );

_FOSCSEL( FNOSC_FRCPLL & IESO_OFF );

_FOSC( POSCMD_NONE & OSCIOFNC_ON & IOL1WAY_ON & FCKSM_CSDCMD );

_FWDT( FWDTEN_OFF & WINDIS_OFF & WDTPRE_PR128 & WDTPOST_PS32 );

_FPOR( BOREN_ON & FPWRT_PWR4 );

_FICD( COE_ON & JTAGEN_OFF & ICS_PGD1 );

//_FUID0( 'W' );

//_FUID1( 'K' );

//1、芯片的配置字
//2、芯片的各时钟设定
//3、芯片其它硬件配置
//4、参数定义写程序

unsigned char time_IF=0;
unsigned int delay_data;
const unsigned int sindata[360]={688	,
694	,
700	,
705	,
711	,
717	,
723	,
729	,
735	,
741	,
747	,
753	,
758	,
764	,
770	,
776	,
781	,
787	,
793	,
798	,
804	,
810	,
815	,
820	,
826	,
831	,
837	,
842	,
847	,
852	,
857	,
863	,
868	,
873	,
877	,
882	,
887	,
892	,
896	,
901	,
906	,
910	,
914	,
919	,
923	,
927	,
931	,
935	,
939	,
943	,
947	,
951	,
954	,
958	,
961	,
965	,
968	,
971	,
974	,
977	,
980	,
983	,
986	,
988	,
991	,
993	,
996	,
998	,
1000	,
1002	,
1004	,
1006	,
1008	,
1010	,
1011	,
1013	,
1014	,
1016	,
1017	,
1018	,
1019	,
1020	,
1020	,
1021	,
1022	,
1022	,
1023	,
1023	,
1023	,
1023	,
1023	,
1023	,
1023	,
1022	,
1022	,
1021	,
1020	,
1020	,
1019	,
1018	,
1017	,
1016	,
1014	,
1013	,
1011	,
1010	,
1008	,
1006	,
1004	,
1002	,
1000	,
998	,
996	,
993	,
991	,
988	,
986	,
983	,
980	,
977	,
974	,
971	,
968	,
965	,
961	,
958	,
954	,
951	,
947	,
943	,
939	,
935	,
931	,
927	,
923	,
919	,
914	,
910	,
906	,
901	,
896	,
892	,
887	,
882	,
877	,
873	,
868	,
863	,
857	,
852	,
847	,
842	,
837	,
831	,
826	,
820	,
815	,
810	,
804	,
798	,
793	,
787	,
781	,
776	,
770	,
764	,
758	,
753	,
747	,
741	,
735	,
729	,
723	,
717	,
711	,
705	,
700	,
694	,
688	,
682	,
676	,
670	,
664	,
658	,
652	,
646	,
640	,
634	,
628	,
622	,
617	,
611	,
605	,
599	,
593	,
588	,
582	,
576	,
571	,
565	,
559	,
554	,
548	,
543	,
537	,
532	,
527	,
521	,
516	,
511	,
506	,
501	,
496	,
491	,
486	,
481	,
476	,
472	,
467	,
462	,
458	,
453	,
449	,
445	,
440	,
436	,
432	,
428	,
424	,
420	,
416	,
413	,
409	,
406	,
402	,
399	,
395	,
392	,
389	,
386	,
383	,
380	,
378	,
375	,
372	,
370	,
367	,
365	,
363	,
361	,
359	,
357	,
355	,
354	,
352	,
350	,
349	,
348	,
347	,
346	,
345	,
344	,
343	,
342	,
342	,
341	,
341	,
341	,
340	,
340	,
340	,
341	,
341	,
341	,
342	,
342	,
343	,
344	,
345	,
346	,
347	,
348	,
349	,
350	,
352	,
354	,
355	,
357	,
359	,
361	,
363	,
365	,
367	,
370	,
372	,
375	,
378	,
380	,
383	,
386	,
389	,
392	,
395	,
399	,
402	,
406	,
409	,
413	,
416	,
420	,
424	,
428	,
432	,
436	,
440	,
445	,
449	,
453	,
458	,
462	,
467	,
472	,
476	,
481	,
486	,
491	,
496	,
501	,
506	,
511	,
516	,
521	,
527	,
532	,
537	,
543	,
548	,
554	,
559	,
565	,
571	,
576	,
582	,
588	,
593	,
599	,
605	,
611	,
617	,
622	,
628	,
634	,
640	,
646	,
652	,
658	,
664	,
670	,
676	,
682	

};

const unsigned int sindata2[360]={	
443	,
445	,
447	,
449	,
451	,
453	,
455	,
457	,
459	,
461	,
463	,
465	,
467	,
469	,
471	,
473	,
475	,
477	,
479	,
481	,
483	,
485	,
487	,
489	,
490	,
492	,
494	,
496	,
498	,
499	,
501	,
503	,
505	,
506	,
508	,
510	,
511	,
513	,
514	,
516	,
518	,
519	,
521	,
522	,
523	,
525	,
526	,
528	,
529	,
530	,
532	,
533	,
534	,
535	,
536	,
538	,
539	,
540	,
541	,
542	,
543	,
544	,
545	,
546	,
547	,
547	,
548	,
549	,
550	,
550	,
551	,
552	,
552	,
553	,
554	,
554	,
555	,
555	,
555	,
556	,
556	,
556	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
557	,
556	,
556	,
556	,
555	,
555	,
555	,
554	,
554	,
553	,
552	,
552	,
551	,
550	,
550	,
549	,
548	,
547	,
547	,
546	,
545	,
544	,
543	,
542	,
541	,
540	,
539	,
538	,
536	,
535	,
534	,
533	,
532	,
530	,
529	,
528	,
526	,
525	,
523	,
522	,
521	,
519	,
518	,
516	,
514	,
513	,
511	,
510	,
508	,
506	,
505	,
503	,
501	,
499	,
498	,
496	,
494	,
492	,
490	,
489	,
487	,
485	,
483	,
481	,
479	,
477	,
475	,
473	,
471	,
469	,
467	,
465	,
463	,
461	,
459	,
457	,
455	,
453	,
451	,
449	,
447	,
445	,
443	,
441	,
439	,
437	,
435	,
433	,
431	,
429	,
427	,
425	,
423	,
421	,
419	,
417	,
415	,
413	,
411	,
409	,
407	,
405	,
403	,
401	,
400	,
398	,
396	,
394	,
392	,
390	,
388	,
387	,
385	,
383	,
381	,
380	,
378	,
376	,
375	,
373	,
371	,
370	,
368	,
367	,
365	,
363	,
362	,
360	,
359	,
358	,
356	,
355	,
354	,
352	,
351	,
350	,
348	,
347	,
346	,
345	,
344	,
343	,
342	,
341	,
340	,
339	,
338	,
337	,
336	,
335	,
334	,
333	,
333	,
332	,
331	,
331	,
330	,
330	,
329	,
328	,
328	,
328	,
327	,
327	,
326	,
326	,
326	,
326	,
325	,
325	,
325	,
325	,
325	,
325	,
325	,
325	,
325	,
325	,
325	,
326	,
326	,
326	,
326	,
327	,
327	,
328	,
328	,
328	,
329	,
330	,
330	,
331	,
331	,
332	,
333	,
333	,
334	,
335	,
336	,
337	,
338	,
339	,
340	,
341	,
342	,
343	,
344	,
345	,
346	,
347	,
348	,
350	,
351	,
352	,
354	,
355	,
356	,
358	,
359	,
360	,
362	,
363	,
365	,
367	,
368	,
370	,
371	,
373	,
375	,
376	,
378	,
380	,
381	,
383	,
385	,
387	,
388	,
390	,
392	,
394	,
396	,
398	,
400	,
401	,
403	,
405	,
407	,
409	,
411	,
413	,
415	,
417	,
419	,
421	,
423	,
425	,
427	,
429	,
431	,
433	,
435	,
437	,
439	,
441	
};
int main(void)
{
	unsigned int i;
//	unsigned int j=1200;
//	unsigned char k=35;
	TRISA=0x0000;//0000 0000 0000 0000
	TRISB=0x0000;
	PORTA=0x0000;
	PORTB=0x0000;
//	time1_init(j);
	while(1)
	{
/*第一种定时器延时方案*/
/*		for(j=1200;j>10;j--)
		{
			for(i=0;i<360;i++)
			{
				DAC_init(sindata2[i]);
				while(time_IF==0);
				time_IF=0;
				T1CONbits.TON=1;
				i=i;
			}
			j=j;
			time1_init(j);	
		}
*/
/*第二种软件延时方案*/	
//50Hz~1.5KHz
		for(delay_data=300;delay_data>0;delay_data--)
		{
			for(i=0;i<360;i++)
			{
				DAC_init(sindata2[i]); //delay(0)时正弦周期为650us
				delay(delay_data);     //delay(1)为0.18us
			}	
		}
//1.5KHz~4.67KHz
		for(delay_data=28;delay_data>0;delay_data--)
		{
			for(i=0;i<360;)
			{
				DAC_init(sindata2[i]); //delay(0)时正弦周期为220us
				delay(delay_data);     //delay(1)为0.18us
				i=i+3;
			}	
		}
//4.67KHz~10KHz
		for(delay_data=12;delay_data>0;delay_data--)
		{
			for(i=0;i<360;)
			{
				DAC_init(sindata2[i]); //delay(0)时正弦周期为110us
				delay(delay_data);     //delay(1)为0.18us
				i=i+7;
			}	
		}
//10KHz~20KHz
		for(delay_data=15;delay_data>3;delay_data--)
		{
			for(i=0;i<360;)
			{
				DAC_init(sindata2[i]); //delay(0)时正弦周期为40us
				delay(delay_data);     //delay(1)为0.18us
				i=i+17;
			}	
		}
	}
}

⌨️ 快捷键说明

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