- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机 C 语言之一
预处理
一》宏定义:
1、不带参数:
#define 标识符 常量表达式
/*#define 是宏定义命令,宏名(标识符)好习惯用大写*/ #define NIL 0x80
2、带参数:/*相当于小函数*/ #define 宏名(参数表) 字符串
/*不仅要时行字任串替换还要进行参数的替换,在宏定义时,宏名与带参数的括弧之间不应该加空格, 否则将空格以后的字符串都作为替代字符串的一部分,这可是很容易出错的*/
如:#define SQ(a,b) a*b
使用:x=12;y=10;area=SQ(x,y);/*则area=12*10=120*/
二》文件包含:
#include 文件名或#include 文件名
/*在C 中用双引用形式更保险,在C51 中常用物是尖括弧形式*/
三》条件编译:
/*一般源程序中的所有程序行都参加编译,但有时希望对其中一部分内容只在满足一定条件下才进行编译,也就是对一部分内容指定编译的条件。*/
#if、#elif、 #else、#endif、#ifdef、#ifndef
/*选择不同的编译范围,产生不同的代码,提供通用性。*/
/*如对 8051 在 6MHZ 与 12MHZ 下有*/ #ifdef cpu==8051
#define FREQ 6 /*程序段*/ #else
#define FREQ 12/*程序段*/ #endif
/*这样下面的原程序不用做任何修改便可以使用于两种时钟频率的单片机系统*/
四》其他:
1、#error:捕捉不可预料的编译条件
#if (myv!=0myv!=1)/*假定其值必为 0 或 1*/ #error myv must be 1 or 0/*出错时显示*/ #endif
2、#pragma:用于在程序中向编译器传送各种编译控制命令#pragma 编译命令序列
/*例:想按如下命令编译ex.c c51 ex.c debug cod large 可用:*/
#pragma DB CD LA #pragma disable
/*禁止中断*/
单片机 C 语言之二
一》数据类型:
char int long
1:unsinged 0~255 0~65535 0~4294967295
2:signed -128~127 -32768~32767 -2147483648~2147483647
指针:* 3 字节位标量: sbit
特殊功能寄存器:sfr
16 位特殊功能寄存器:sfr16 占 2 个内存单元,0~65535
可寻址位:sbit 利用他可访问 51 单片机的内部RAM 中的可寻址位或特殊功能寄存器中的可寻址位
sfr P0=0x80; sbit P0_1=P0^1;
/*将P0 口的口地址定义为 80H,将 P0.1 位定义为P1_1*/
二》数据存贮类型
表 1. C51 数据存贮类型
━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━ 数据存贮类型 ┃ 与存贮空间的对应关系
━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━
data
┃
直接寻址片内数据存贮区,访速度快
bdata
┃
可位寻址片内数据存贮区,允许位与字节混合访问
idata
┃
间接寻址片内数据存贮区,可访问片内全部RAM 地址空间
pdata
┃
分页寻址片外数据存贮区(256 字节)由 MOVX @R0 访问
xdata
┃
片外数据存贮区(64K),由MOVX @DPTR 访问
code
┃
代码存贮区(64K),由MOVC @DPTR 访问
━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━ 变量的存贮类型定义:
char data var
/*字符变量var 被定义为data 存贮类型,C51 编译器将把该变量定位在 51 单片机片内数据区存贮区
中*/
bit bdata flag
/*位变量flag 被定义为bdata 存贮类型,C51 编译器将把该变量定位在 51 单片机片内数据区存贮区
(RAM)中的位寻址区:20H--2FH*/
三》typedef:重新定义数据类型
typedef 已有数据类型 新的数据类型
typedef int word;
/*将word 定义为整型*/ word i,j;
/*将i,j 定义为整型*/
四》位运算符:
━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━━━┳━━━━━━
~ ┃ ┃ | ┃ ^ ┃ ┃
━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━━━╋━━━━━━ 按位取反┃ 按位与 ┃ 按位或 ┃ 按位异或 ┃ 左移 ┃ 右移
━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━━━┻━━━━━━
对移位:
原创力文档


文档评论(0)