STC51单片机27——控制无刷电机
创始人
2024-01-22 13:22:27
0

 编写程序控制电调:

#include

sbit Ppm=P2^0;
sbit Up=P2^1;
sbit Down=P2^2;
sbit Led_Up=P2^3;
sbit Led_Down=P2^4;

unsigned char k=0;                       
unsigned char a=0;                
                  
void Control()
{
  if(Up==0&&k<99)
    k++;
  else if(Down==0&&k>0)      
    k--;
  else ;
}

void Led ()
{
  if(k==99)                                //如果油门加到最大,灯亮
    Led_Up=0;
  else if(k==0)                            //如果油门减到最小,灯亮
    Led_Down=0;
  else
  {
    Led_Up=1;
    Led_Down=1;
  }
}
/**************************************************************
函数功能:主函数
**************************************************************/
void main(void)
{
    EA=1;                  //开总中断
    ET1=1;                 //定时器T1中断允许         
    TMOD=0x10;             //TMOD=0001 000B,使用定时器T1的模式1,16位
    TH1=0xfc-k*12/256;   //定时器T1的高8位赋初值    
    TL1=0x89-k*12%256;  //定时器T1的高8位赋初值
    TR1=1;                 //启动定时器T1
    while(1)//无限循环等待中断
    {
      while(TF1==0) ;
      TF1=0;
      Control();
      Led ();
    }   
 }
/**************************************************************
函数功能:定时器T1的中断服务程序
在此函数中严重禁止使用如下格式赋值!!!!!!!!!!!!!!!
  TH1=(65536-k)/256;        //定时器T1的高8位赋初值
  TL1=(65536-(125-k))%256;  //定时器T1的高8位赋初值
不然输出来的计时长度就会变长!!!!!!!!!!!!!!!!!!
**************************************************************/
void Time1(void) interrupt 3 using 0 //“interrupt”声明函数为中断服务函数
 {
   unsigned char b;
   TR1=0;                 //关闭定时器T1
   b=k;                      //防止在给TH1和TL1赋值时,k发生变动
   if(a==0)
   {
     a=1;
     Ppm=1;                        //高电平
     TH1=0xfc-k*12/256;   //定时器T1的高8位赋初值
     TL1=0x89-k*12%256;  //定时器T1的低8位赋初值
   }
   else if(a==1)
   {
     a=0;
     Ppm=0;                           //低电平
     TH1=0xb7+k*12/256;   //定时器T1的高8位赋初值    
     TL1=0x88+k*12%256;  //定时器T1的低8位赋初值
   }
   else ;
   TR1=1;                 //启动定时器T1
 }

相关内容

热门资讯

怎么将模糊的照片变清晰   怎么将模糊的照片变清晰?珍贵的照片每个人都会有,而遇到珍贵的照片变模糊了ÿ...
MySQL高级篇_第19章_数... 在任何数据库环境中,总会有 不确定的意外 情况发生,比如例外的停电、计算...
“剖肝沥胆”的意思 “剖肝沥胆”的意思 成语拼音: [pōu gān lì dǎn] ...
“母老虎”的意思 “母老虎”的意思 成语拼音: [mǔ lǎo hǔ] ...
“哽哽咽咽”的意思 “哽哽咽咽”的意思 成语拼音: [gěng gěng yè yè] ...
“一渊不两蛟”的意思 “一渊不两蛟”的意思 成语拼音: [yī yuān bù liǎng jiāo] ...
LVS负载均衡与keepali... 目录 一、LVS 负载均衡的结构 LVS三种工作模式 LVS调度算法 ipvsadm工具 二、KE...
数据结构与算法——堆的基本存储 目录 一、概念及其介绍 二、适用说明 三、结构图示 四、Java 实例代码 五.堆和栈的区别 一、...
Vue.js语法详解:从入门到... Vue.js是一个流行的JavaScript框架,用于构建用户界面。它的核心特性包括数...
“江淮河汉”的意思 “江淮河汉”的意思 成语拼音: [jiāng huái hé hàn] ...
“英雄气短”的意思 “英雄气短”的意思 成语拼音: [yīng xióng qì duǎn] ...
“神龙见首不见尾”的意思 “神龙见首不见尾”的意思 成语拼音: [shén lóng jiàn shǒu bù j...
“老生常谈”的意思 “老生常谈”的意思 成语拼音: [lǎo shēng cháng tán] ...
Application 初始化... Application 的 onCreate 和 attachBaseContextApplicat...
Unity 热更新技术 | (... 🎬 博客主页:https://xiaoy.blog.csdn.net ...
01分布式电源接入对配电网影响... 说明书 MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式...
“付诸一炬”的意思 “付诸一炬”的意思 成语拼音: [fù zhū yī jù] ...
四字开头的成语 四字开头的成语四字开头的成语1  四通五达  四通八达  四停八当  四体不勤  四体不勤  四体百...
“过目成诵”的意思 “过目成诵”的意思 成语拼音: [guò mù chéng sòng] ...
“年复一年”的意思 “年复一年”的意思 成语拼音: [nián fù yī nián] ...