第五章C单片机的程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章C单片机的程序设计.ppt

第五章80C51单片机的程序设计 ?⑶ 串行口 例:两单片机通过串行口进行点对点通讯,如图5-11所示。 第五章80C51单片机的程序设计 假定有A、B两台单片机A机的发送端和接收端与B机的接受端和发送端分别相连,并实现双机的共地连接。假定A机是发送者,B机是接收者。两机的晶振均采用11.0592 MHz。试用查询方式编写传输16字节数据的通讯程序。 通讯协议: 当A机发送时,先发送联络信号“AA”, 机 图5-11 串行口进行点对点通讯 在接受到该信号后回答一个“BB”,表示同意 接受。 第五章80C51单片机的程序设计 A机收到“BB”后,开始发送数据,每发送一次求一次“校验和”。设数据长度为16字节,数据缓冲区为BUF,数据发送完后马上发送“校验和”。 B机接受数据,并将其转储到数据缓冲区BUF,每接收一个数据计算一次“校验和”,当收齐一个数据块之后,再接收A机发送来的“校验和”。 将A机发送来的“校验和”与B就求出的“校验和”进行比较。若两者相等,说明数据接收正确,B机向A机回答“00H”;若两者不等,说明接收不正确,B机回答“0FFH”,请求A机重发。 第五章80C51单片机的程序设计 A机收到“00H”的回答后,结束发送;若收到“0FFH”的回答,则需将数据重发一次。 双方约定的数据传输速率为1200 b/s。为协调双方工作,串行口均工作在模式1,以T1为波特率发生器,工作在模式2。 故TH1=TL1=0E8H,PCON的SMOD为0。 第五章80C51单片机的程序设计 通讯程序: ① A机发送程序: #includereg51.h #define uchar unsighed char #define TR 1 uchar idata buf [16]; uchar pf; 第五章80C51单片机的程序设计 在上述的例子中,,函数func是有返回值的,通过寄存器R7/R6返回变量i,它是一个int型量占两个字节。 从上述的例子中可以得出编写被C语言调用的汇编语言程序需要通过以下步骤: ① 要获得由C输入的函数参数,前三个参数一般应从寄存器中取得。寄存器不够或参数多于三个时,则放在与模式有关的缺省数据段中传入的。数据是按定义说明的先后顺序安放的。对于位变量另有位段。 第五章80C51单片机的程序设计 ② 汇编子程序的主体部分放在code段中。主体部分的一开始一定要把寄存器中的参数保存起来,因为函数内部可能要使用到这些寄存器。函数的内部变量应安排在与参数相关同的段内。 ③ 函数的主体部分用汇编写出。 ④ 函数的结尾部分应考虑是否有返回量。如有,在RET指令之前放入合适的寄存器中;没有返回量,则直接写RET指令返回。 第五章80C51单片机的程序设计 ⑤ 应将函数地址和数据段及位段的首址均说明为汇编的public。 ⑥ 将程序段、数据段和位段均加上overlayable(覆盖)的连接属性。 以下试举例说明之。 例:试编写能被C函数调用的汇编语言延时子程序。 第五章80C51单片机的程序设计 viod delay (unsigned vd) ?PR?_delay?MOD SEGMENT CODE PUBLIC _func RSEG ?PR? _delay?MOD _delay: USING 0 Delay: MOV A,#0FFH Del: NOP NOP 第五章80C51单片机的程序设计 DJNZ A,Del DJNZ R7,Delay MOV A,R6 JZ EXIT DJNZ R6,Delay EXIT: RET END 第五章80C51单片机的程序设计 ? 5.3.3??? C语言程序设计 ? 如前所述,一般的程序都是顺序、选择、循环三种结构的复杂组合。C语言中有一大批控制语句,用于控制程序的流程,以实现程序的选择结构和循环结构。它们由特定的语句定义符组成。下面分别介绍顺序、选择、循环三种基本结构与它们的控制语句。 ? 第五章80C51单片机的程序设计 ⑴ 顺序结构 例: #includestdio.h int gcd(int u,int v) { int temp; temp=u-v; return(temp); } main() { int result,a=150,b=35; result= gcd(a,b); } 第五章80C51单片机的程序设计 这个程序是一个纯粹的顺序结构程序。 ?⑵ 选择结构 C语言中,提供if 语句和s

文档评论(0)

rewfdgd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档