找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1925|回复: 1
收起左侧

51单片机实现对电机的调速

[复制链接]
ID:206568 发表于 2017-6-1 16:45 | 显示全部楼层 |阅读模式
#i#include<reg52.h>
#define uint unsigned int /*宏定义*/
#define uchar unsigned char /*宏定义*/
sbit P2_0=P2^0;
sbit S1=P0^0;
sbit S2=P0^1;
sbit S3=P0^2;
bdata flag=0x20^0;
uint nmuber0,nmuber1,count0,count1;
uint th0_h,th0_l,th1_h,th1_l;
void delay(uint z);
void time_initial();
void main()
{
time_initial();
while(1);
}
void time_initial() //定时器初始化
{
  TMOD=0X11;
  TH0=0x0D8;//5ms
  TL0=0x0F0;//5ms
  TH1=0x0D8;//5ms
  TL1=0x0F0;//5ms
  TH0=0xf0; //2ms
  TL0=0x60; //2ms
  TH0=0xfc; //0.5ms
  TL0=0x18; //0.5ms
  TH0=0x0F8; // 1ms
  TL0=0x30; // 1ms
  TH1=0x0F8; // 1ms
  TL1=0x30; // 1ms
  TH0=0x0FF;// 0.1ms
  TL0=0x38; // 0.1ms
  TH1=0x0FF; // 0.1ms
  TL1=0x38; // 0.1ms
  ET0=1; //定时器0的中断控制位
  ET1=1; //定时器1的中断控制位
  EX0=1; //外部的中断0控制位
  IT0=1; //外部中断0为下降沿触发方式
  ES=1;
  REN=1;
  TR0=1;
  EA=1;
  count0=1;
  count1=1;
}
void Time0() interrupt 1 //定时器0的中断函数?
{
  TH0=0xd8;//5ms
  TL0=0x0f0;//5ms
  nmuber0++;
  if(nmuber0==count0)
{
  nmuber0=0;
  TH1=0xd8;//5ms
  TL1=0xf0;//5ms
  P2_0=1;
  TR1=1;
  TR0=0;
  }
}
void Time1() interrupt 3 //定时器0的中断函数?
{
  TH1=0x0D8;//5ms
  TL1=0x0F0;//5ms
  nmuber1++;
  if(nmuber1==count1)
{
  nmuber1=0;
  P2_0=0;
  TR1=0;
  TR0=1;
  }
}
void int0() interrupt 0// 外部的中断函数
{
  P2_0=0;
  TH0=0xd8;//5ms
  TL0=0xf0;//5ms
  delay(15);
  TR0=1;
}
void delay(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}

回复

使用道具 举报

ID:177855 发表于 2017-6-5 14:02 | 显示全部楼层
正在学,先收下,谢谢楼主分享。!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表