c语言编程如何少用标志位,SONIX C语言编程教程2.ppt

SONIX C语言编程教程2

2006-01-20 如何用C 来完成SN8系列芯片的程序设计(二) Review SN8 C程序结构 Real Time 的C程序 使SN8 C操作Bit游刃有余 创建自己的静态库 Debugger使用技巧 SN8 C 程序结构 程序资源共享 程序模块 .H档的作用 程序举例 Real Time 的C程序 任务的分割与分时处理 传统按键扫描与分时按键扫描的对比 程序中进行的处理 使SN8 C操作Bit游刃有余 定义位变量的技巧 创建自己的静态库 为什么要创建静态库? 如何创建静态库? Debugger使用技巧 生成文件介绍 如何获得简洁的ASM档 一些应用说明 关于通讯过程中的移位,与汇编的不同。 一些应用说明 强制数据类型转换 SA1 SA3 SA2 共享资源1 共享资源2 共享资源3 共享资源4 资源共享 1.C 3.C 2.C .h .h .h .lib 每一个程序文档都可以享有别的文档的资源,也可以提供自己的资源供别的程序共享! 外部可见部分 外部不可见部分 .H档 .C档 可以将每一个模块分成外部可见和不可见部分! 对内声明函数和定义常量 对外提供内部函数调用的方法和接口 对不需要对外公开的代码和定义都可以放在.C中! #include #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) {……} #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 怎么实现程序的实时性?每次都用中断吗?还是…… 长 时 间 的 任 务 5 4 3 2 1 1 2 3 4 5 其实大多的任务都可以分割,然后分时进行处理。这样每一个任务都能得到及时的执行! ① ② ① ② … … 1 2 传统按键扫描 分时按键扫描 我们可以将一个任务分为60或70次来完成,实现了分时实现。而很多占用很长时间的任务也都可以这么做。 通过定义全局变量来记录任务执行的多少。 通过定义标志位来检测任务执行的状态。 保证每次循环任务都得到执行,都能正确得到任务状态。 每一个任务都不能占用太多的系统时间。 通过标志位来判断一个任务是否需要马上执行。 通过标志位来控制任务的执行。 方便地定义位变量 方便地操作位变量 有很多种操作位的方法,那一种更好? 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 #defi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值