位置:51电子网 » 技术资料 » 单 片 机

单片机C语言

发布时间:2007/9/10 0:00:00 访问次数:532

一》宏定义:

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!=0&&myv!=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     ┃  代

一》宏定义:

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!=0&&myv!=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     ┃  代

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!