




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、8051单片机C语言编程模板 程序开始处的程序说明/*程序名: 编写人: 赛杜洋编写时间:20 年 月 日硬件支持:接口说明: 修改日志:NO.1-/*说明:/*/单片机SFR定义的头文件#include /通用89C51头文件#include /通用89C52头文件#include /STC11Fxx或STC11Lxx系列单片机头文件#include /STC12Cx052或STC12Cx052AD系列单片机头文件#include /STC12C5A60S2系列单片机头文件更多库函数头定义#include /设定插入点#include /字符处理#include /定义错误码#include
2、 /浮点数处理#include /文件输入输出#include /参数化输入输出#include /数据流输入输出#include /定义各种数据类型最值常量#include /定义本地化函数#include /定义数学函数#include /定义输入输出函数#include /定义杂项函数及内存分配函数#include /字符串处理#include /基于数组的输入输出#include /定义关于时间的函数#include /宽字符处理及输入输出#include /宽字符分类#include /51基本运算(包括_nop_空函数)常用定义声明sfr 自定义名 = SFR地址 ; /按字节定义
3、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;定义常量和变量的存放位置的
4、关键字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;)codeROM存储器,64K字节,从0x00到0xFFF
5、F(例: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)/无限循环程序/*/中断处理函数模板/*函数名:中断处理函数调 用:无参 数:无返回值:无结
6、果:备 注:/*/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 使用寄存器组
7、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单片机
8、时i600,应用于12T单片机时i125/*/void DELAY_MS (unsigned int a)unsigned int i;while( -a != 0)for(i = 0; i 600; 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
9、/C1和T/C0,不需要使用的部分可用/屏蔽/*/void T_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
10、 = 1; /T/C0启动开关/*/*函数名:定时/计数器1中断处理函数调 用:T/C1溢出后中断处理参 数:无返回值:无结 果:重新写入16位计数寄存器初始值,处理用户程序备 注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致/*/void T_C1 (void) interrupt 3 using 3 /切换寄存器组到3TH1 = 0x3C; /16位计数寄存器T1高8位(重新写入初值)TL1 = 0xB0; /16位计数寄存器T1低8位(0x3CB0 = 50mS延时)/函数内容/*/*函数名:定时/计数器0中断处理函数调 用:T/C0溢出后中断处理参
11、数:无返回值:无结 果:重新写入16位计数寄存器初始值,处理用户程序备 注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致/*/void T_C0 (void) interrupt 1 using 1 /切换寄存器组到1TH0 = 0x3C; /16位计数寄存器T0高8位(重新写入初值)TL0 = 0xB0; /16位计数寄存器T0低8位(0x3CB0 = 50mS延时)/函数内容/*/外部中断INT函数/*函数名:外部中断INT初始化函数调 用:INT_init();参 数:无返回值:无结 果:启动外部中断INT1、INT0中断,设置中断方式备 注:/*/v
12、oid 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 2 using 2 /切换寄存器组到2/用户函数内容/*/*函数名:外部中断INT0中断处理程序调 用:外部引脚INT0中断处理参 数:无返回值:无结 果:用户处理外部
13、中断信号备 注:/*/void INT_0 (void) interrupt 0 using 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工作方式2SCON = 0x
14、50;/串口工作方式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; /允许总中断(如不使用中
15、断,可用/屏蔽)ES = 1; /允许UART串口的中断TMOD = 0x20;/定时器T/C1工作方式2SCON = 0x50;/串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)TH1 = 0xFD;/定时器初值高8位设置TL1 = 0xFD;/定时器初值低8位设置PCON = 0x80;/波特率倍频(屏蔽本句波特率为9600)TR1 = 1;/定时器启动 /*/*函数名:UART串口接收中断处理函数调 用:SBUF收到数据后中断处理参 数:无返回值:无结 果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备 注:过长的处理程序会影响后面数据的接收/
16、*/void UART_R (void) interrupt 4 using 1 /切换寄存器组到1unsigned 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年教练员脱岗培训考试题及答案
- 2024石油石化职业技能鉴定考试题库试题带答案详解(巩固)
- 2023年江苏省常熟市北师大版7年级数学上册期中试题【考点提分】附答案详解
- 中国邮政2025湖北省秋招系统维护岗位面试模拟题及答案
- 2023年度护士资格证试题预测试卷含完整答案详解【名师系列】
- 2024年自考专业(计算机应用)能力检测试卷及参考答案详解【完整版】
- 语言心理学考试题及答案
- 2025年产科试题及答案大全
- 银川市烟草公司2025秋招品牌推广岗位高频笔试题库含答案
- 员工培训体系优化研究
- 冯友兰-人生的境界课件
- 传热学全套PPT完整教学课件
- 部编版六年级道德与法治上册第5课《国家机构有哪些》优秀课件
- 高中心理健康教育北师大版高二全册第6课《温故知新》省级名师优质课教案比赛获奖教案示范课教案公开课教案
- 瑞美检验医生工作站操作手册
- 欧美电影文化(上海工程技术大学)【智慧树知到】网课章节答案
- 双人心肺复苏
- 全过程工程咨询服务大纲
- T-GDPA 3-2021 奥利司他胶囊质量标准
- GB/T 42061-2022医疗器械质量管理体系用于法规的要求
评论
0/150
提交评论