完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int uint counter,step,phase; #define DAC0832_DATA P0 P1 //***it P10=P1^0; uchar code SineTab[256]={ //ÕyÏò2¨¶Ôó|êy×Öá¿ 0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8, 0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7, 0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc, 0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4, 0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83, 0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52, 0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27, 0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb, 0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8, 0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23, 0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b, 0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c }; uchar code SquareTab[256]={ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, }; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } void int0()interrupt 0 { delayms(10); if(INT0==0) { //phase++; if(step<4096) { step++; } else step=2; } } void int1()interrupt 0 { delayms(10); if(INT1==0) { P1=~P1; if(step>2) { step--; } else step=4096; } } /*------------------------------------------------ ¶¨ê±Æ÷ÖD¶Ï×ó3ìDò ------------------------------------------------*/ void timer0_isr(void) interrupt 1 using 1 { //TH0=(65536-500)/256; //ÖØD¸3Öμ 12M¾§Õñ¼ÆË㣬ָáîÖüÆú1uS£¬ //TL0=(65536-500)*256; //1mS·½2¨°ë¸öÖüÆú500uS£¬¼′¶¨ê±500′Î //òç3öè»oóêä3ö¶Ëè¡·′ TH0=0xFF; TL0=0xFF; counter=counter+step; //phase=0.0055+step; P0=SineTab[(uint)counter>>8]; P1=SquareTab[(uint)counter>>8]; //P10=~P1^0; //P0=SineTab[(uint)counter>>8]; } void INT_init(void) { EX0=1; IT0=1; EX1=1; IT1=1; EA=1; PX0=1; } /*------------------------------------------------ ¶¨ê±Æ÷3õê¼»ˉ×ó3ìDò ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01; //ê1óÃÄ£ê½1£¬16붨ê±Æ÷£¬ê1óÃ"|"·ûoÅ¿éòÔÔúê1óöà¸ö¶¨ê±Æ÷ê±2»êüó°Ïì TH0=0xFE; //¸ø¶¨3õÖ죬Õaàïê1óö¨ê±Æ÷×î′óÖμ′ó0¿aê¼¼Æêyò»Ö±μ½65535òç3ö TL0=0x0C; ET0=1; //¶¨ê±Æ÷ÖD¶Ï′ò¿a TR0=1; //¶¨ê±Æ÷¿a1Ø′ò¿a } /* void timer1(void) interrupt 3 { TH1=(65536-100)/256;; TL1=(65536-100)*256; ; } void Init_Timer1(void) { TMOD |= 0x01; //ê1óÃÄ£ê½1£¬16붨ê±Æ÷£¬ê1óÃ"|"·ûoÅ¿éòÔÔúê1óöà¸ö¶¨ê±Æ÷ê±2»êüó°Ïì TH1=0xFE; //¸ø¶¨3õÖ죬Õaàïê1óö¨ê±Æ÷×î′óÖμ′ó0¿aê¼¼Æêyò»Ö±μ½65535òç3ö TL1=0x0C; ET1=1; //¶¨ê±Æ÷ÖD¶Ï′ò¿a TR1=1; //¶¨ê±Æ÷¿a1Ø′ò¿a } */ /*------------------------------------------------ Ö÷3ìDò ------------------------------------------------*/ main() { INT_init(); Init_Timer0(); step=2; while(1) { ; } } |
|
相关推荐
4个回答
|
|
相位可调就让counter的值改变不就行了吗。。可能是我想的太简单了。。。
|
|
|
|
那个改变的频率,counter=counter+step,按键里面step++,counter就变了,变的是频率
|
|
|
|
比如说一个周期一百个数,counter=counter+50,之后再counter=counter+step,不是把相位移动了180度吗
|
|
|
|
相位变化不就是让波形滞后呗,延时行不
|
|
|
|
只有小组成员才能发言,加入小组>>
3318 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9063 浏览 16 评论
4088 浏览 18 评论
1183浏览 3评论
609浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
601浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2336浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1897浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 01:12 , Processed in 1.320371 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号