SONIX C语言编程教程2
如何用C 来完成SN8系列芯片 的程序设计(二)
2013-5-3
Review
SN8 C程序结构 Real Time 的C程序 使SN8 C操作Bit游刃有余 创建自己的静态库 Debugger使用技巧
SN8 C 程序结构 资源共享SA1 共享资源1 共享资源2
共享资源3
共享资源4 SA2 SA3 3
程序资源共享每一个程序文档都 可以享有别的文档 的资源,也可以提 供自己的资源供别 的程序共享!3.C
1.C .h .h
.lib2.C .h
程序模块外部可见部分 .H档
外部不可见部分
.C档
可以将每一 个模块分成 外部可见和 不可见部分!
.H档的作用
对内声明函数和定义常量
对外提供内部函数调用的方 法和接口对不需要对外公开的 代码和定义都可以放 在.C中!
程序举例#include <sn8p2202.h> #include "MouseSensor.h" #include "public.h“ extern BITDEFINE statusWord; #define sensor_read statusWord.BIT3 void adns(void) { …… } unsigned int readSensorID(void) { …… } void readXData(void) { …… } void readYData(void) { …… } void delay(unsigned int Time) { …… } void resetSensor(void) { …… } 7
#ifndef _MOUSESENSOR_H_ #define _MOUSESENSOR_H_ void adns(void); unsigned int readSensorID(void); void readXData(void); void readYData(void); void delay(unsigned int Time); void resetSensor(void);
#endif
Real Time 的C程序
怎么实现程序的实时 性?每次都用中断吗? 还是……
任务的分割与分时处理
1
长 2 时 间 3 的 任 4 务5
1
2
3
4
5
其实大多的任务都可以 分割,然后分时进行处 理。这样每一个任务都 能得到及时的执行!9
传统按键扫描与分时按键扫描的对比1 传统按键扫描 我们可以将一个任 务分为60或70次来 完成,实现了分时 实现。而很多占用 很长时间的任务也 都可以这么做。
①
②
2
分时按键扫描
… ①
… ②
程序中进行的处理 通过定义全局变量来记录任务执行的多少。 通过定义标志位来检测任务执行的状态。 保证每次循环任务都得到执行,都能正确得到任 务状态。 每一个任务都不能占用太多的系统时间。 通过标志位来判断一个任务是否需要马上执行。 通过标志位来控制任务的执行。
使SN8 C操作Bit游刃有余
方便地定义位变量 方便地操作位变量有很多种操作位 的方法,那一种 更好?
定义位变量的技巧typedef struct bitOp{ unsigned bit0:1; unsigned bit1:1; unsigned bit2:1; unsigned bit3:1; unsigned bit4:1; unsigned bit5:1; unsigned bit6:1; unsigned bit7:1; }BIT; typedef union bitDefine{ unsigned int Byte; BIT bit; }BITDEFINE; #define BIT0 bit.bit0 #define BIT1 bit.bit1 #define BIT2 bit.bit2 #define BIT3 bit.bit3 #define BIT4 bit.bit4 #define BIT5 bit.bit5 #define BIT6 bit.bit6 #define BIT7 bit.bit7
将它们定义在一 个头文件中!
BITDEFINE
keyInData; #define keyInBuf keyInData.Byte #define key0 keyInData.BIT0 #define key1 keyInData.BIT1 #define key2 keyInData.BIT2 #define key3 keyInData.BIT3 #define key4 keyInData.BIT4 #define key5 keyInData.BIT5
程序中做这样的定义就 可以通过keyInBuf和 key0,key1……对word 整体和每个位进行操作! 这样比单独的定义位变 量还方便!
#define key6 keyInData.BIT6#define key7 keyInData.BIT7 …
void keyIn(void) { keyInBuf = 0; key0 = KP0; #ifdef KP1 key1 = KP1;
程序中既可对整个 字进行操作,又轻松 对位进行操作,并且 有很高的编译效率哦!
#endif…… }
创建自己的静态库
为什么要创建静态库? 如何创建静态库?
…… 此处隐藏:332字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




