c语言标志位flag怎么用,怎么用flag标志位当单片机中断标志来用
驱动六路电机 开关和走动 因为要驱动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标志位当单片机中断标志来用相关推荐
- java线程锁标记_java 线程 中断标志位
课程素材来自 http://enjoy.ke.qq.com/ 版权所有 java线程中,线程中断方法详解: 线程自然终止:自然执行完或抛出未处理异常 stop(),resume(),suspen ...
- [GO语言基础] 四.算术运算、逻辑运算、赋值运算、位运算及编程练习
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Golang的 ...
- java 线程 中断标志位
课程素材来自 http://enjoy.ke.qq.com/ 版权所有 java线程中,线程中断方法详解: 线程自然终止:自然执行完或抛出未处理异常 stop(),resume(),suspen ...
- 线程中断标志位 interrupt()、interrupted()、isInterrupted() 的认识
常见问题 首先你是怎么去关闭一个开启的线程.调用中断方法之后,线程就立即停止运行吗? 带着这两个问题探讨一下,主要围绕着这三个方法讲述: interrupt().interrupted().isInt ...
- 定时器中断标志位理解
1.定时器中断标志位程序 ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT) { ITStatus bitstatus = RES ...
- USART库函数中用于清除标志位的一些函数,如读DR寄存器的值清除标志位
USART库函数中用于清除标志位的一些函数,如读DR寄存器的值清除标志位 刚学M4没多久,对于库函数的使用还有些陌生,因为之前学的是寄存器配置,今天在用库函数配置usart的时候,遇到了不知道该调用哪 ...
- 【C语言位运算的应用】如何按bit位翻转一个无符号整型
其实现思路如下: 将目标数值进行末尾比特位摘取,将所摘取的bit位放到一个相同类型的末尾,目标数值bit位右移,相同类型bit位左移. C语言的位运算符: 实现代码如下: #include & ...
- C语言试题二十五之编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数)。
1. 题目 编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数). 2 .温馨提示 C语言试题汇总里可用于 ...
- c语言长整数转化为16进制字符串,一个30位的字符串十进制长整数怎么转换为对应的十六进制和八进制...
C/C++ code#include #include using namespace std; inline int compare(string str1,string str2) {//相等返回 ...
- C语言实现float类型到int类型的转化(位运算基础知识)
/* 在很多系统程序中常要求在位(bit)一级进行运算或处理.C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序. ******************** ...
最新文章
- Cache Memory技术示例
- 其实,人的核心职场时间是有限的,一定要和高手玩
- css选择器的优先级
- Android之简单背景颜色渐变实现
- mqtt如何发送心跳 安卓_互联网推送服务原理:长连接+心跳机制(MQTT协议)
- 传说中的Markov不过如此”
- API开创基底细胞癌手术切缘采集,改善过度医疗现状
- netty实现mtqq_Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
- PDF文档转换平台的核心技术-开源解决方案
- 计算快递费系统(java版)
- Spring bean的生命周期
- 去中心化应用程序 (dApps) 发展现状及趋势回顾
- 字典和列表的删除问题, 深浅拷贝
- 互联网日报 | 7月21日 星期四 | 脉脉CEO再回应点评招聘评论真实性;​微信版本再更新;上半年前十位SUV品牌销量排名出炉...
- ivms虚拟服务器,ivms监控服务器地址
- 西安交通大学计算机学院保研面试,西安交通大学电子与信息工程学院(专业学位)计算机技术保研细则...
- Kettle基本使用(四) —— 应用的使用
- 由DBeaver与PL/SQL引发的数据库吐槽
- Android Studio Lint 工具看完这一篇还不够
- 小米电视没有U盘怎么安装软件方法
热门文章
- XTU OJ 三角形
- 填坑---override、overload、overwrite
- CC2530基础实验二 外部中断实验
- 腾讯云服务器测试评测情况(后期阿里云服务器、新浪云服务器)
- python和前端哪个好_web前端和python学哪个出来工资高?
- Neokylin基础命令
- word中文章页码出现{PAGE}{PAGE \* MERGEFORMAT}的解决办法
- Windows10教育版升级至专业版的方法
- 常用心理学实验刺激呈现软件介绍
- android 键盘 横屏 边框,Android横屏时软键盘全屏问题