51单片机函数总结

延迟0.1m秒
void delay(unsigned char z)
{
uchar a,b;
for(a=0;afor(b=0;b<110;b++);
}


#include<12c5a.h>
#include
#define uchar unsigned char
#define unit unsigned int //char最大是255



定时器函数如下
***************************************************************************
定时器0
*******************************


void Time0_Init(void)
{
TMOD=0x00; //GATE C/^T M1 M0 GATE C/^T M1 M0
TH0=0xE3;
TL0=0x06; //方式0, 13位计数器
ET0=1; //允许中断
EA=1; //总中断
TF0=0; //中断标志位清零
TR0=1; //启动
}
定时器函数如下
void Time0_Int() interrupt 1
{
TH0=0xE3;
TL0=0x06; //方式0, 1毫秒
Count++;
}

*******************************************


void Time0_Init(void)
{
TMOD=0x01; //模式1 16位
TH0=0x4C; //GATE C/^T M1 M0 GATE C/^T M1 M0
TL0=0x00; //方式1, 1毫秒
ET0=1;
EA=1;
TF0=0; //中断标志位清零
TR0=1;
}
定时器函数如下
void Time0_Int() interrupt 1
{
TH0=0x4C;
TL0=0x00; //方式1, 1毫秒
Count++;
}

**********************************************
void Time0_Init(void)
{
TMOD=0x02; //模式2,自动重装 高8位向上装入
TH0=0xA4;
TL0=0xA4; //方式2, 0.1毫秒
ET0=1;
EA=1;
TF0=0; //中断标志位清零
TR0=1;
}
void Time0_Int() interrupt 1
{
//方式2(不用进行初始化), 0.1毫秒
Count++;
}

**********************************************
void Time0_Init(void) //方式3采用两个定时器,速度比较快
{
TMOD=0x03;
TH0=0xA4;
TL0=0xA4; //方式3, 1毫秒
ET0=1;
ET1=1;
EA=1;
TR0=1;
TR1=1;
}
定时器函数如下
}
void Time1_Int() interrupt 1
{
TH0=0xA4;
Count++;
}
****************************************
定时器1(没有方式3)
****************************************
void Time0_Init(void)
{
TMOD=0x10;
TH1=0x4C;
TL1=0x00; //方式1, 50毫秒
ET1=1;
EA=1;
TR1=1;
}
定时器函数如下
void Time0_Int() interrupt 3
{
TH1=0x4C;
TL1=0x00; //方式1, 50毫秒
Count++;
}
**************************************************************************
中断控制
中断0
*********
EA=1;
IE0=0; //中断请求标志位 清零
IT0=O; //0:低电平触发; 1:下降沿
EX0=1; //外部中断0允许位

void outinter() interrupt 0
{

}
******
中断1
********
EA=1;
IE1=0; //中断请求标志位 清零
IT1=O; //0:低电平触发; 1:下降沿触发
EX1=1; //外部中断0允许位

void outinter() interrupt 2
{

}
**************************************************************************
串口控制
……………………
SCON = 0x50;
ES = 1 ; //串口中断允许位

void i

nterrupt_uart() interrupt 4
{
if(TI)
{
TI = 0;
REN = 1;
}
if(RI)
{
RI = 0;
REN = 0;

}
}

******************************
中断0 外部中断0 * *
中断1 定时器1中断 * *
中断2 外部中断1 * *
中断3定时器2中断 * *
中断4 串口中断 * *
******************************
中断优先级

IP : 00 00 00 XX5 XX4 XX3 XX2 XX1
0 0 0 串口 定1 外1 定0 外0
PS PT1 PX1 PT0 PX0
顺序:位1最高;同时出现:从右向左逐次降低
***************************************************
数码管显示

低电平有效
code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

******************************
高电平有效
code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

相关文档
最新文档