摘要: (1)在c++中,所有的变量可以在用的时候再定义,而不像c中需要在前面一块定义;(2)register变量:在c中,定义该变量实质就是一种对变量的优化,而在c++中不定义register变量时,编译器会根据实际情况进行优化,所以不定义也可能会优化。在 c中,register变量是不可以被寻址的,而在c++中是可以的,但是被寻址后,它就会变成普通变量,定不定义register变量已经没有意义;(3)在c++中不能定义多个同名的全局变量,在c中可以,这事实是一种规范;(4)const变量:在c中,const变量是可以通过指针被改变的,只是不能当左值用,并不是真正意义上的只读常量;而在c++中,如果 阅读全文
posted @ 2013-08-28 09:20 智者顺势而为 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 1.利switch.....case 语句,由于switch语句可以判断离散值,所以可以用来判断按键eg:switch(P1) { case 0xfe:delay(); if(P1=0xfe) {}break; case 0xfd:delay(); if(P1=0xfd) {}break; default: break; } 通过对P1值的判断可以确定是哪个独立按键按下了。2.switch(P1) { case 0xfe:delay(); //去抖 if(P1=0xfe) //按键按下 { for(;;) { if(P1=0xfe) //确认按下continue; else break; }f 阅读全文
posted @ 2013-08-09 11:18 智者顺势而为 阅读(699) 评论(0) 推荐(0) 编辑
摘要: while(1){code unsigned int a[]="12345abcdef";uchar *p;p=a;SBUF=*p;while(!TI){_nop_();}p++;if(*p=='\0')break;TI=0;} 阅读全文
posted @ 2013-08-05 13:37 智者顺势而为 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 昨天看到一则程序if(!in_pin&&(TH0&0x80)==0),以为&&的优先级比==高,没想到不是,所以今天决定贴上优先级表,以防自己以后出错了: 阅读全文
posted @ 2013-08-05 11:31 智者顺势而为 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 随着短距离的通信技术的发展,红外通信已经日渐远离人们的眼球,但是在红外遥控领域应用还是比较广的。 概念:就是将基带二进制信号通过载波信号调制成脉冲信号,通过红外发射管发射出去。载波信号的频率一般为38khz(35-42都行)。这二进制信号,通过一定的协议编码出来的,常见的是NEC协议。而红外管发射的红外线波长为0.76-1.5nm。 需要注意的地方:NEC协议与红外通信是无关的,它只是表示了这串数据的格式,而红外通信只是将这串数据原原本本地发射出去。 NEC协议的格式:引导码 用户码 用户码 键值码 键值反码引导码:由9千us的低电平与4千5us的高电平组成; 后面的码值:1由1680us高. 阅读全文
posted @ 2013-08-05 11:16 智者顺势而为 阅读(623) 评论(0) 推荐(0) 编辑
摘要: 从今天开始准备学习基于VC++6.0的串口通信了,需要补习一下c++的基本知识。 c++中谈到最多的就是类了。先从基本的格式说起:类声明: class 类名{ private: 私有成员和成员函数 protected: 受保护成员和成员函数 public: 公有成员和成员函数}比如:class student{ private: char m_strname[30];int m_nage; public: student(const char *name,int age); //构造函数,每个类中必须有一个构造函数 ~student(); } 类成员实现函数student::student(. 阅读全文
posted @ 2013-07-31 18:57 智者顺势而为 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 在编写c文件时,我们都喜欢用宏来定义一些常量或者函数,这样增加了程序的可读性!但是我们有没有想过使用宏定义时可能出现问题呢?下面就简单举几例来说明宏定义的弊端! 例1: #define jia(m,n) (a)+(b) printf("%d\n",jia(1,2)*jia(1,2)); 通常我们以为结果是9,但是编译出来的结果却是5,因为宏定义只是简单的替换,并没有执行这个函数,所以替换的结果表达式是1+1*2+2。其实我们只要这样写((a)+(b)),就就可以避免这样的错误出现。 例2: #define jia(m,n)(a<b)?a:b i=1;j=5; prin 阅读全文
posted @ 2013-07-26 16:23 智者顺势而为 阅读(718) 评论(0) 推荐(0) 编辑
摘要: 当我们完成一个c文件后,我们就可以进行编译-链接-执行。那么它们究竟是怎么工作的呢,接下来就给大家介绍整个编译过程(如图所示)!下面就来介绍下在每个过程中,各个模块的作用! (1)预处理器:处理注释,用空格表示;删掉#define,展开有用的宏定义;处理条件编译指令如#ifdef,#endif,#else等;处理include文件,展开里面内容;保留#pragma指令。 在linux下,通过gcc-E文件名.c-O文件名.i命令可以得到预处理后的文件。 (2)编译:这个过程就是将.i文件编译生成汇编文件,即.s文件,这个过程编译器主要是在判断语法是否正确,然后再来生成汇编文件。 在linux. 阅读全文
posted @ 2013-07-26 14:16 智者顺势而为 阅读(256) 评论(0) 推荐(0) 编辑