"单片机C51编程几个有用的模块" 单片机C51编程中有几个非常有用的模块,包括时钟中断、通讯、键盘扫描等模块,本文将对这些模块进行详细的介绍。 时钟模块是单片机软件设计中非常重要的一部分,为了充分利用时钟资源,时钟模块使用定时器0,在完成用户指定功能的同时,还能够自动处理一些其它模块中与时钟相关的信息。时钟模块由声明文件Timer.h以及实现文件Timer.c组成。用户需要在Config.h中定义宏TIMER_RELOAD来设定定时器0的重装载初值。推荐的定时器0的中断时间大于1毫秒。在程序的初始化阶段调用时钟模块的初始化函数InitTimerModule()之后,就可以使用时钟模块所以支持的各种功能。 时钟模块支持两种主要的功能:延时和定时。延时功能可以通过调用Delay()函数来实现,参数为时钟中断的次数。例如,如果时钟中断周期为1ms 想进行100ms的延时, 则可以调用Delay(100)。需要注意的是,如果延时的绝对时间小于时钟中断的周期,则不能够用本方法做到延时。 定时功能可以用来实现等待某外部事件,如果在一定时间内发生则继续执行,如果在这段时间内没有发生,则认为出现错误,转向错误处理机制。在这里,需要定义一个非阻塞式函数来检测事件的完成情况,然后使用定时功能来等待事件的完成。 在使用定时功能时,需要将检测函数定义成非阻塞函数,然后使用以下模式:BIT bitDone = FALSE; ResetClock(); while(GetClock() < MAX_WAITINGTIME){if(CheckSomething() == TRUE){bitDone = TRUE;break;}}if(bitDone == FALSE){// process time out} 软件看门狗也是一个非常有用的模块,实现具有局限性的看门狗功能。在程序中合适的地方加入对软件看门狗的复位函数ResetWatchDog(),在Config.h中加入宏TIMER_WATCHDOGTIMEOUT。当程序运行时,如果在发生TIMER_WATCHDOGTIMEOUT次时钟中断之内没有复位软件看门狗, 则系统复位。 用户自定义任务也是一个非常有用的模块,如果想在时钟中断内执行一些耗时较短的任务,可以定义回调函数OnTimerInterrupt。函数原形为:void OnTimerInterrupt(void)。在这个函数中,可以执行一些短时间的任务,例如更新某些变量的值等。 这些模块可以帮助用户更好地设计和实现单片机C51编程,提高编程效率和代码可读性。
剩余9页未读,继续阅读
- 粉丝: 3
- 资源: 875
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享TF卡资料很好的技术资料.zip
- 技术资料分享TF介绍很好的技术资料.zip
- 10、安徽省大学生学科和技能竞赛A、B类项目列表(2019年版).xlsx
- 9、教育主管部门公布学科竞赛(2015版)-方喻飞
- C语言-leetcode题解之83-remove-duplicates-from-sorted-list.c
- C语言-leetcode题解之79-word-search.c
- C语言-leetcode题解之78-subsets.c
- C语言-leetcode题解之75-sort-colors.c
- C语言-leetcode题解之74-search-a-2d-matrix.c
- C语言-leetcode题解之73-set-matrix-zeroes.c