欢迎来到天天文库
浏览记录
ID:56568234
大小:326.50 KB
页数:46页
时间:2020-06-28
《单片机的C51编程技.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机的C51编程技巧5.1C51与C 语言1、Main(){//通信初始化SCON=0x40;//串行口工作方式1,TI=0,RI=0TMOD=0x20;//定时器1工作方式2,8位自动重装式,晶振频率//11.0592MHzPCON=0;TH1=0xFD;//9600bpsTL1=0xFD;TR1=1;TI=1;printf("%f,%f",ppf,mf);//通信}2、C51的数据类型bit0,1char8-128~127unsignedchar80~256int16-32768~32767unsi
2、gned160~65535longint32-231~(231-1)unsigned320~(232-1)float32例:inta=721BCDinta=O7218inta=0xFFHex3、C51的函数inti全局变量voidfun(){inti;}4.2C语言中常用的语句(也适合于C51)①if(条件){}②if()elseif()else③switch(条件式){case:值1break;case:值2break;……..}④while(条件){动作先条件后内容}⑤do{先内容后条件}while(条件
3、)⑥for(算式1;算式2;算式3)//(赋植;条件;增量){}例1:for(i=0;i<10;i++){动作}例2:for(;;);//C语言认为合法例3:i=0;for(;i<10;i++){}4.3指针与数组char*a;charab;a=&ab;char名[][][](三维)voiddalay(unsignedintcount){unsignedinti;for(i=0;i4、{chari;for(1=0;i<10;i++){buf[i]=0;}}main(){chardat[10];demo(dat);}4.5前置处理器#define宏定义//C语言优先处理#条件编辑#define宏名字符串include宏包含例1:#definePI3.1415926#defineCSP1.0#HIBYTE(a)((unsignedchar((a))>>8))unsignedcharb;例2:b=HIBYTE(0xFF18)结果:b=0xFF18宏定义可以定义函数#defineF(x)(x)*(5、x)+2x*(x)+1例3:#include"at89x52.h"//#include"regx51.h"#include"intrins.h"#include"math.h"#include#include"STC89C51RC_RD_PLUS.h"4.6C51的存储器类型图4.1存储体结构code说的变量在程序空间data内0~7Fidata内@R0~R1;0~FF256bdata可位寻址16bitpdataR0R1间接寻址0~0xFFxdata外64K全部空间0~0xFFFF例1:u6、nsignedcharcodelable[]={1,2,3,….,100};unsignedchardatai;unsignedcharbdatastatus;sbitst_7=status^7;sbitst_6=status^6;sbitst_0=status^0;status=0;st_7=1;status=0x80;sfrpsw=0xDO;sfrP0=0x80;sbitP0_1=P0^1;unsignedcharaddress_at_0x20;inti;C51中指令的控制存储模式选择small0x00~7、0x7FHcompactintpdatai;largeintcdata4.7中断函数在C51中实现INT000x0003Time/Counter010x000BINT120x0013Time/Counter130x001BSerialport40x0023Time/Counter250x002BVoid函数名(void)interrupt中断号缓存器库例:voidTIMER0(void)interrupt1using2{}main(){ETO=1;EA=1;}几个编程实例例1:串行接口发送程序#include8、“AT89x51.h”main(){inti;SCON=0x52;//串行口工作方式1,TI=1,RI=0TMOD=0x21;//定时器1工作方式2,8位自动重装式,晶振频率11.0592MHzTH1=0xFD;//9600bpsTL1=0xFD;TR1=1;While(1){while(TI==0);等待TI=0;SBUF=0x50;for(i=0;i<50;i++);}}例2:单片机的P1.0口
4、{chari;for(1=0;i<10;i++){buf[i]=0;}}main(){chardat[10];demo(dat);}4.5前置处理器#define宏定义//C语言优先处理#条件编辑#define宏名字符串include宏包含例1:#definePI3.1415926#defineCSP1.0#HIBYTE(a)((unsignedchar((a))>>8))unsignedcharb;例2:b=HIBYTE(0xFF18)结果:b=0xFF18宏定义可以定义函数#defineF(x)(x)*(
5、x)+2x*(x)+1例3:#include"at89x52.h"//#include"regx51.h"#include"intrins.h"#include"math.h"#include#include"STC89C51RC_RD_PLUS.h"4.6C51的存储器类型图4.1存储体结构code说的变量在程序空间data内0~7Fidata内@R0~R1;0~FF256bdata可位寻址16bitpdataR0R1间接寻址0~0xFFxdata外64K全部空间0~0xFFFF例1:u
6、nsignedcharcodelable[]={1,2,3,….,100};unsignedchardatai;unsignedcharbdatastatus;sbitst_7=status^7;sbitst_6=status^6;sbitst_0=status^0;status=0;st_7=1;status=0x80;sfrpsw=0xDO;sfrP0=0x80;sbitP0_1=P0^1;unsignedcharaddress_at_0x20;inti;C51中指令的控制存储模式选择small0x00~
7、0x7FHcompactintpdatai;largeintcdata4.7中断函数在C51中实现INT000x0003Time/Counter010x000BINT120x0013Time/Counter130x001BSerialport40x0023Time/Counter250x002BVoid函数名(void)interrupt中断号缓存器库例:voidTIMER0(void)interrupt1using2{}main(){ETO=1;EA=1;}几个编程实例例1:串行接口发送程序#include
8、“AT89x51.h”main(){inti;SCON=0x52;//串行口工作方式1,TI=1,RI=0TMOD=0x21;//定时器1工作方式2,8位自动重装式,晶振频率11.0592MHzTH1=0xFD;//9600bpsTL1=0xFD;TR1=1;While(1){while(TI==0);等待TI=0;SBUF=0x50;for(i=0;i<50;i++);}}例2:单片机的P1.0口
此文档下载收益归作者所有