驱动六路电机  开关和走动        因为要驱动6个电机 所以不能控制一个电机直接关掉ET0   所以想用flag来当中断开关

#include

typedef unsigned char BYTE;

typedef unsigned int WORD;

BYTE flag1;

BYTE cache,count;

sbit DIR=P0^5;

//sbit SLP=P1^0;

sbit  flag = P2^7;

sbit STEP=P0^4;

sbit EN = P0^0;

sbit M1 = P0^1;

sbit M2 = P0^2;

sbit M3 = P0^3;

//sbit EN=P1^3;

void Timer0Init(void)                //100微秒@11.0592MHz

{

AUXR |= 0x80;                //定时器时钟1T模式

TMOD &= 0xF0;                //设置定时器模式

TL0 = 0xAE;                //设置定时初值

TH0 = 0xFB;                //设置定时初值

TF0 = 0;                //清除TF0标志

TR0 = 1;                //定时器0开始计时

EA=1;

//        ET0=1;

}

void UartInit(void)                //9600bps@11.0592MHz

{

PCON &= 0x7F;                //波特率不倍速

SCON = 0x50;                //8位数据,可变波特率

AUXR |= 0x40;                //定时器1时钟为Fosc,即1T

AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器

TMOD &= 0x0F;                //清除定时器1模式位

TMOD |= 0x20;                //设定定时器1为8位自动重装方式

TL1 = 0xDC;                //设定定时初值

TH1 = 0xDC;                //设定定时器重装值

ET1 = 0;                //禁止定时器1中断

TR1 = 1;                //启动定时器1

ES = 1;

}

void init()

{

EN = 0;

M1 = 1;

M2 = 0;

M3 = 0;

}

void delay(WORD n)

{

WORD x;

while (n--)

{

x = 5000;

while (x--);

}

}

void D1()

{

if(cache == 0xa5)

{

TR0 = 0;

ET0 = 0;

cache = 0;

}

if(cache ==0x50)

{

TR0 = 1;

ET0 = 1;

DIR = 1;

cache = 0;

flag1 = 0;

}

if(!flag )

{

DIR = 0;                           //向电机方向移动

}

}

void send(BYTE dat)

{

SBUF = dat;                     //发送当前数据

while (!TI);                    //等待前一个数据发送完成

TI = 0;                         //清除发送标志

}

void main()

{

Timer0Init();

init();

UartInit();

while(1)

{

D1();

//        DIR = 1;

//        flag1= 1;

/*        if(flag1)

{

if(!flag)

{

delay(1);

if(!flag)

{

DIR = 1;

delay(500);

}

}

}        */

}

}

void timer0() interrupt 1

{

//        count++;

/*        if(flag1 == 1)

{

STEP=0;

}

if(flag1 == 2)

{

STEP=~STEP;

}  */

STEP=~STEP;

//        if(count >= 100)

//        {

//        count = 0;

//        send(0x52);

//        }

/*if(flag==1)

{

t1++;

if(t1>=35000)

{

t1=0;

flag=2;                         //计时完成=2

}

}*/

}

void io() interrupt 4

{

if(RI)

{

RI = 0;

cache =  SBUF;

}

}

c语言标志位flag怎么用,怎么用flag标志位当单片机中断标志来用相关推荐

  1. java线程锁标记_java 线程 中断标志位

    课程素材来自 http://enjoy.ke.qq.com/    版权所有 java线程中,线程中断方法详解: 线程自然终止:自然执行完或抛出未处理异常 stop(),resume(),suspen ...

  2. [GO语言基础] 四.算术运算、逻辑运算、赋值运算、位运算及编程练习

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Golang的 ...

  3. java 线程 中断标志位

    课程素材来自 http://enjoy.ke.qq.com/    版权所有 java线程中,线程中断方法详解: 线程自然终止:自然执行完或抛出未处理异常 stop(),resume(),suspen ...

  4. 线程中断标志位 interrupt()、interrupted()、isInterrupted() 的认识

    常见问题 首先你是怎么去关闭一个开启的线程.调用中断方法之后,线程就立即停止运行吗? 带着这两个问题探讨一下,主要围绕着这三个方法讲述: interrupt().interrupted().isInt ...

  5. 定时器中断标志位理解

    1.定时器中断标志位程序 ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT) { ITStatus bitstatus = RES ...

  6. USART库函数中用于清除标志位的一些函数,如读DR寄存器的值清除标志位

    USART库函数中用于清除标志位的一些函数,如读DR寄存器的值清除标志位 刚学M4没多久,对于库函数的使用还有些陌生,因为之前学的是寄存器配置,今天在用库函数配置usart的时候,遇到了不知道该调用哪 ...

  7. 【C语言位运算的应用】如何按bit位翻转一个无符号整型

    其实现思路如下: 将目标数值进行末尾比特位摘取,将所摘取的bit位放到一个相同类型的末尾,目标数值bit位右移,相同类型bit位左移. C语言的位运算符:     实现代码如下: #include & ...

  8. C语言试题二十五之编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数)。

    1. 题目 编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数). 2 .温馨提示 C语言试题汇总里可用于 ...

  9. c语言长整数转化为16进制字符串,一个30位的字符串十进制长整数怎么转换为对应的十六进制和八进制...

    C/C++ code#include #include using namespace std; inline int compare(string str1,string str2) {//相等返回 ...

  10. C语言实现float类型到int类型的转化(位运算基础知识)

    /* 在很多系统程序中常要求在位(bit)一级进行运算或处理.C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序.           ******************** ...

最新文章

  1. Cache Memory技术示例
  2. 其实,人的核心职场时间是有限的,一定要和高手玩
  3. css选择器的优先级
  4. Android之简单背景颜色渐变实现
  5. mqtt如何发送心跳 安卓_互联网推送服务原理:长连接+心跳机制(MQTT协议)
  6. 传说中的Markov不过如此”
  7. API开创基底细胞癌手术切缘采集,改善过度医疗现状
  8. netty实现mtqq_Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
  9. PDF文档转换平台的核心技术-开源解决方案
  10. 计算快递费系统(java版)
  11. Spring bean的生命周期
  12. 去中心化应用程序 (dApps) 发展现状及趋势回顾
  13. 字典和列表的删除问题, 深浅拷贝
  14. 互联网日报 | 7月21日 星期四 | 脉脉CEO再回应点评招聘评论真实性;​微信版本再更新;上半年前十位SUV品牌销量排名出炉...
  15. ivms虚拟服务器,ivms监控服务器地址
  16. 西安交通大学计算机学院保研面试,西安交通大学电子与信息工程学院(专业学位)计算机技术保研细则...
  17. Kettle基本使用(四) —— 应用的使用
  18. 由DBeaver与PL/SQL引发的数据库吐槽
  19. Android Studio Lint 工具看完这一篇还不够
  20. 小米电视没有U盘怎么安装软件方法

热门文章

  1. XTU OJ 三角形
  2. 填坑---override、overload、overwrite
  3. CC2530基础实验二 外部中断实验
  4. 腾讯云服务器测试评测情况(后期阿里云服务器、新浪云服务器)
  5. python和前端哪个好_web前端和python学哪个出来工资高?
  6. Neokylin基础命令
  7. word中文章页码出现{PAGE}{PAGE \* MERGEFORMAT}的解决办法
  8. Windows10教育版升级至专业版的方法
  9. 常用心理学实验刺激呈现软件介绍
  10. android 键盘 横屏 边框,Android横屏时软键盘全屏问题