教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

SONIX C语言编程教程2

来源:网络收集 时间:2026-09-07
导读: 如何用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 程序资源共享每一

如何用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字,全部文档内容请下载后查看。喜欢就下载吧 ……
SONIX C语言编程教程2.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/977589.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)