使用数码管实现步进

#include "msp430g2553.h"


#define CPU_F ((double)1000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
int time = 23;
char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴
void xianshi(int x)
{
  P1OUT=table[x%10];
  P2OUT|=BIT3;
  delay_ms(5);
  P2OUT&=~BIT3;


  P1OUT=table[x%100/10];
  P2OUT|=BIT2;
  delay_ms(5);
  P2OUT&=~BIT2;


  P1OUT=table[x%1000/100];
  P2OUT|=BIT1;
  delay_ms(5);
  P2OUT&=~BIT1;


  P1OUT=table[x/1000];
  P2OUT|=BIT0;
  delay_ms(5);
  P2OUT&=~BIT0;
}
void main( void )
{






WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xff;
P2DIR = 0xff;
P2OUT = 0x00;
P2DIR &=~ (BIT4 + BIT5);
P2REN |=   BIT4 + BIT5;
P2OUT|=BIT4 + BIT5;//上拉
P2IE|=BIT4 + BIT5;
P2IES|=BIT4 + BIT5;
P2IFG&=~ (BIT4 + BIT5);
_EINT();




while(1)
{
xianshi(time);




}


}
#pragma vector=PORT2_VECTOR
__interrupt void port_2(void)
{
delay_ms(10);
if((P2IN&BIT4)==0)
time+=1;
if((P2IN&BIT5)==0)
time-=1;


P2IFG&=~0x30;


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值