




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8051单片机C语言编程模板 单片机SFR定义的头文件#include /通用89C51头文件#include /通用89C52头文件#include /STC11Fxx或STC11Lxx系列单片机头文件#include /STC12Cx052或STC12Cx052AD系列单片机头文件#include /STC12C5A60S2系列单片机头文件更多库函数头定义#include /设定插入点#include /字符处理#include /定义错误码#include /浮点数处理#include /文件输入输出#include /参数化输入输出#include /数据流输入输出#include /定义各种数据类型最值常量#include /定义本地化函数#include /定义数学函数#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 LED;#define 代替名原名/用代替名代替原名。例:#define LED P1 / #define TA 0x25unsigned char 自定义名 ; /定义一个0255的整数变量。例:unsigned char a;unsigned int 自定义名 ; /定义一个065535的整数变量。例:unsigned int a;定义常量和变量的存放位置的关键字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;)code ROM存储器,64K字节,从0x00到0xFFFF(例:code unsigned char a;)选择、循环语句if(1)/为真时语句else/否则时语句-while(1)/为真时内容-do/先执行内容while(1);switch (a) case 0x01: /为真时语句 break; case 0x02: /为真时语句 break; default: /冗余语句 break;-for(;)/循环语句-主函数模板/函数名:主函数调用:无参数:无返回值:无结果:程序开始处,无限循环备注:/*/void main (void) /初始程序 while(1) /无限循环程序 /*/中断处理函数模板/*函数名:中断处理函数调用:无参数:无返回值:无结果:备注:/*/void name (void) interrupt 1 using 1 /处理内容/*/中断入口说明interrupt 0外部中断0(ROM入口地址:0x03)interrupt 1定时/计数器中断0(ROM入口地址:0x0B)interrupt 2外部中断1(ROM入口地址:0x13)interrupt 3定时/计数器中断1(ROM入口地址:0x1B)interrupt 4 UART串口中断(ROM入口地址:0x23)(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)using 0使用寄存器组0using 1使用寄存器组1using 2使用寄存器组2using 3使用寄存器组3普通函数框架/*函数名:调用:参数:无返回值:无结果:备注:/*/void name (void)/函数内容/*/*函数名:调用:参数:065535 / 0255返回值:065535 / 0255结果:备注:/*/unsigned int name (unsigned char a,unsigned int b)/函数内容return a; /返回值/*/延时函数/*函数名:毫秒级CPU延时函数调用:DELAY_MS (?);参数:165535(参数不可为0)返回值:无结果:占用CPU方式延时与参数数值相同的毫秒时间备注:应用于1T单片机时i600,应用于12T单片机时i125/*/void DELAY_MS (unsigned int a) unsigned int i; while( -a != 0) for(i = 0; i 600; 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中的值自动写入TL1 1 3 两组8位T/C-/*函数名:定时/计数器初始化函数调用: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, 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函数一致/*/void T_C1 (void) interrupt 3using 3 /切换寄存器组到3 TH1 = 0x3C; /16位计数寄存器T1高8位(重新写入初值) TL1 = 0xB0; /16位计数寄存器T1低8位(0x3CB0 = 50mS延时) /函数内容/*/*函数名:定时/计数器0中断处理函数调用:T/C0溢出后中断处理参数:无返回值:无结果:重新写入16位计数寄存器初始值,处理用户程序备注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致/*/void T_C0 (void) interrupt 1using 1 /切换寄存器组到1 TH0 = 0x3C; /16位计数寄存器T0高8位(重新写入初值) TL0 = 0xB0; /16位计数寄存器T0低8位(0x3CB0 = 50mS延时) /函数内容/*/外部中断INT函数/*函数名:外部中断INT初始化函数调用:INT_init();参数:无返回值:无结果:启动外部中断INT1、INT0中断,设置中断方式备注:/*/void INT_init (void) EA = 1; /中断总开关 EX1 = 1; /允许外部中断1中断 EX0 = 1; /允许外部中断0中断 IT1 = 1; /1:下沿触发0:低电平触发 IT0 = 1; /1:下沿触发0:低电平触发/*/*函数名:外部中断INT1中断处理程序调用:外部引脚INT1中断处理参数:无返回值:无结果:用户处理外部中断信号备注:/*/void INT_1 (void) interrupt 2using 2 /切换寄存器组到2 /用户函数内容 /*/*函数名:外部中断INT0中断处理程序调用:外部引脚INT0中断处理参数:无返回值:无结果:用户处理外部中断信号备注:/*/void INT_0 (void) interrupt 0using 2 /切换寄存器组到2 /用户函数内容 /*/UART串口函数/*函数名:UART串口初始化函数调用:UART_init();参数:无返回值:无结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)备注:振荡晶体为12MHz,PC串口端设置 4800,8,无,1,无/*/void UART_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; /定时器启动 /*/*函数名:UART串口初始化函数调用:UART_init();参数:无返回值:无结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)备注:振荡晶体为11.0592MHz,PC串口端设置 19200,8,无,1,无/*/void UART_init (void) EA = 1; /允许总中断(如不使用中断,可用/屏蔽) ES = 1; /允许UART串口的中断 TMOD = 0x20; /定时器T/C1工作方式2 SCON = 0x50; /串口工作方式1,允许串口接收(SCON = 0x40时禁止串口接收) TH1 = 0xFD; /定时器初值高8位设置 TL1 = 0xFD; /定时器初值低8位设置 PCON = 0x80; /波特率倍频(屏蔽本句波特率为9600) TR1 = 1; /定时器启动 /*/*函数名:UART串口接收中断处理函数调用:SBUF收到数据后中断处理参数:无返回值:无结果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备注:过长的处理程序会影响后面数据的接收/*/void UART_R (void) interrupt 4using 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(软件清零) /*/*函数名:UART串口接收CPU查寻语句(非函数体)调用:将下面内容放入主程序参数:无返回值:无结果:循环查寻接收标志位RI,如有收到数据则进入if (RI = 1)备注:/*/unsigned char UART_data; /定义串口接收数据变量if (RI = 1) /接收中断标志位为1时 UART_data = SBUF; /接收数据SBUF为单片机的接收发送缓冲寄存器 RI = 0; /令接收中断标志位为0(软件清零) /用户函数内容(用户可使用UART_data做数据处理) /SBUF = UART_data; /将接收的数据发送回去(删除/即生效) /while(TI = 0); /检查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 在线内容合作协议书
- 多渠道零售店合作协议书
- 业务主管年度工作总结
- 企业采购人员年终总结
- 2025年数字货币与金融监管的平衡艺术与制度创新报告
- 品牌营销合作协议书大纲说明及
- 2025年度不动产抵押与保证担保合同细则
- 2025年新能源行业安全生产标准化与微电网技术创新发展报告001
- 新能源行业绿色物流碳减排2025年技术创新与政策支持报告
- 新能源企业2025年国际化经营策略与新能源产业前景报告
- 一年级上册语文晨读课件
- 高职院校教师职业发展规划指南
- 2025重庆市专业应急救援总队应急救援人员招聘28人考试参考题库及答案解析
- 黑龙江省龙东地区2025届中考数学试卷(含解析)
- 2025-2026学年人教版(2024)小学美术二年级上册(全册)教学设计(附目录P144)
- 2025高考地理试题分类汇编:地球上的水含解析
- 2026届高考作文写作素材:《感动中国》2024年度十大人物素材及其运用
- GB/T 28121-2011非热封型茶叶滤纸
- 2023年廊坊市投资控股集团有限公司招聘笔试模拟试题及答案解析
- 苹果栽培学完整版课件
- 湿性愈合和新型敷料选择课件
评论
0/150
提交评论