这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 基于一种单片机对电机转速测量的程序设计

共5条 1/1 1 跳转至

基于一种单片机对电机转速测量的程序设计

高工
2019-12-03 21:53:14     打赏

#include

#defineucharunsignedchar

#defineuintunsignedint

//定义8253的寄存器地址

#defineCOMXBYTE[0x6000]//定义8253的控制字寄存器地址

#defineC0XBYTE[0x0000]//定义8253的计数器0寄存器地址

#defineC0IXBYTE[0x1000]

sbitP1_7=P1^7;

uintBUF810;

基于一种单片机对电机转速测量的程序设计

ucharh,l,a,b,c,sendflag,FREQ;

//主函数,初始化定时器和片外寄存器

voidmain(void)

{

EA=1;PT0=1;

ET0=1;

IT0=1;IT1=1;

EX0=1;EX1=1;ET2=1;

T2CON=0x08;

TMOD=0x21;//用定时器0产生2s的中断信号,为8253计数提供门控。

TH0=-1000/256;

TL0=-1000%256;

//向8253R中的控制字寄存器中选择计数器0,并对其幅初值0;

COM=0x30;

C0=0;C0=0;

TR0=1;

sendflag=1;

while(1){}

}

/*定时计数器0的中断服务子程序*/

voidtimer0(void)interrupt1using1

{

TH0=-1000/256;//定时器T0的高四位赋值

TL0=-1000%256;

FREQ=FREQ+1;//定时器T0的低四位赋值

if(FREQ==1000)//1秒判断

{

FREQ=0;

P1_7=!P1_7;//信号输出端口取反

COM=0x00;//计数器0闩锁操作

l=C0;//分别读取高、低8位的数据

h=C0;

BUF810=-(h*256+l);

COM=0x30;

C0=0;C0I=0;

}

}




工程师
2019-12-04 22:54:24     打赏
2楼

代码很实用


工程师
2019-12-07 21:03:33     打赏
3楼

最好是非接触式进行测量转速,这样不影响现有系统的转速~ 更准!


助工
2019-12-07 22:00:41     打赏
4楼

喜欢你简洁的代码


工程师
2019-12-10 20:06:19     打赏
5楼

正好借鉴一下你的代码



共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]