#include<hidef.h>
//#include <math.h>
// #include <mc9s12xs128.h>
#include "derivative.h"
//#pragma LINK_INFO DERIVATIVE"mc9s12dg128b"
/*****定义变量******/
unsigned int a,c,d
unsigned int AD_wValue,B //AD转换结果
int b,i,x,e,j
void LEDShow(int x)
/兆和*****总线初始化*****/
void PLL_Init(void) {
REFDV=1
SYNR=2
while(!(CRGFLG&0x08))
CLKSEL=0x08
}
/******AD初始化******/
/*void AD_Init() {
//ATD0CTL1=0x00
ATD0CTL2=0xC0//启动AD,快速清握尘零,无等待模式,禁止外部触发,中断禁止
ATD0CTL3=0x40//转换序列长度8
ATD0CTL4=0x85
ATD0CTL5=0xA0//右对齐无符号,单通道0采样
ATD0DIEN=0x00//禁段猜禅止数字量输入 */
/**读取AD转换结果**/
/*void AD_GetValue()
{
while(!ATD0STAT0_SCF) //等待转换结束
AD_wValue=ATD0DR0L//读取结果寄存器的值
} */
/*****pwm初始化********/
void PWM_Init(void)
{
PWME_PWME1=0x00 // Disable PWM (PP1) 禁止
PWMCTL_CON01=1 //0,1级联,寄存器为通道1的
PWMCAE_CAE1=0//通道7左对齐
PWMCNT01=0 // 计时器清零
PWMPOL_PPOL1=1 // 先置高电平,DYT反
PWMPRCLK=0 //COLCKA不分频
PWMSCLA=4 //COLCK SA进行16分频
PWMDTY01=1500// 舵机静止占空比为7.5%=1500/20000
PWMPER01=20000 //周期20MS
PWMCLK_PCLK1=1// CLOCK SA 作时钟源
PWME_PWME1=1
}
/*舵机控制*/
void PWMDuo_Dutycycle(int d)
{
PWMDTY01=d
PWME_PWME1=1// Enable PWM 使能
}
void delay(long m){
while(m--)
}
/**************显示输出*******************/
const int Dtable[10] =
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}
const int CStable[4] =
{0xF7,0xFB,0xFD,0xFE}
void LEDShow1(int i,int c)
{
PTT&= CStable[i]
PORTB = Dtable[c]
delay(100)
PTT|=0xff
}
void LEDShow(int x){
DDRB=0xFF
DDRT=0xFF
b = x/10 //x=126 b=12
e=x-b*10// e=6
x=b // x=12
for(i=0i<=3i++) {
LEDShow1(i,e)
b = x/10//b=1 //b=0 b=0
e=x-b*10 // e=2 e=1 e=0
x=b // x=1 x=0 x=0
}
}
/******主函数*********/
void main(void) {
/*put your own code here*/
//EnableInterrupts
DisableInterrupts
PLL_Init()
ATD0CTL1=0x00
ATD0CTL2=0xC0//启动AD,快速清零,无等待模式,禁止外部触发,中断禁止
ATD0CTL3=0x80//转换序列长度8
ATD0CTL4=0x83
ATD0CTL5=0xA0//右对齐无符号,单通道0采样
ATD0DIEN=0x00//禁止数字量输入
PWM_Init()
for()
{
while(!ATD0STAT0_SCF) //等待转换结束
AD_wValue=ATD0DR0//读取结果寄存器的值
B=AD_wValue
a=1150+(1000/250)*B
if ( a>2000 )
{
a=2000
}
else if(a<1000)
{
a=1000
}
else{
a=a
}
PWMDuo_Dutycycle(a)
LEDShow(a)
// _FEED_COP()/* feeds the dog */
}/* loop forever */
/* please make sure that you never leave main */
}
唉,老是见到你,教你一个万能的方法,用初中物理的研究方法简培:控制变量法!改变你要研究的因素,其他因素控制卖咐敏不变。要知道是不是舵机的问题就更换一个肯定正常的舵机(没有就问人借),其他东西都不要变!问题解决就是舵机的问题,没解决就不中枝是舵机的问题咯!其余的如此类推!:em08:最后你肯定能发现问题所在的,在这里你这样问是得不到答案的啊!因为这种问题是根本说不清的。:em16:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)