欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPTX文档下载  

    单片机程序结构.pptx

    • 资源ID:4489672       资源大小:114.38KB        全文页数:18页
    • 资源格式: PPTX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机程序结构.pptx

    单片机程序结构,单片机程序结构,单片机程序结构,void main()sysinit();moduleInit();while(1)if(!ADTimer)ADTimer=500;处理AD数据;if(!KeyTimer)KeyTimer=10;扫描按键;,if(!LEDTimer)LEDTimer=2;扫描LED;if(hp!=rp)处理串行接口数据;,单片机程序结构,void SysTick_Handler()if(ADTimer)ADTimer-;if(KeyTimer)KeyTimer-;if(LEDTimer)LEDTimer-;,时间片轮询法架构,1.设计一个结构体:/任务结构typedef struct _TASK_COMPONENTSuint8Run;/程序运行标记:0-不运行,1运行uint8Timer;/计时器uint8ItvTime;/任务运行间隔时间void(*TaskHook)(void);/要运行的任务函数TASK_COMPONENTS;,时间片轮询法架构,2.任务运行标志出来,此函数就相当于中断服务函数,需要在定时器的中断服务函数中调用此函数,这里独立出来,并于移植和理解。voidTaskRemarks(void)uint8i;for(i=0;iTask_Max;i+)/逐个任务时间处理if(TaskCompsi.Timer)/时间不为0TaskCompsi.Timer-;/减去一个节拍if(TaskCompsi.Timer=0)/时间减完了TaskCompsi.Timer=TaskCompsi.ItvTime;/恢复计时器值TaskCompsi.Run=1;/任务可以运行,时间片轮询法架构,3.任务处理,主程序中调用voidTaskProcess(void)uint8i;for(i=0;iTASKS_MAX;i+)/逐个任务时间处理if(TaskCompsi.Run)/时间不为0TaskCompsi.TaskHook();/运行任务TaskCompsi.Run=0;/标志清0,时间片轮询法架构,4.应用建立任务staticTASK_COMPONENTSTaskComps=0,1000,1000,TaskDisplayClock,/显示时钟0,10,10,TaskKeyScan,/按键扫描0,5,5,TaskLedScan,/动态刷新LED/可以继续添加任务。;,时间片轮询法架构,4.应用编写各个任务函数void TaskDisplayClock()void TaskKeySan()void TaskLedScan(),时间片轮询法架构,4.应用编写主函数void main(void)InitSys();/初始化while(1)TaskProcess();/任务处理,按键扫描程序,unsigned char read_key(void)unsigned char key_press;/按键是否被按下 unsigned char key_return=0;/按键返回值 key_press=key_sr1;/读按键I/O电平 if(!key_press)delay(10);key_press=key_sr1;/读按键I/O电平 if(!key_press)key_return=1;,状态机按键扫描程序,按键初始状态,按键按下状态,按键释放状态,I/O口低电平,I/O口高电平,I/O口高电平,I/O口低电平,I/O口低电平,I/O口高电平,执行按键动作,按键扫描程序,/*名 称:状态机按键扫描功 能:运用状态机思想,实现按下按键LED点亮,再按一下LED灯熄灭。作 者:创建时间:2014年12月14日修改时间:备 注:*/#include/头文件#includeKey_State.h/按键扫描头文件sbit Led=P07;/LED灯输出unsigned char Key_Number=0;/按键值,按键扫描程序,/*函数名称:主程序功 能:程序执行的入口返 回 值:无时 间:2014-12-14 备 注:*/void main()while(1)if(!Key_Timer)Key_Timer=10;/在定时器内每1Ms增1 Key_Number=read_key();/按键扫描函数,取得按键值,10MS调用一次 if(Key_Number=1)/按键返回值是1 Led=Led;/LED灯取反,按键扫描程序,Key_State.c#includesbit key_sr1=P16;/按键输入口#define key_state_0 0/按键的初始状态#define key_state_1 1/按键按下的状态#define key_state_2 2/按键释放的状态,按键扫描程序,/*函数名称:按键扫描程序功 能:检测按键,并返回按键值返 回 值:key_press时 间:2014-12-14 备 注:*/unsigned char read_key(void)static char key_state=0;/按键的状态 unsigned char key_press;/按键是否被按下 unsigned char key_return=0;/按键返回值 key_press=key_sr1;/读按键I/O电?switch(key_state)return key_return;/返回按键值,按键扫描程序,switch(key_state)case key_state_0:/按键初始态 break;case key_state_1:/按键确认态 break;case key_state_2:/按键释放的状态 break;,按键扫描程序,case key_state_0:/按键初始态 if(!key_press)key_state=key_state_1;/键被按下,状态转换到键确认态 break;case key_state_1:/按键确认态 if(!key_press)key_return=1;/按键仍按下,按键确认输出为“1”key_state=key_state_2;/状态转换到键释放态 else key_state=key_state_0;/按键已抬起,转换到按键初始态 break;case key_state_2:if(key_press)key_state=key_state_0;/按键已释放,转换到按键初始 break;,

    注意事项

    本文(单片机程序结构.pptx)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开