champ

champ

 
c51
个单片机硬件的资源头文件。 各模块使用了定义在Common.h中的一些数据类型。如:BIT(bit) BYTE(unsigned char)等,具体请参见源程序。 时钟模块   在单片机软件设计中, 时钟是重要资源, 为了充分利用时钟资源, 故设计本时钟模块。 本模块使用定时器0,在完成用户指定功能的同时, 还能够自动处理一些其它模块中与时钟相关的信息。   时钟模块由声明文件Timer.h以及实现文件Timer.c组成。   用户应该在Config.h中定义宏TIMER_RELOAD来设定定时器0的重装载初值。推荐的定时器0的中断时间大于1毫秒。   在程序的初始化阶段调用时钟模块的初始化函数InitTimerModule()之后,就可以使用时钟模块所以支持的各种功能。具体描述如下: 延时:当用户需要进行一定时间的延时时,可以通过调用Delay()来进行,参数为时钟中断的次数。如时钟中断周期为1ms, 想进行100ms的延时, 则可以调用Delay(100)。 注意: 如果延时的绝对时间小于时钟中断的周期,则不能够用本方法做到延时。 定时:当程序中需要使用定时功能时,如等待某外部事件,如果在一定时间内发生则继续执行,如果在这段时间内发生,则认为出现错误,转向错误处理机制。 在此推荐一种编程模式,但用户可以用自己认为更合理的方式处理此类问题。 这里简单说明一下关于阻塞式函数及非阻塞式函数。简单说,阻塞式函数就是当检测完成条件,如果不能够完成则等待,如: void CheckSomething() {   // gbitSuccessFlag is a global variable   while(gbitSuccessFlag == FALSE)   {     // do nothing but waiting   } } 可以看到,当bitSuccessFlag没有被设置为TRUE时,函数保持等待状态不返回,这样就是阻塞式的函数。 另外一种情况: BIT CheckSomething() {   if(gbitSuccessFlag == TRUE)   {     // …     return TRUE;   }   return FALSE; } 在这里,如果所检测的事件有没有完

导航

统计

常用链接

留言簿

随笔档案

文章档案

收藏夹

搜索

最新评论