单片机多任务程序的框架
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} } 接下来看看我的主程序 while(1) { 这里清除看门狗 //===========================1OOUS 处理的事件============================= if(B_100USFlag==1) { B_100USFlag=0; ADCScan_Por(); } //===========================1ms 处理的事件============================= if(B_1MSFlag==1) { B_1MSFlag=0; Key_Scan(); //按键程序 ADC_ValPor(); //AD 数据处理子程序(也可以在 10MS 处理) } //===========================10ms 处理的事件============================= if(B_10MSFlag==1) { B_10MSFlag=0; LCD_Por(); //LDC 显示子程序 } } 很是简单明了吧!我一直是这样用的;觉得还好,当然,这里只是说一种可行的办法而已, 不是说只有这种办法,如果大家有好的思想也分享一下哦, 编写程序是一门艺术,写出来很容易,但是写得好,写得精巧,那就很难了。 3)无特殊要求要将看门狗与低压复位打开(具体要求根据实际情况进行配置) 最后感谢大家能看完,在下还是菜鸟,希望能得到前辈们的指导,拜谢 //ADC 检测程序
多任务程序的框架 下面说的单片机也主要是 51 与台系芯片,也就是现在的工作。其它应用不在讨论范围。才 识有限,也敬请前辈们勘误,指教。 一个真正意义的单片机系统肯定会是多任务的,怎样建立一个多任务程序的框架 1 前后台系统: 前台是中断程序,后台是执行主程序,当中断来了,就转到前台来执行时间性要求高的任 务。不断的切换。 2 分时扫描(主程序中执行) 分时扫描思想: 分时扫描就是在中断中采用一些时间标志,在主程序里分时处理功能模块; 时间精度要求很高的只能在中断中处理(比如单工通讯),但中断中尽量不要写过多的程序 (计时程序是必须的) ; 这种方法好想也叫时间片扫描; 核心思想实现的几个步骤: 第一,用中断来计时,中断时间 50 或 100us(这是我的习惯,数值根据自己程序设置) ; 第二,在中断程序中以 50 或 100us 为基准 放 3 个计时器(就是计数器)并有时间标志; 100US 1MS 10MS 500MS 都可行 但时间要求精准 第三, 在主程序的循环里面放一个专门处理时间的子程序。 第四, “程序是跑着来等,而不是站着来等” , (引用别人的话) /****************************************************************************** ******************** 程序名称:T2 中断处理 功能描述:定时 100US 中断一次 中断 10 次=100x10=1Ms 输入变量: 输出变量:无 影响标志位: ******************************************************************************* ********************/ void Timer2_ISR() interrupt 5 { TF2=0; B_100USFlag=1; R_1MSCount++; if(R_1MSCount==10) { R_1MSCount=0; B_1MSFlag=1; R_10MSCount++; if(R_10MSCount==10) { R_10MSCount=0; B_10MSFlag=1; } //中断到来 //100us 时间标志 //1MS 计数器++ //判断 1MS 时间是否到 //清除数据 //1MS 时间标志 //10MS 计数器++ //判断 10MS 时间是否到 //清除数据 //10MS 时间标志
2014/3/23 四非人 QQ:189708929
Байду номын сангаас