
不用定时器,那就只好用延时函数,简单点,下面是我临时写的,不知道能否通过编译,就是用P40端口产生方波,延时函数采用系统自带
主频设置为1MHz
占空比需要根据延时数值多少而定,我这里给的是50%
周期为2s
430型号为F2274
程序如下:
#include <stdinth>
#include <MSP430x22x4h>
#define WaveOutput BIT0
#define CPU_F ((double)1000000) //1Mhz
#define delay_us(x) __delay_cycles((long)(CPU_F(double)x/10000000))
#define delay_ms(x) __delay_cycles((long)(CPU_F(double)x/10000))
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; // Stop WDT
DCOCTL=CALDCO_1MHZ; // Load 1MHz constants
BCSCTL1=CALBC1_1MHZ; //Select DCO is 1MHz
_DINT();
P4DIR|=WaveOutput; //set OUTPUT
P4OUT&=~WaveOutput; //default low
while(1)
{
WDTCTL=WDTPW+WDTHOLD; // Stop WDT
P4OUT|=WaveOutput; //default high
delay_ms(1000) //1s
P4OUT&=~WaveOutput; //default low
delay_ms(1000) //1s
}
}
#include <reg52h> //12M晶振
sbit PWM=P1^0; //定义P1^0为输出端口
unsigned int pwm_h=2430,pwm; //定义pwm信号中的高电平时间
范围 535< pwm_h <2430
bit fa;
void Init_Timer0() //定时器初始化子程序
{
TMOD = 0x01;
TH0 = 0x0FF;
TL0 = 0x0F6;
EA = 1;
ET0 = 1;
TR0 = 1; //定时器开关打开
}
void main() //主函数
{
Init_Timer0(); //定时器初始化
PWM=0;
while(1)
{
if(fa)
{
fa=0;
pwm_h=20000-pwm_h;
}
}
}
void Timer0() interrupt 1 using 1
{
TH0 =(-pwm_h)/256;
// (65535-200) /256=0xff;
TL0 =(-pwm_h)%256; //01ms一个记时器周期
236 % 256 = 236
fa=1;
PWM=~PWM;
}
给段伪代码吧
int main(){
初始化 src_angle_A, dst_angle_A;
初始化 src_angle_B, dst_angle_B;
初始化 src_angle_C, dst_angle_C;
初始化 src_angle_D, dst_angle_D;
int A_flag = 0;
int B_flag = 0;
int CD_flag = 0;
while (1)
{
if (key1_down())
{
if (A_flag == 0)
{
set_angle_A(dst_angle_A);
}
else
{
set_angle_A(src_angle_A);
}
A_flag = 1-A_flag;
}
if (key2_down())
{
if (B_flag == 0)
{
set_angle_B(dst_angle_B);
}
else
{
set_angle_B(src_angle_B);
}
B_flag = 1-B_flag;
}
if (key3_down())
{
if (CD_flag == 0)
{
set_angle_C(dst_angle_C);
set_angle_D(dst_angle_D);
}
else
{
set_angle_C(src_angle_C);
set_angle_D(src_angle_D);
}
CD_flag = 1-CD_flag;
}
delay_ms(10);
}
return 0;
}
拔下仿真器不会清除程序。 但是这个问题其实以前我也遇到过,但是具体我也不清楚怎么回事,我是多折腾几下才好的。
这些问题推荐你到CSDN去问,那里的专业的人比这里多,回答的比较快
以上就是关于速求用MSP430的P4.0口控制舵机转动90°的程序,最好不用定时器。全部的内容,包括:速求用MSP430的P4.0口控制舵机转动90°的程序,最好不用定时器。、怎么利用Stc15F2K60S2单片机 仿真系列,控制舵机旋转在线求简单的实例程序、求一段c语言舵机程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)