单片机C语言编程模板

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机C语言编程模板程序名:编写人:编写时间:20年月日硬件支持:接口说明:修改日志:NO.1-/*********************************************************************************************说明:/*********************************************************************************************/#includeREG51.hREG52.hSTC11Fxx.HSTC12C2052AD.HSTC12C5A60S2.H//通用89C51头文件(只留下实际使用的单片机所对应的头文件)#includeassert.h//设定插入点#includectype.h//字符处理#includeerrno.h//定义错误码#includefloat.h//浮点数处理#includefstream.h//文件输入/输出#includeiomanip.h//参数化输入/输出#includeiostream.h//数据流输入/输出#includelimits.h//定义各种数据类型最值常量#includelocale.h//定义本地化函数#includemath.h//定义数学函数#includestdio.h//定义输入/输出函数#includestdlib.h//定义杂项函数及内存分配函数#includestring.h//字符串处理#includestrstrea.h//基于数组的输入/输出#includetime.h//定义关于时间的函数#includewchar.h//宽字符处理及输入/输出#includewctype.h//宽字符分类#includeintrins.h//51基本运算(包括_nop_空函数)sfr[自定义名]=[SFR地址];//按字节定义SFR中的存储器名。例:sfrP1=0x90;sbit[自定义名]=[系统位名];//按位定义SFR中的存储器名。例:sbitAdd_Key=P3^1;bit[自定义名];//定义一个位(位的值只能是0或1)例:bitLED;#define[代替名][原名]//用代替名代替原名。例:#defineLEDP1/#defineTA0x25#defineKEYP1//键盘所连接的I/O接口组定义sbitSPEAKER=P3^7;//扬声器连接定义sbitDQ=P2^5;//ds18B20sbitRS=P1^0;//模式位,为0输入指令,为1输入数据sbitRW=P1^1;//读写位,为0读,为1写sbitE=P1^2;//使能位#defineLcd_BusP0//数据总线unsignedchar[自定义名];//定义一个0~255的整数变量。unsignedint[自定义名];//定义一个0~65535的整数变量。data字节寻址片内RAM,片内RAM的128字节(例:dataunsignedchara;)bdata可位寻址片内RAM,16字节,从0x20到0x2F(例:bdataunsignedchara;)idata所有片内RAM,256字节,从0x00到0xFF(例:idataunsignedchara;)pdata片外RAM,256字节,从0x00到0xFF(例:pdataunsignedchara;)xdata片外RAM,64K字节,从0x00到0xFFFF(例:xdataunsignedchara;)codeROM存储器,64K字节,从0x00到0xFFFF(例:codeunsignedchara;)/*********************************************************************************************函数名:毫秒级CPU延时函数调用:DELAY_MS(?);参数:1~65535(参数不可为0)返回值:无结果:占用CPU方式延时与参数数值相同的毫秒时间备注:应用于1T单片机时i600,应用于12T单片机时i125(在此预为1T单片机数值)/*********************************************************************************************/voidDELAY_MS(unsignedinta){unsignedinti;while(--a!=0){for(i=0;i600;i++);}}/*********************************************************************************************/-----------------------------------------------------------------------------M1M0方式说明00013位T/C,由TL低5位和TH的8位组成13位计数器01116位T/C,TL和TH共16位计数器1028位T/C,TL用于计数,当TL溢出时将TH中的值自动写入TL113两组8位T/C-----------------------------------------------------------------------------/*********************************************************************************************函数名:定时/计数器初始化函数调用:T_C_init();参数:无返回值:无结果:设置SFR中T/C1和(或)T/C0相关参数备注:本函数控制T/C1和T/C0,不需要使用的部分可用//屏蔽/**********************************************************************************************/voidT_C_init(void){TMOD=0x11;//高4位控制T/C1[GATE,C/T,M1,M0,GATE,C/T,M1,M0]EA=1;//中断总开关TH1=0xFF;//16位计数寄存器T1高8位(写入初值)TL1=0xFF;//16位计数寄存器T1低8位ET1=1;//T/C1中断开关TR1=1;//T/C1启动开关//TH0=0x3C;//16位计数寄存器T0高8位//TL0=0xB0;//16位计数寄存器T0低8位(0x3CB0=50mS延时)//ET0=1;//T/C0中断开关//TR0=1;//T/C0启动开关}/**********************************************************************************************//*********************************************************************************************函数名:定时/计数器1中断处理函数调用:[T/C1溢出后中断处理]参数:无返回值:无结果:重新写入16位计数寄存器初始值,处理用户程序备注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致/**********************************************************************************************/voidT_C1(void)interrupt3using3{//切换寄存器组到3TH1=0x3C;//16位计数寄存器T1高8位(重新写入初值)TL1=0xB0;//16位计数寄存器T1低8位(0x3CB0=50mS延时)//函数内容}/**********************************************************************************************//*********************************************************************************************函数名:定时/计数器0中断处理函数调用:[T/C0溢出后中断处理]参数:无返回值:无结果:重新写入16位计数寄存器初始值,处理用户程序备注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致/**********************************************************************************************/voidT_C0(void)interrupt1using1{//切换寄存器组到1TH0=0x3C;//16位计数寄存器T0高8位(重新写入初值)TL0=0xB0;//16位计数寄存器T0低8位(0x3CB0=50mS延时)//函数内容}/**********************************************************************************************//*********************************************************************************************函数名:PWM初始化函数调用:PWM_init();参数:无返回值:无结果:将PCA初始化为PWM模式,初始占空比为0备注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可/**********************************************************************************************/voidPWM_init(void){CMOD=0x02;//设置PCA定时器CL=0x00;CH=0x00;CCAPM0=0x42;//PWM0设置PCA工作方式为PWM方式(01000010)CCAP0L=0x00;//设置PWM0初始值与CCAP0H相同CCAP0H=0x00;//PWM0初始时为0//CCAPM1=0x42;//PWM1设置PCA工作方式为PWM方式(使用时删除//)//CCAP1L=0x00;//设置PWM1初始值与CCAP0H相同//CCAP1H=0x00;//PWM1初始时为0//CCAPM2=0x42;//PWM2设置PCA工作方式为PWM方式//CCAP2L=0x00;//设置PWM2初始值与CCAP0H相同//CCAP2H=0x00;//PWM2初始时为0//CCAPM3=0x42;//PWM3设置PCA工作方式为PWM方式//CCAP3L=0x00;//设置PWM3初始值与CCAP0H相同//CCAP3H=0x00;//PWM3初始时为0CR=1;//启动PCA定时器}/**********************************************************************************************//*********************************************************************************************函数名:PWM0占空比设置函数调用:PWM0_set();参数:0x00~0xFF(亦可用0~255)返回值:无结果:设置PWM模式占

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功