结题报告 - 图文(5)

2019-04-14 15:48

void SetMotorfan();//子函数设定电机反转 进入主函数: void main(void) {

WDTCTL = WDTPW + WDTHOLD;// Stop WDT(关闭看门狗) P1DIR |= 0x17;//将P1口P1.3设为输入,其他P1口设为输出状态

P1REN |= 0x08; //由于P1.3按键的高电平没有达到要求,设置寄存器的P1.3位为1,即启动上拉电阻,满足高电平要求 P2DIR |= 0x00;// 将P2口设为输入,目的将P2.0设为输入 P2REN |= 0x01; //通过寄存器,将P2.0位设置为1,启动上拉电阻功能

CCTL0 = CCIE;// CCR0 interrupt enabled(让中断使能) CCR0 = 5000;

TACTL = TASSEL_2 + MC_1;// SMCLK, contmode _BIS_SR(GIE);// Enter LPM0 w/ interrupt MotorStep=0;确认一下MotorStep确实给低电平

重复扫描信号:

while(1)//重复扫描是否有信号被接收 {

k1=P1IN&0x08;

//将P1口输入的值与0X08相与,其实就是P1.3与0X08相与,判断P1.3是否有信号输入,若有则P1.3为低电平,即相与之后k1为低电平

k2=P2IN&0x01;k2同上 if(k1==0)//若key1为低电平 {

SetMotorzheng();//就调用SetMotorzheng ()子函数 }

else if(k2==0) 若k2为低电平 {

SetMotorfan();//就调用SetMotorfan()子函数 } } }

调用子函数,完成电机转动功能: void SetMotorzhen() {

switch(MotorStep) {

case 0://在此条件下,将A相设为低电平,其他B,C,D为高电平

if(TIM)//利用Timer A0 interrupt service routine中断程序,可以调整单片机I/O口是否与驱动器的IN导通,即完成调速的功能

{

P1OUT = 0x1A; //将A相设为低电平,其他B,C,D为高电平 MotorStep = 1;//下次调用子函数时,进入Case 1 TIM=0;//使TIM为0,在中断程序中继续判断,下一次变为1时执行IF语句

}

break;跳出Switch语句 case 1:// AB if(TIM) {

P1OUT = 0x14; MotorStep = 2; TIM=0; } break; case 2://B if(TIM) {

P1OUT = 0x15;

MotorStep = 3; TIM=0; } break; case 3://BC if(TIM) {

P1OUT = 0x11; MotorStep = 4; TIM=0; } break; case 4: //C if(TIM) {

P1OUT = 0x13; MotorStep = 5; TIM=0; } break; case 5: //CD if(TIM)

{

P1OUT = 0x03; MotorStep = 6; TIM=0; } break; case 6: //D if(TIM) {

P1OUT = 0x07; MotorStep = 7; TIM=0; } break; case 7://DA if(TIM) {

P1OUT = 0x06; MotorStep = 0; TIM=0; } break;


结题报告 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:冬季安全生产试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: