关于函数指针在单片机上的应用
2017-06-06 20:27
501 查看
通过函数指针使程序的可读性更强。在开发外设较少而程序比较复杂的单片机时函数指针能给无论是开发者还是维护者一个比较清晰的思路。
以51单片机为例
是不是程序变得非常清晰呢?
以51单片机为例
/*************************************** main.h ***************************************/ #ifndef _MAIN_H_ #define _MAIN_H_ #define MAXTASK (10) typedef unsigned int uint; typedef unsigned int u32; typedef unsigned char uchar; typedef unsigned char u8; typedef struct { uint period; uchar runMe; void (*pTask)(); }Task; void sysStop(); void sysRun(); void sysAddTask(uint *p,uint tPeriod); #endif /*************************************** main.c ***************************************/ #include<reg52.h> #include"main.h" void sysAddTask(uint *p,uint tPeriod); void sysInit(); void sysStart(); void sysSleep(); void sysStop(); void sysRun(); void sysDsp(); Task task[MAXTASK]; void sysAddTask(uint *p,uint tPeriod) { uchar i=0; while(task[i].pTask != 0) i++; task[i].pTask = p; task[i].period = tPeriod; } void sysInit()//12mhz@1ms@定时器2自动重装 { uchar i; for(i=0;i<MAXTASK;i++) { task[i].pTask = 0; task[i].period = 0; task[i].runMe = 0; } T2CON=0X04; TMOD = 0x00; TH2=0XFC; TL2=0X18; RCAP2H=0XFC; RCAP2L=0X18; ET2=1; TR2=1; } void sysStart() { EA = 1; } void sysSleep() { PCON |= 0x01; } void sysStop() { TR2 = 0; } void sysRun() { TR2 = 1; } void sysDsp() { uchar i; for(i=0;i<MAXTASK;i++) { if(task[i].runMe==1) { task[i].runMe = 0; (*task[i].pTask)(); } } sysSleep(); } void main() { sysInit(); // sysAddTask(led,1000); sysStart(); while(1) { sysDsp(); } } void sysUpdate() interrupt 5{ uchar i; TF2=0; for(i=0;i<MAXTASK;i++) { if(task[i].pTask) if(task[i].period==0) task[i].runMe = 1; else task[i].period -= 1; } }
是不是程序变得非常清晰呢?
相关文章推荐
- C++初学者(关于函数指针的应用)
- 关于C语言通过函数传递多个数据————指针的应用
- 关于函数指针的应用
- cocos2d中关于函数指针的应用
- C++成员函数指针的应用(学习收录)
- C++成员函数指针的应用(学习收录)
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 转:关于在C++内用指针调用类的成员函数
- EXCEL 中自定义函数的应用(关于 XOR 在 EXCEL 中的用法 及 文本型数字求和)
- 关于c++ 函数指针的问题
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- EXCEL 中自定义函数的应用(关于 XOR 在 EXCEL 中的用法 及 文本型数字求和)
- SqlServer中关于时间函数的应用
- 关于用指针作为函数参数申请动态内存
- 函数指针及其应用
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用
- 关于msgbox几个函数的应用
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 函数指针的应用(2007-06-27)