碰到需要长时间需要关闭所有中断以保证通信协议不被打断的项目,这么保证参考时间尽可能减少误差呢?不要小看这一问题,您要是有更好的想法或思路记得在后台给我留言哦
#include
uinsigned char time_num = 0; //时间缓存
uinsigned char time_100us = 0; //时间标准
void initT0()
{
TMOD |= 0x01; //使用方式1,16位定时器
TH0 = 0x0FF; //给TH1和TL1初初值
TL0 = 0xCE; //延时时间为50us
EA = 1; //总中断打开
ET0 = 1; //定时器中断打开
TR0 = 1; //定时器开关打开
}
void Do(void)
{
......
}
void Protocol(void)
{
static unsigned int ii;
for( ii = 0; ii < 1000; ii++) //约50MS
{
Do(); //假设执行一次50us
time_num++;
if( time_num>= 2)
{
time_num = 0;
time_100us++;
}
if( time_100us )
{
time_100us = 0;
//==========参考时间任务========
......
//-----------------------------
}
}
}
void Delay_50us(void)
{
......
}
void main(void)
{
//初始化定时器
initT0();
initT1();
while(1)
{
EA = 0;
Protocol();
EA = 1;
Delay_50us(); //协议需要
//======任务==========
......
//--------------------
}
}
//===============================
//t0定时器中断服务程序
//每隔50us进入一次该程序
//===============================
void t0Intr() interrupt 1
{
TH0 = 0x0FF; //给TH1和TL1初初值
TL0 = 0xCE; //延时时间为50us
time_num++;
}
//--------------------------------
有同学就会问这么麻烦,误差还挺大的,为啥不用DMA呢,而我想说这只是提供一种思路,毕竟不是什么单片机都有DMA可以使用,有时候做项目的时候都会受单片机硬件的限制(主要的目的就是把控成本),很多时候都会想办法从软件层面上提出解决方案(软件改动方便,付出的成本低)。
收录于合集 **#**Frame
7个
上一篇单片机实用框架(一)下一篇框架|软件定时时间片
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6037文章
44558浏览量
635259 -
软件
+关注
关注
69文章
4943浏览量
87485 -
dma
+关注
关注
3文章
561浏览量
100586
发布评论请先 登录
相关推荐
AVR单片机C语言程序框架(单片机最简操作系统)及详解
本帖最后由 lvhoujun 于 2014-2-28 00:37 编辑
这是本人以ATMEGA128为例编写的C语言程序框架,做简单的修改即适合AVR所有单片机。可以说是一个单片机
发表于 02-12 20:27
CAFrame单片机程序框架分享
CAFrame单片机程序框架简介程序运行优先级CAFrame配置通用事件应用FLowchart流程图简介CAFrame 单片机C语言程序开发框架可用于不同的
发表于 11-24 07:18
单片机应用技术选编2
单片机应用技术选编(2) 目录 第一章 单片机系统综合应用技术1 1.1 析8098单片机特点及HSO编程技术21.2 8031单片机DMA
发表于 03-21 22:25
•320次下载
原创分享:自制轻量级单片机UI框架
原创分享:自制轻量级单片机UI框架框架元素用户接口代码开源平时常看csdn,但是从来没有自己写过。正好这几天需要用单片机做一个简易的ui界面,于是自己写了一个轻量级的ui
发表于 11-05 15:20
•29次下载
单片机裸机程序框架
单片机裸机程序框架##单片机裸机开发时,要处理多个任务程序框架:轮询系统int main(void){ init_something(); while(1) { do_someth
发表于 11-13 19:21
•12次下载
单片机学习笔记————51单片机实现判断数据尾来接收一串数据的串口通用程序框架
单片机学习笔记————51单片机实现判断数据尾来接收一串数据的串口通用程序框架
发表于 11-23 17:06
•8次下载
单片机学习笔记————51单片机实现在串口接收中断里即时解析数据头的特殊程序框架
单片机学习笔记————51单片机实现在串口接收中断里即时解析数据头的特殊程序框架
发表于 11-23 17:06
•16次下载
单片机学习笔记————51单片机(利用return)实现判断数据头来接收一串数据的串口通用程序框架
单片机学习笔记————51单片机(利用return)实现判断数据头来接收一串数据的串口通用程序框架
发表于 11-23 17:06
•17次下载
从单片机基础到程序框架
单片机应用的核心技术是什么?是按键,数码管,流水灯,串口。是它们的程序框架。按键和数码管是
输入是人机界面,把它们的程序框架研究透了,以后做彩屏或者更花销的显示界面,程序框架也可以通
发表于 09-07 14:45
•9次下载
在单片机中使用的RTOS代码框架
在这次开发中,也是遇到了很多的问题,主要的感想是关于代码的框架。在单片机开发中,特别是使用了RTOS的时候,一个良好的代码框架真的是相当的必要的。
评论