C51的C语言程序设计m.ppt
《C51的C语言程序设计m.ppt》由会员分享,可在线阅读,更多相关《C51的C语言程序设计m.ppt(39页珍藏版)》请在装配图网上搜索。
2019/12/13,1,第10章80C51的C语言程序设计,单片机C语言概述,10.1,C51的数据类型与运算,10.2,C51流程控制语句,10.3,C51的指针类型,10.4,C51的函数,10.5,C51编程实例,10.6,2019/12/13,2,10.1单片机C语言概述,10.1.1C51程序开发过程,编译器能自动完成变量的存储单元的分配对常用功能模块和算法编制相应的函数,方便移植,采用C51的优点,C语言具有良好的可读性、可移植性和基本的硬件操作能力。,C51程序开发过程,编写源程序建立工程,加入源程序编译产生目标程序仿真调试、写存储器,10.1.2C51程序结构,C51程序由一个或多个函数组成,至少包含一个主函数main;若被调用函数在main()前,可直接调用,否则需说明,再调用;,2019/12/13,3,10.2.1C51的数据类型,10.2C51的数据类型与运算,数据类型决定其取值范围、占用存储器的大小及可参与哪种运算。,等同double,等同short,bit:位变量的名字,编译器分配地址(RAM的20H2FH区)sbit定义位变量的名字和地址(SFR及RAM的20H2FH区),2019/12/13,4,10.2.2C51数据的存储类型,C51的存储器类型,经常使用的变量应置于片内RAM中,用bdata、data、idata定义不经常使用或规模较大的变量应置于片外RAM中,用pdata、xdata定义,2019/12/13,5,默认存储器类型由编译控制命令的存储模式指令限制,在Vision中,在projectOptionforTarget1TargetMemoryModel中指定,sfr特殊功能寄存器名=地址常数sfrSCON=0 x98;,2019/12/13,6,特殊功能寄存器中特定位的声明,sbit位变量名=特殊功能寄存器名位的位置(07)sfrPSW=0 xD0;sbitOV=PSW2;,sbit位变量名=字节地址位的位置(07)sbitOV=0 xD02;,sbit位变量名=位地址sbitOV=0 xD2;,注:SFR及其位在头文件reg51.h或reg52.h中有定义,故程序中加reg51.h等,可省,10.2.380C51硬件结构的C51定义,特殊功能寄存器的声明,书上为0 x90,错,2019/12/13,7,内部RAM中可位寻址对象的定义,先定义变量的数据类型和存储类型例如:intbdataibase;charbdataarray4;,再利用sbit进行声明例如:sbitmybit0=ibase0;sbitmybit15=ibase15;sbitary07=array07;,访问示例:ibase=-1;array2=a;,2019/12/13,8,算术运算符和算术表达式,10.2.4C51的运算符和表达式,基本算术运算符例如:+加法运算符;-减法(取负)运算符;*乘法运算符;/除法运算符;%取余数运算符。,示例:25.0/20.0=1.2525/20=125%20=5,取负运算优先级最高。,2019/12/13,9,自增、自减运算符(仅能用于变量)例如:+自增运算符;-自减运算符;,类型转换运算符自动转换,顺序:bitcharintlongfloat强制类型转换,如:(double)a,2019/12/13,10,关系运算符和关系表达式,关系运算符大于;=大于等于;=等于;!=不等于。,关系表达式关系表达式的值为逻辑值:真(1)和假(0),2019/12/13,11,逻辑运算符和逻辑表达式,逻辑运算符条件表达式;更新表达式)语句,if语句与goto语句结合,当型循环形式为:loop:if(表达式)语句gotoloop;,2019/12/13,19,直到型循环形式为:loop:语句if(表达式)gotoloop;,continue是一种循环中断语句,它并不跳出循环体;break语句只能跳出它所处的那一层循环;goto语句可以用于跳出多重循环(从内层到外层)。,注意:,2019/12/13,20,10.4C51的指针类型,p=voiddelay(void)inta=5000;while(a-)_nop_();,voidint_srv(void)interrupt0delay();if(INT0=0)P10=!P10;while(INT0=0);,voidmain()P10=0;EA=1;EX0=1;while(1);,2019/12/13,28,定时计数器编程示例,【例10-2】利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12MHz。,1、计算计数初值X:Nt/Tcy1010-3/110-610000计数器初值应为-10000。即应将-(10000/256)送入TH0中,-(10000%256)送入TL0中。,2、求T0的方式控制字TMOD:M1M0=01,GATE=0,C/T=0,可取方式控制字为01H,3、程序清单(见下页),2019/12/13,29,#includesbitP10=P10;voidtimer0(void)interrupt1P10=!P10;TH0=-(10000/256);TL0=-(10000%256);,voidmain(void)TMOD=0 x01;P10=0;TH0=-(10000/256);TL0=-(10000%256);EA=1;ET0=1;TR0=1;while(1);,2019/12/13,30,10.6.280C51扩展资源的编程,通用并行口编程示例,【例10-3】用81C55作为微型打印机与单片机间的接口电路。,TPP-40A微型打印机时序,01H-0FH打印命令;10H-1FH用户自定义命令;20H-7FH标准ASCII字符;80-FFH含汉字等特殊字符,2019/12/13,32,#include“reg51.h”#include“absacc.h”/*含有对XBYTE等绝对地址访问宏的定义*/#defineucharunsignedchar#defineCOMD8155XBYTE0 x7f00#definePA8155XBYTE0 x7f01#definePB8155XBYTE0 x7f02#definePC8155XBYTE0 x7f03sbitBUSY=P33;,2019/12/13,33,ucharcodetab17=0 xb8,0 xdf,0 xbd,0 xcc,0 x20,0 xb3,0 xf6,0 xb0,0 xe6,0 xc9,0 xe7,0 x20,0 x32,0 x30,0 x30,0 x38,0 x0a;/*高教出版社2008*/uchart1=17;,voidptr(uchard)/*打印字符函数*/PA8155=d;PC8155=0 x00;/*产生选通脉冲*/PC8155=0 x01;while(BUSY);,2019/12/13,34,voidmain(void)COMD8155=0 x0f;/*送命令字*/prt(0 x1c);/*送中文打印方式命令字高字节*/prt(0 x26);/*送中文打印方式命令字低字节*/EA=1;EX1=1;while(1);,2019/12/13,35,voidint1(void)interrupt2using1uchari;EA=0;for(i=0;it1;i+)prt(tabi);EA=1;,2019/12/13,36,A/D转换接口编程示例,【例10-4】ADC0809与单片机的接口电路如图。,2019/12/13,37,#include“reg51.h”#include“absacc.h”#defineucharunsignedchar#defineIN0XBYTE0 x7ff8sbitad_busy=P33;,2019/12/13,38,voidad0809(ucharidata*x)uchari;ucharxdata*ad_adr;ad_adr=&IN0;for(i=0;i8;i+)*ad_adr=0;/*启动转换*/i=i;/*延时等待*/i=i;while(ad_busy!=0);xi=*ad_adr;/*存转换结果*/ad_adr+;/*下一通道*/,对IN0-IN78个模拟量依次采样,存放到x数组中,2019/12/13,39,voidmain(void)staticucharidataad10;ad0809(ad);,存储种类说明:静态变量,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 语言程序设计
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文