51单片机例函数(1)

通用头文件库#include <ctype.h>  //字符处理    #include <math.h> //定义数学函数    #include <stdio.h> //定义输入/输出函数    #include <stdlib.h> //定义杂项函数及内存分配函数    #include <string.h> //字符串处理    #include <strstrea.h>//基于数组的输入/输出    #include <intrins.h> //51基本运算(包括_nop_空函数)

sfr  [自定义名] = [SFR地址] ; //按字节定义SFR中的存储器名。例:sfr P1 = 0x90;
sbit  [自定义名] = [系统位名] ; //按位定义SFR中的存储器名。例:sbit Key = P3 ^ 1;
bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED;

#define [代替名]  [原名]  //用代替名代替原名。例:#define LCD P1 

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;)

ROM 程序存储器   RAM 数据存储器

/*********************************************************************************************
函数名:毫秒级CPU延时函数
调  用:Delay_ms (?);
参  数:1~65535(参数不可为0)
返回值:无
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125(在此预为1T单片机数值)
/*********************************************************************************************/

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中的值自动写入TL
1 1 3 两组8位T/C
-----------------------------------------------------------------------------
/*********************************************************************************************
函数名:定时/计数器初始化函数
调  用:Timer_init();
参  数:无
返回值:无
结  果:设置SFR中T/C1和(或)T/C0相关参数
备  注:本函数控制T/C1和T/C0,不需要使用的部分可用//屏蔽
/**********************************************************************************************/
void Timer_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 = 0x43; //16位计数寄存器T0高8位
//TL0 = 0x21; //16位计数寄存器T0低8位(0x4321 )
//ET0 = 1; //T/C0中断开关
//TR0 = 1; //T/C0启动开关

}

函数名:定时/计数器1中断处理函数
调  用:[T/C1溢出后中断处理]
参  数:无
返回值:无
结  果:重新写入16位计数寄存器初始值,处理用户程序
备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和Timer_init函数一致
/**********************************************************************************************/
void Timer (void)  interrupt 3   using 3{ //切换寄存器组到3
TH1 = 0x43; //16位计数寄存器T1高8位(重新写入初值)
TL1 = 0x21; //16位计数寄存器T1低8位
//User code
}
/*********************************************************************************************
函数名:定时/计数器0中断处理函数
调  用:[T/C0溢出后中断处理]
参  数:无
返回值:无
结  果:重新写入16位计数寄存器初始值,处理用户程序
备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和Timer_init函数一致
/**********************************************************************************************/
void Timer (void) interrupt 1  using 1{ //切换寄存器组到1
TH0 = 0x43; //16位计数寄存器T0高8位(重新写入初值)
TL0 = 0x21; //16位计数寄存器T0低8位
//User code
}

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值