单片机编程C51疑难解析(不断更新中)
2013-07-22 10:17
453 查看
1.
a|=b
即a=a|b。新的a 等于 原来的a|b。
&是一个位运算符,就是将两个二进制的数逐位相与,就是都是1才是1,只要有一个为0则为0,结果是相与之后的结果。
&&是一个逻辑运算符,就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。
2.
while(*p&&*p=='*')
//等价于
while(*p!='\0'&&*p=='*')
//还等价于
while(*p=='*')
//表示当*p等于'*'时执行循环体。
3.
#define是宏定义语句
想做的是位操作,应该改将#define LED P1^1
#define KEY_ON P1^6
#define KEY_OFF P1^7
改为
sbit LED = P1^1;
sbit KEY_ON = P1^6;
sbit KEY_OFF = P1^7;
这样文中的“=”就不违法了
4.
TF0=0;
它的作用是:当定时器0溢出时,由硬件使TF0置1,并申请中断,进入中断服务程序后,由硬件自动清0.要注意:如果使用的是软件查询方式的话,当查询到该为置1后得用软件清0.
5. while(!TI);//while(TI==0)
a|=b
即a=a|b。新的a 等于 原来的a|b。
&是一个位运算符,就是将两个二进制的数逐位相与,就是都是1才是1,只要有一个为0则为0,结果是相与之后的结果。
&&是一个逻辑运算符,就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。
2.
while(*p&&*p=='*')
//等价于
while(*p!='\0'&&*p=='*')
//还等价于
while(*p=='*')
//表示当*p等于'*'时执行循环体。
3.
#define是宏定义语句
想做的是位操作,应该改将#define LED P1^1
#define KEY_ON P1^6
#define KEY_OFF P1^7
改为
sbit LED = P1^1;
sbit KEY_ON = P1^6;
sbit KEY_OFF = P1^7;
这样文中的“=”就不违法了
4.
TF0=0;
它的作用是:当定时器0溢出时,由硬件使TF0置1,并申请中断,进入中断服务程序后,由硬件自动清0.要注意:如果使用的是软件查询方式的话,当查询到该为置1后得用软件清0.
5. while(!TI);//while(TI==0)
TI=0; TI是串口的发送中断标志位,需软件清零 while(TI==0);//表示等待发送结束 TI=0;//表示软件清零
TI是单片机的串口发送数据的标志位,当单片机发送数据后将TI置1,需要软件清0那么while(!TI)的意思也就是当单片机未发送数据所要执行的程序。 6.复合赋值运算符a+=b------a=a+b; a%=b-------a=a%b; a<<=b--------a=a<<b等等,还有a-=b;a/=b;a*=b;a>>=b对于初学者可能不太习惯,但是非常有利于编译处理,能够提高编译效率便产生高质量的目标代码。 7.SDA=(bit)(input&0x80) input & 0x80 意思是取得 该字节的最高位 加一个bit 意思是 bit强类型转化 如果 最高位是1那么 sda=1 如果最高位不是1那么sda=0 8.宏定义#define FOSC 18432000L和#define BAUD 9600?FOSC是根据IC外部实际使用的晶振来定义的,因为STC的下载版上都是使用的18.432M的晶振,所以会定义FOSC为18432000L 如果你外部挂的是11.0592M的晶振,那么就需要这样定义 #define FOSC 11059200L BAUD的定义则是根据你与电脑串口所通讯的具体的波特率, 若使用9600的波特率,则定义为 #define BAUD 9600 若使用115200的波特率,则定义为 #define BAUD 115200
相关文章推荐
- matlab与VC++混合编程之疑难篇(不断更新)
- 单片机c51例程——不断更新中。。。
- ARM编程及调试中问题汇总(不断更新)
- 个人编程规范(不断更新)
- 编程常用词汇总结(不断更新)
- 编程小经验,不断更新中...
- Android编程心得-常见问题解决办法(不断更新中..)
- 单片机控制IIC协议EEPROM芯片24C512之模块化编程(持续更新中)
- C/C++编程的常识和注意点(不断更新)
- 编程之余保护眼睛[不断更新ing...]
- 吾程序猿一路编程过程中遇到的各种奇葩(或粗心不懂,或源于ACM)不断更新ing..........
- 任务驱动,Winform VS WEB对比式学习.NET开发系列第一篇------身份证解析(不断更新的WEB版本及Winform版本源码)
- 单片机控制气压海拔模块BMP180之模块化编程(持续更新中)
- 单片机 C51 编程要点总结
- 单片机 C51 编程要点总结
- 单片机控制2004A液晶屏之模块化编程(持续更新中)
- 单片机控制气压海拔模块BMP180之模块化编程(持续更新中)
- 【编程】使用友善之臂mini2440开发嵌入式QT程序——不断更新中
- Linux 编程总结(不断更新)
- 单片机中用c编程时头文件reg51.h及reg52.h解析