📄 c51运算符和表达式.htm
字号:
}
return true;
}
function top_joined(value)
{
if (value != "")
{
var action;
action = value.split("_");
if (action[0] == "league")
{
window.location.href="/league/index.php?gid=" + action[1];
}
if (action[0] == "acti")
{
window.location.href="/league/activity/acti_mana_index.php?t_id=" + action[1];
}
}
}
function copyurl(url)
{
try{
clipboardData.setData('Text',url);
showAlert('已经把该社团网址复制到系统剪贴板,您可以使用(Ctrl+V或鼠标右键)粘贴功能,通过其他软件记录或发送给您的朋友。')
}
catch(e){}
}
function add_favorite(uid, url, name)
{
window.open("/personal/favorite/add.php?member_id="+uid+"&url="+url+"&name="+name,'_blank','width=400,height=220,toolbar=0,locationbar=0,menubar=0,statbar=0');
return false;
}
// 提示登录
function alertlert_login()
{
showAlert('对不起,您目前没有权限,请先登录!');
document.login_form1.account.focus();
}
//申请加入社团
function con_join(con_gid)
{
showConfirm("您确认加入本社团吗?","window.location.href='/league/apply.php?g_id="+con_gid+"';","");
}
//退出本社团
function con_quiet(con_gid,con_uid)
{
showConfirm("您确认退出本社团吗?","window.location.href='/league/member/quiet_member.php?g_id="+con_gid+"&q_uid="+con_uid+"';","");
}
</SCRIPT>
<!-- 回复框 -->
<DIV id=background style="DISPLAY: none"></DIV>
<DIV id=postbox
style="DISPLAY: none; Z-INDEX: 50; LEFT: 769px; WIDTH: 600px; POSITION: absolute; TOP: 271px">
<FORM name=reply_comment action=/league/comment/index.php?gid=514465 method=post
target=hidden_frame><INPUT id=act type=hidden value=add name=act> <INPUT id=r_id
type=hidden name=r_id> <INPUT id=t_id type=hidden name=t_id> <INPUT id=f_uid
type=hidden name=f_uid>
<TABLE cellSpacing=0 cellPadding=0 width="70%" border=0>
<TBODY>
<TR>
<TD height=13> </TD></TR>
<TR>
<TD class=box_common height=26> <SPAN
class=font_common_title>回复评论</SPAN></TD></TR></TBODY></TABLE>
<TABLE class=box_common01 cellSpacing=0 cellPadding=0 width="70%">
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=8 cellPadding=0 width="100%" bgColor=#ffffff
border=0><TBODY>
<TR>
<TD class=font_common vAlign=top align=right height=63>内容:</TD>
<TD class=font_common vAlign=top><TEXTAREA class=input_box01 id=input_area name=input_area rows=6 cols=48></TEXTAREA></TD></TR>
<TR>
<TD class=font_common vAlign=top align=right width="15%">原文:</TD>
<TD class=font_common style="LINE-HEIGHT: 18px" vAlign=top
width="85%"><SPAN class=gray id=past_type></SPAN></TD></TR>
<TR>
<TD class=font_common vAlign=top align=middle colSpan=2><INPUT class=btn01 onclick=javascript:hidden_reply();submit_post(document.reply_comment); type=button value=发表 name=queding>
<INPUT class=btn01 onclick=hidden_reply(); type=reset value=取消>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM></DIV><!-- 回复框 -->
<DIV id=mainBox>
<DIV id=mainBoxBg>
<TABLE class=module_title cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=corner_left></TD>
<TD class=corner_center><A
href="http://www.5jia1.com/league/?gid=514465">首页</A> > <A
href="http://www.5jia1.com/league/blog/blog_index.php?gid=514465">社团文集</A> > <A
href="http://www.5jia1.com/league/blog/show_comm.php?bid=361290">第六课
C51运算符和表达式</A></TD>
<TD class=corner_right></TD></TR></TBODY></TABLE>
<DIV class=module_content>
<DIV class=module_content_line>
<DIV class=bg>
<TABLE cellSpacing=10 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle>
<TABLE class=box_common cellSpacing=1 cellPadding=5 width="100%"
border=0><TBODY>
<TR class=box_common_title>
<TD colSpan=2>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="35%"><B>第六课 C51运算符和表达式</B></TD>
<TD align=right width="65%">作者: <A
href="http://www.5jia1.com/personal/?member_id=505887"
target=_blank>张文俊</A> 2007-08-14
16:51:06 </TD></TR></TBODY></TABLE></TD></TR>
<TR class=box_content>
<TD vAlign=top align=middle width="10%"><A
href="http://www.5jia1.com/personal/?member_id=505887"
target=_blank><IMG class=box01 height=98
src="6.files/s_0_personal_photo_505887.jpg" width=98 vspace=5
border=0></A><BR><IMG height=14 src="6.files/icon_boy.gif" width=14
border=0> <A
href="http://www.5jia1.com/personal/?member_id=505887"
target=_blank>张文俊</A> </TD>
<TD>
<TABLE class="font_content autowrap" cellSpacing=12 cellPadding=0
width="100%" border=0>
<TBODY>
<TR>
<TD class=line_h20 style="WIDTH: 790px">
<DIV style="OVERFLOW-X: auto; WIDTH: 100%">
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TH vAlign=center align=middle height=32>
<H1>第六课 C51运算符和表达式</H1></TH></TR>
<TR>
<TD align=middle bgColor=#f7f7f7
height=25>作者:佚名 来源:本站原创 点击数:
142 更新时间:2007年07月17日 </TD></TR></TBODY></TABLE>
<P>上两课说了常量和变量,先来补充一个用以重新定义数据类型的的语句吧。这个语句就是
typedef,这是个很好用的语句,但我却不常用它,通常我定义变量的数据类型时都是使
用标准的关键字,这样别人能很方便的研读你的程序。如果你是个DELPHI
编程爱好者或是DELPHI程序员,你对变量的定义也许习惯了DELPHI 的关键字,如 int
类型常会用关键字Integer来定义,在用 单片机c语言时你还想用回这个的话,你能这样写:</P>
<P>typedef int integer;</P>
<P>integer a,b;</P>
<P>这两句在编译时,其实是先把 integer 定义为 int,在以后的语句中遇到 integer 就用 int
置换,integer 就等于 int,所以 a,b 也就被定义为 int。typedef 不能直接用来定义变量,它
只是对已有的数据类型作一个名字上的置换,并不是产生一个新的数据类型。下面两句就是一个错误的例子:</P>
<P>typedef int integer;</P>
<P>integer = 100;</P>
<P>使用 typedef 能有方便程序的移植和简化较长的数据类型定义。用 typedef 还能定义结
构类型,这一点在后面详细解说结构类型时再一并说明。typedef 的语法是</P>
<P>typedef 已有的数据类型 新的数据类型名
运算符就是完成某种特定运算的符号。运算符按其表达式中与运算符的关系可分为单目</P>
<P>运算符,双目运算符和三目运算符。单目就是指需要有一个运算对象,双目就要求有两个运
算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式 子。C
是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句。</P>
<P>赋值运算符</P>
<P>对于“=”这个符号大家不会陌生的,在 C 中它的功能是给变量赋值,称之为赋值运算
符。它的作用不用多说大家也明白,就是但数据赋给变量。如,x=10;由此可见利用赋值运
算符将一个变量与一个表达式连接起来的式子为赋值表达式,在表达式后面加“;”便构成
了赋值语句。使用“=”的赋值语句格式如下:</P>
<P>变量 = 表达式; 示例如下</P>
<P>a = 0xFF; //将常数十六进制数 FF 赋于变量 a</P>
<P>b = c = 33; //同时赋值给变量 b,c d
= e; //将变量 e 的值赋于变量 d</P>
<P>f = a+b; //将变量 a+b 的值赋于变量 f
由上面的例子能知道赋值语句的意义就是先计算出“=”右边的表达式的值,然后将得到
的值赋给左边的变量。而且右边的表达式能是一个赋值表达式。</P>
<P>在一些朋友的来信中会出现“==”与“=”这两个符号混淆的错误原码,问为何编译报 错,一般就是错在 if
(a=x)之类的语句中,错将“=”用为“==”。“==”符号是用来进行相 等关系运算。</P>
<P>算术,增减量运算符</P>
<P>对于 a+b,a/b 这样的表达式大家都很熟悉,用在 C 语言中,+,/,就是算术运算符。单片机c语言
中的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其它则都是双 目运算符:</P>
<P>+ 加或取正值运算符</P><BR
style="PAGE-BREAK-BEFORE: auto" clear=all>
<DIV class=Section26>
<P>- 减或取负值运算符</P>
<P>* 乘运算符</P>
<P>/ 除运算符</P>
<P>% 取余运算符 算术表达式的形式:</P>
<P>表达式 1 算术运算符 表达式 2
如:a+b*(10-a), (x+9)/(y-a)</P>
<P>除法运算符和一般的算术运算规则有所不一样,如是两浮点数相除,其结果为浮点数,如</P>
<P>10.0/20.0 所得值为 0.5,而两个整数相除时,所得值就是整数,如 7/3,值为 2。像别的语 言一样 C
的运算符与有优先级和结合性,同样可用用括号“()”来改变优先级。这些和我们
小时候学的数学几乎是一样的,也不必过多的说明了。</P>
<P>++ 增量运算符</P>
<P>-- 减量运算符</P>
<P>这两个运算符是 C 语言中特有的一种运算符。在 VB,PASCAL 等都是没有的。作用就是 对运算对象作加 1 和减
1 运算。要注意的是运算对象在符号前或后,其含义都是不一样的,虽 然同是加 1 或减
1。如:I++,++I,I--,--I。</P>
<P>I++(或 I--) 是先使用 I 的值,再执行 I+1(或 I-1)</P>
<P>++I(或--I) 是先执行 I+1(或 I-1),再使用 I
的值。增减量运算符只允许用于变量的运算中,不能用于常数或表达式。
先来做一个实验吧。学习运算符和另外一些知识时,我们还是给我们的实验板加个串行</P>
<P>接口吧。借助电脑转件直观的看<A href="http://www.51hei.com/"
target=_blank><U><FONT
color=#800080>单片机</FONT></U></A>的输出结果,如果你用的是成品实验板或仿真器,那你就能跳过这一段了。</P>
<P>在制作电路前我们先来看看要用的 MAX232,这里不去具体讨论它,只要知道它是 TTL和
RS232
电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,能省一点,效
果也不错 (如有兴趣能查看<A
href="http://www.5jia1.com/league/blog/"><U><FONT
color=#800080></FONT></U></A> 网站中的相关资料)。下图就是 MAX232
的基本接线图。</P>
<P><IMG style="CURSOR: pointer" alt=点此在新窗口浏览图片
src="6.files/20077170791408782.gif" width=258 border=0
&111nload="function anonymous() { resizepic(this) }"
&111nclick="function anonymous() { window.open(this.src); }"
&111nmousewheel="function anonymous() { return bbimg(this) }"></P>
<P>图 6-1 MAX232</P>
<P>在上两课的电路的基础上按图 6-3 加上 MAX232 就能了。串行口座用 DB9 的母头,这样 就能用买来的 PC
串行口延长线进行和电脑相连接,也能直接接到电脑 com 口上。</P></DIV><BR
style="PAGE-BREAK-BEFORE: auto" clear=all>
<DIV class=Section27>
<P><IMG style="CURSOR: pointer" alt=点此在新窗口浏览图片
src="6.files/20077177144792836.jpg" width=197 border=0
&111nload="function anonymous() { resizepic(this) }"
&111nclick="function anonymous() { window.open(this.src); }"
&111nmousewheel="function anonymous() { return bbimg(this) }"></P>
<P>图 6-2 DB9 接头</P>
<P>图 6-3 加上了 MAX232 的实验电路 做好后,就先用回前面的“Hello
World!”程序,用它来和你的电脑说声 Hello!把程序</P>
<P>烧到芯片上,把串行口连接好。嘿嘿,这个时候要打开你的串行口调试软件,没有就赶快到网上 DOWN 一个了。你会用
Windows 的超级终端也行,不过我从不用它。我用 <A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -