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

    STC单片机C语言通用万能编程.docx

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

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

    STC单片机C语言通用万能编程.docx

    1、STC单片机C语言通用万能编程8051单片机C语言编程模板1.函数头文件 22.毫秒级CPU延时函数 43.定时/计数器初始化函数 54.定时/计数器1中断处理函数 65.定时/计数器0中断处理函数 76.PWM初始化函数 87.PWM0占空比设置函数 98.UART串口初始化函数 109.UART串口接收中断处理函数 1110.UART串口发送函数 1211.UART串口发送字符串函数 1312.外部中断INT初始化函数 1413.外部中断INT1中断处理程序 1514.外部中断INT0中断处理程序 1515.普通I/O口模拟PWM生成程序 1616.LCD驱动 1617.DS18B20温度

    2、传感器驱动 1918.LCM2402(1602也适用)驱动程序 2119.主函数 2520.8个独立式键盘驱动程序 2721.16个阵列式键盘驱动程序 281.函数头文件/*程序名:编写人:编写时间:20年月日硬件支持:接口说明:修改日志:NO.1- /*说明:/*/#include/通用89C51头文件(只留下实际使用的单片机所对应的头文件)#include/设定插入点#include/字符处理#include/定义错误码#include/浮点数处理#include/文件输入输出#include/参数化输入输出#include/数据流输入输出#include/定义各种数据类型最值常量#inc

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

    4、;#define代替名原名/用代替名代替原名。例:#defineLEDP1/#defineTA0x25#defineKEYP1/键盘所连接的I/O接口组定义sbitSPEAKER=P37;/扬声器连接定义sbitDQ=P25;/ds18B20sbitRS=P10;/模式位,为0输入指令,为1输入数据sbitRW=P11;/读写位,为0读,为1写sbitE=P12;/使能位#defineLcd_BusP0/数据总线unsignedchar自定义名;/定义一个0255的整数变量。unsignedint自定义名;/定义一个065535的整数变量。data 字节寻址片内RAM,片内RAM的128字节(

    5、例: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;)code ROM存储器,64K字节,从0x00到0xFFFF(例:codeunsignedchara;)2.毫秒级CPU延时函数/*函数

    6、名:毫秒级CPU延时函数调用:DELAY_MS();参数:165535(参数不可为0)返回值:无结果:占用CPU方式延时与参数数值相同的毫秒时间备注:应用于1T单片机时i600,应用于12T单片机时i125(在此预为1T单片机数值)/*/voidDELAY_MS(unsignedinta) unsignedinti; while(-a!=0) for(i=0;i600;i+); /*/-M1 M0 方式 说明0 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中的值自动写入T

    7、L1 1 3 两组8位T/C-3.定时/计数器初始化函数/*函数名:定时/计数器初始化函数调用:T_C_init();参数:无返回值:无结果:设置SFR中T/C1和(或)T/C0相关参数备注:本函数控制T/C1和T/C0,不需要使用的部分可用/屏蔽/*/voidT_C_init(void) TMOD=0x11;/高4位控制T/C1GATE,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=

    8、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位计数寄存器初始值,处理用户程序备注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致/*/voidT_C1(void)interrupt3using3/切换寄存器组到3 TH1=0x3C;/16位计数寄存器T1高8位(重新写入初值) TL1=

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

    10、/*函数名: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=

    11、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初始时为0 CR=1;/启动PCA定时器/*/7.PWM0占空比设置函数/*函数名:PWM0占空比设置函数调用:PWM0_set();参数:0x000

    12、xFF(亦可用0255)返回值:无结果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平备注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可/*/voidPWM0_set(unsignedchara) CCAP0L=a;/设置值直接写入CCAP0L CCAP0H=a;/设置值直接写入CCAP0H/*/8.UART串口初始化函数/*函数名:UART串口初始化函数调用:UART_init();参数:无返回值:无结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)备注:振荡晶体为12MHz,PC串口端设置4800,8,无,1,无/*/vo

    13、idUART_init(void) EA=1;/允许总中断(如不使用中断,可用/屏蔽) ES=1;/允许UART串口的中断 /TMOD=0x20; /定时器T/C1工作方式2 SCON=0x50; /串口工作方式1,允许串口接收(SCON=0x40时禁止串口接收) /TH1=0xF3; /定时器初值高8位设置 /TL1=0xF3; /定时器初值低8位设置 PCON=0x80; /波特率倍频(屏蔽本句波特率为2400) /TR1=1; /定时器启动/*/9.UART串口接收中断处理函数/*函数名:UART串口接收中断处理函数调用:SBUF收到数据后中断处理参数:无返回值:无结果:UART串口接收

    14、到数据时产生中断,用户对数据进行处理(并发送回去)备注:过长的处理程序会影响后面数据的接收/*/voidUART_R(void)interrupt4using1/切换寄存器组到1 unsignedcharUART_data;/定义串口接收数据变量(需要对接受到的数据进行处理时,可将其定义为全局变量) RI=0; /令接收中断标志位为0(软件清零) UART_data=SBUF; /将接收到的数据送入变量UART_data /用户函数内容(用户可使用UART_data做数据处理) /SBUF=UART_data; /将接收的数据发送回去(删除/即生效) /while(TI=0); /检查发送中断

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

    16、RT_TC();参数:需要UART串口发送的数据(8位/1字节)返回值:无结果:向串口发送一个字符串,长度不限。备注:例:UART_TC(d9887321);此函数需要#include头文件支持。/*/voidUART_TC(unsignedchar*str) while(*str!=0) UART_T(*str); *str+; *str=0;/*/中断入口说明中断入口说明interrupt0外部中断0(ROM入口地址:0x03)interrupt1定时/计数器中断0(ROM入口地址:0x0B)interrupt2外部中断1(ROM入口地址:0x13)interrupt3定时/计数器中断1(

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

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


    注意事项

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

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




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

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

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


    收起
    展开