单片机c语言设计1.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机C语言(C51语言)的特点 继承标准c语言的绝大部分特性,基本语法相同,但其本身又在特定的硬件结构上有所扩展,如关键字sbit、data、idata、pdata、xdata、code等; 和汇编语言一样,能灵活地进行位操作指令; 可指定变量的存储类型以提高程序的执行效率; 应用时要注重对系统资源的理解,因为相对于PC机而言,单片机的系统资源较贫乏,对于RAM、ROM中的每一个字节都要充分利用; 单片机C语言(C51语言)的特点(续) 算法要精简 尽量少用浮点运算; 某些整形变量可考虑用char而不是 int 可以用无符号型数据时就不要用有符号型数据 尽量避免多字节的乘除运算,考虑使用移位运算替代; C51数据类型 范例一 将外部数据存储器000BH和000CH单元的内容相互交换: #include absacc.h void main(void) { …… char cTemp; cTemp =XBYTE[0X000B]; XBYTE[0X000B]=XBYTE[0X000C]; XBYTE[0X000C]= cTemp; …… } 范例一的汇编实现 …… MOV P2,#00H MOV R0,#0BH MOV R1,#0CH MOVX A,@R0 ;A=(000BH) MOV 20H,A ;(20H)=(000BH) MOVX A,@R1 ; A=(000CH) XCH A,20H ;(20H)与A互换 MOVX @R1,A MOV A,20H MOVX @R0,A ;交换后的数据送各自单元 …… KEIL51软件 KEIL 51软件是众多单片机应用的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用。 下面给出一个在KEIL51软件上的仿真应用程序。软件仿真的结果在Serial Windows #1的窗口中输出。 范例二:利用串行口作为简单调试的工具 #includereg52.h //reg52.h文件定义了所有8051扩展系列 //的特殊功能寄存器及中断,在C:\KEIL\C51\INC目录下 #includestdio.h void main() { SCON=0x52; TMOD=0x20; TH1=0xf3; TR1=1; /*以上4行为printf函数所必须的,其内容是对串行口初始 化,主要是串行口的控制、设置产生波特率的 定时器T1及启动运行; 2400波特率(12MHz),参阅教材P177~P180; */ printf(“Hello I am KEIL 51.\n”); //打印程序执行的信息 printf(“I will be your friend.\n”); //打印程序执行的信息 while(1); } //不能处理汉字 一个通用的串行口输出设置函数: 1、串行口输出设置函数 #include reg52.h void serial_initial() { SCON=0x52; TMOD=0x20; TH1=0xF3; TR1=1; } 2、在主函数中调用串行口输出函数 #includereg52.h //采用条件编译, //不会引发重复定义错误 #includestdio.h extern serial_initial(); void main(){ serial_initial(); /*思考:关于波特率的设置?*/ printf(“Hello I am KEIL 51. \n”); printf(“I will be your friend. \n ”); for ( ; ; ); //思考:此语句的作用? } 补充:串行口波特率(p180) Chapter1 作业: 熟悉KEIL51软件的基本使用方

文档评论(0)

书屋 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档