欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    51STC单片机C语言通用万能编程模板解析.docx

    • 资源ID:5612598       资源大小:23.36KB        全文页数:32页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51STC单片机C语言通用万能编程模板解析.docx

    1、51STC单片机C语言通用万能编程模板解析8051单片机C语言编程模板 1.函数头文件/*程序名: 编写人: 编写时间:20 年 月 日硬件支持:接口说明:修改日志:NO.1- /*说明:/*/#include /通用89C51头文件(只留下实际使用的单片机所对应的头文件)#include /设定插入点#include /字符处理#include /定义错误码#include /浮点数处理#include /文件输入输出#include /参数化输入输出#include /数据流输入输出#include /定义各种数据类型最值常量#include /定义本地化函数#include /定义数学函

    2、数#include /定义输入输出函数#include /定义杂项函数及内存分配函数#include /字符串处理#include /基于数组的输入输出#include /定义关于时间的函数#include /宽字符处理及输入输出#include /宽字符分类#include /51基本运算(包括_nop_空函数)sfr 自定义名 = SFR地址 ; /按字节定义SFR中的存储器名。例:sfr P1 = 0x90;sbit 自定义名 = 系统位名 ; /按位定义SFR中的存储器名。例:sbit Add_Key = P3 1;bit 自定义名 ; /定义一个位(位的值只能是0或1)例:bit L

    3、ED;#define 代替名 原名 /用代替名代替原名。例:#define LED P1 / #define TA 0x25#define KEY P1 /键盘所连接的I/O接口组定义sbit SPEAKER = P37; /扬声器连接定义sbit DQ = P2 5; /ds18B20sbit RS = P10; /模式位,为0输入指令,为1输入数据sbit RW = P11; /读写位,为0读,为1写sbit E = P12; /使能位#define Lcd_Bus P0 /数据总线unsigned char 自定义名 ; /定义一个0255的整数变量。unsigned int 自定义名

    4、; /定义一个065535的整数变量。data 字节寻址片内RAM,片内RAM的128字节 (例:data unsigned char a;)bdata 可位寻址片内RAM,16字节,从0x20到0x2F (例:bdata unsigned char a;)idata 所有片内RAM,256字节,从0x00到0xFF (例:idata unsigned char a;)pdata 片外RAM,256字节,从0x00到0xFF (例:pdata unsigned char a;)xdata 片外RAM,64K字节,从0x00到0xFFFF (例:xdata unsigned char a;)co

    5、de ROM存储器,64K字节,从0x00到0xFFFF (例:code unsigned char a;)2.毫秒级CPU延时函数/*函数名:毫秒级CPU延时函数调 用:DELAY_MS (?);参 数:165535(参数不可为0)返回值:无结 果:占用CPU方式延时与参数数值相同的毫秒时间备 注:应用于1T单片机时i600,应用于12T单片机时i125(在此预为1T单片机数值)/*/void DELAY_MS ( unsigned int a ) unsigned int i; while ( -a != 0) for(i = 0; i 600; i+); /*/-M1 M0 方式 说明0

    6、 0 0 13位T/C,由TL低5位和TH的8位组成13位计数器0 1 1 16位T/C,TL和TH共16位计数器1 0 2 8位T/C,TL用于计数,当TL溢出时将TH中的值自动写入TL1 1 3 两组8位T/C-3.定时/计数器初始化函数/*函数名:定时/计数器初始化函数调 用:T_C_init();参 数:无返回值:无结 果:设置SFR中T/C1和(或)T/C0相关参数备 注:本函数控制T/C1和T/C0,不需要使用的部分可用/屏蔽/*/void T_C_init (void) TMOD = 0x11; /高4位控制T/C1 GATE,C/T,M1,M0,GATE,C/T,M1,M0 E

    7、A = 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启动开关/*/4.定时/计数器1中断处理函数/*函数名:定时/计数器1中断处理函数调 用:T/C1溢出后中断处理参 数:无返回值:无结 果:重新写入16位计数寄

    8、存器初始值,处理用户程序备 注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致/*/void T_C1 (void) interrupt 3 using 3 /切换寄存器组到3 TH1 = 0x3C; /16位计数寄存器T1高8位(重新写入初值) TL1 = 0xB0; /16位计数寄存器T1低8位(0x3CB0 = 50mS延时) /函数内容/*/5.定时/计数器0中断处理函数/*函数名:定时/计数器0中断处理函数调 用:T/C0溢出后中断处理参 数:无返回值:无结 果:重新写入16位计数寄存器初始值,处理用户程序备 注:必须允许中断并启动T/C本函数方可有

    9、效,重新写入初值需和T_C_init函数一致/*/void T_C0 (void) interrupt 1 using 1 /切换寄存器组到1 TH0 = 0x3C; /16位计数寄存器T0高8位(重新写入初值) TL0 = 0xB0; /16位计数寄存器T0低8位(0x3CB0 = 50mS延时) /函数内容/*/6.PWM初始化函数/*函数名:PWM初始化函数调 用:PWM_init();参 数:无返回值:无结 果:将PCA初始化为PWM模式,初始占空比为0备 注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可/*/void PWM_init (void)CMOD=0x02;

    10、/设置PCA定时器 CL=0x00; CH=0x00; CCAPM0=0x42; /PWM0设置PCA工作方式为PWM方式(0100 0010) 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

    11、相同 /CCAP2H=0x00; / PWM2初始时为0 /CCAPM3=0x42; /PWM3设置PCA工作方式为PWM方式 /CCAP3L=0x00; /设置PWM3初始值与CCAP0H相同 /CCAP3H=0x00; / PWM3初始时为0 CR=1; /启动PCA定时器/*/7.PWM0占空比设置函数/*函数名:PWM0占空比设置函数调 用:PWM0_set();参 数:0x000xFF(亦可用0255)返回值:无结 果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平备 注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可/*/void PWM0_

    12、set (unsigned char a) CCAP0L= a; /设置值直接写入CCAP0L CCAP0H= a; /设置值直接写入CCAP0H/*/8.UART串口初始化函数/*函数名:UART串口初始化函数调 用:UART_init();参 数:无返回值:无结 果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)备 注:振荡晶体为12MHz,PC串口端设置 4800,8,无,1,无 /*/void UART_init (void) EA = 1; /允许总中断(如不使用中断,可用/屏蔽) ES = 1; /允许UART串口的中断 TMOD = 0x20; /定时器T

    13、/C1工作方式2 SCON = 0x50; /串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; /定时器初值高8位设置 TL1 = 0xF3; /定时器初值低8位设置 PCON = 0x80; /波特率倍频(屏蔽本句波特率为2400) TR1 = 1; /定时器启动 /*/9.UART串口接收中断处理函数/*函数名:UART串口接收中断处理函数调 用:SBUF收到数据后中断处理参 数:无返回值:无结 果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备 注:过长的处理程序会影响后面数据的接收/*/void UART_R (voi

    14、d) interrupt 4 using 1 /切换寄存器组到1 unsigned char UART_data; /定义串口接收数据变量 RI = 0; /令接收中断标志位为0(软件清零) UART_data = SBUF; /将接收到的数据送入变量 UART_data /用户函数内容(用户可使用UART_data做数据处理) /SBUF = UART_data; /将接收的数据发送回去(删除/即生效) /while(TI = 0); /检查发送中断标志位 /TI = 0; /令发送中断标志位为0(软件清零) /*/10.UART串口发送函数/*函数名:UART串口发送函数调 用:UART_

    15、T (?);参 数:需要UART串口发送的数据(8位/1字节)返回值:无 结 果:将参数中的数据发送给UART串口,确认发送完成后退出备 注:/*/void UART_T (unsigned char UART_data) /定义串口发送数据变量 SBUF = UART_data; /将接收的数据发送回去 while(TI = 0); /检查发送中断标志位 TI = 0; /令发送中断标志位为0(软件清零)/*/11.UART串口发送字符串函数/*函数名:UART串口发送字符串函数调 用:UART_TC (?);参 数:需要UART串口发送的数据(8位/1字节)返回值:无 结 果:向串口发送一

    16、个字符串,长度不限。备 注:例:UART_TC(d9887321); 此函数需要#include 头文件支持。/*/void UART_TC (unsigned char *str) while(*str != 0) UART_T(*str); *str+; *str = 0;/*/中断入口说明中断入口说明interrupt 0 外部中断0(ROM入口地址:0x03)interrupt 1 定时/计数器中断0(ROM入口地址:0x0B)interrupt 2 外部中断1(ROM入口地址:0x13)interrupt 3 定时/计数器中断1(ROM入口地址:0x1B)interrupt 4 UA

    17、RT串口中断(ROM入口地址:0x23)(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)using 0 使用寄存器组0using 1 使用寄存器组1using 2 使用寄存器组2using 3 使用寄存器组312.外部中断INT初始化函数/*函数名:外部中断INT初始化函数调 用:INT_init();参 数:无返回值:无结 果:启动外部中断INT1、INT0中断,设置中断方式备 注:/*/void INT_init (void) EA = 1; /中断总开关 EX1 = 1; /允许外部中断1中断 EX0 = 1; /允许外部中断0中断 IT1 = 1; /1:下沿触发 0:低电

    18、平触发 IT0 = 1; /1:下沿触发 0:低电平触发/*/13.外部中断INT1中断处理程序/*函数名:外部中断INT1中断处理程序调 用:外部引脚INT1中断处理参 数:无返回值:无结 果:用户处理外部中断信号备 注:/*/void INT_1 (void) interrupt 2 using 2 /切换寄存器组到2 /用户函数内容 /*/14.外部中断INT0中断处理程序/*函数名:外部中断INT0中断处理程序调 用:外部引脚INT0中断处理参 数:无返回值:无结 果:用户处理外部中断信号备 注:/*/void INT_0 (void) interrupt 0 using 2 /切换寄存器组到2 /用户函数内容 /*/15.普通I/O口模拟PWM生成程序/*


    注意事项

    本文(51STC单片机C语言通用万能编程模板解析.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开