用单片机怎么读取直流电机码盘的数据呢?
2个回答
展开全部
单片机测码盘数据我实际测试了两种方法,1种是采用计数器计数方法,
void Init_Timer0(void)
{
TMOD |= 0x01 | 0x04; //使用模式1,16位计数器,使用"|"符号可以在使用多个定时器时不受影响
TH0=0x00; //给定初值
TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
void Timer0_isr(void) interrupt 1
{
TH0=00; //重新给定初值
TL0=00;
OVERFLOWFLAG=1; //溢出标志
}
a=TL0+TH0*256;//读取计数值
另一种是采用外部中断
main()
{
P1=0x55; //P1口初始值
EA=1; //全局中断开
EX0=1; //外部中断0开
IT0=0; //电平触发
while(1)
{
//在此添加其他程序
}
}
这是0电平触发,还有1电平触发,上升沿触发,下降沿触发都类似
void Init_Timer0(void)
{
TMOD |= 0x01 | 0x04; //使用模式1,16位计数器,使用"|"符号可以在使用多个定时器时不受影响
TH0=0x00; //给定初值
TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
void Timer0_isr(void) interrupt 1
{
TH0=00; //重新给定初值
TL0=00;
OVERFLOWFLAG=1; //溢出标志
}
a=TL0+TH0*256;//读取计数值
另一种是采用外部中断
main()
{
P1=0x55; //P1口初始值
EA=1; //全局中断开
EX0=1; //外部中断0开
IT0=0; //电平触发
while(1)
{
//在此添加其他程序
}
}
这是0电平触发,还有1电平触发,上升沿触发,下降沿触发都类似
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询