完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 zdldcyy 于 2013-5-5 10:45 编辑
![]() #include #include "M_2.h" unsigned int PDR_A[]={ //八细分正弦表,8000*sinθ 8000, 7846, 7391, 6652, 5656, 4445, 3061, 1561, 0, 1561, 3061, 4445, 5656, 6652, 7391, 7846, }; unsigned int PDR_B[]={ 0, 1561, 3061, 4445, 5656, 6652, 7391, 7846, 8000, 7846, 7391, 6652, 5656, 4445, 3061, 1561, }; unsigned char DIR[] = { 0xa0, 0x60, 0x50, 0x90, //IN1-4输入 }; void PWM_Init() { P1DIR|=0xf0; //1111,0000 P1.4--P1.7输出控制IN1-IN4 P1OUT&=0x0f; P2DIR|=0X02; //0000,0010 P2.1--TA1.1--CCR1--PWM_1 P2DIR|=0X10; //0001,0000 P2.4--TA1.2--CCR2--PWM_2 P2SEL|=0X12; //0001,0010 开启第二引脚功能 TA1CTL |=TASSEL_2+MC_1+TACLR; //时钟源选择SMCLK增计数模式 TA设置 TA1CCTL1 |=OUTMOD_7; //模式7 高电平PWM输出 PWM设置 TA1CCTL2 |=OUTMOD_7; TA1CCR0 = Freq-1; TA1CCR1 = 0; TA1CCR2 = 0; TA1CCTL0 = CCIE; // CCR0 interrupt enabled _EINT(); } void main() { //unsigned int i=0; WDTCTL=WDTPW+WDTHOLD; PWM_Init(); while(1) {} } #pragma vector=tiMER1_A0_VECTOR __interrupt void PWM_ISR (void) { // temp1 = (unsigned int)(Freq*PDR_1[cont]); // temp2 = (unsigned int)(Freq*PDR_2[cont]); // TA1CCR1 = temp1; // TA1CCR2 = temp2; TA1CCR1 = PDR_A[cont]; TA1CCR2 = PDR_B[cont]; if(cont%8==0) P1OUT = DIR[i++%4]; cont++; if(cont==16) cont = 0; } ![]() |
|
相关推荐
26 个讨论
|
|
只有小组成员才能发言,加入小组>>
2940个成员聚集在这个小组
加入小组2689 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3014 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2274 浏览 1 评论
4705 浏览 1 评论
2486 浏览 1 评论
957浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3015浏览 2评论
2690浏览 1评论
1089浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-5 14:16 , Processed in 1.249711 second(s), Total 56, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191