您的位置:首页 > 其它

C51单片机 的定时器学习笔记

2014-02-18 17:35 281 查看
/*-------------------------------------------------------*/
/* -------------author: robinson_911  -------------------------*/
/* -------------date:2014年2月 -------------------------*/
/* -------------content:关于串口 定时器程序  -----------*/
//  在22.1184MHZ下,通过定时器0,每1s通过串口发送数据
/*-------------------------------------------------------*/

//#include "reg52.h"
#include "STC_NEW_8051.H"
typedef 	unsigned char	u8;
typedef 	unsigned int	u16;
typedef 	unsigned long	u32;

/*************  本地变量声明  **************/
u16 JumpAddress,a=0;
u8 xdata RxBuffer[64];
u8  ReCount=0, i;
u8  RxCounter=0;

/*************	本地哈函数声明	**************/
void push_pull();
void Serial_Initinal();
void sendchar(u8 p);
void sendstring(u8 *p);
void dmsec (u16 count);
void delay_1ms(u16 count);
void Timer0Init(void);
void Timer1Init(void);
void init() ;

void main()
{
push_pull();
Serial_Initinal();
Timer0Init();
while(1)
{
i++;
}
}

void receive(void) interrupt 4
{
if(RI)
{
RI=0;
RxBuffer[RxCounter++]=SBUF;
}
}

void Timer0(void) interrupt 1
{
TL0 = 0x9A;		//设置定时初值
TH0 = 0xA9;		//设置定时初值
a++;
if(a==1000)
{
a=0;
sendstring("delay 1s ");
}

}

/*发送一字节数据/*/
void sendchar(u8 ch)
{
SBUF=ch;
while(!TI);//
TI=0;
}
void sendstring(u8 *p)
{
while(*p)
{
sendchar(*p++);
}

}
/*实现功能:进行毫秒延时*/
void dmsec (u16 count)
{
u16 i;
while (count)
{
i =230;
while (i>0) i--;
count--;
}
}
/***1T 下大概的ms精确按时****/
void delay_1ms(u16 count)
{
u16 i,j;
for(i=0;i<8*count;i++)
{
for(j=0;j<225;j++){;}
}
}

void push_pull()
{
P0M1=0X00;  //STC12C5A60s2,端口改为强推挽
P0M0=0XFF;
P1M1=0X00;
P1M0=0XFF;
P2M1=0X00;
P2M0=0XFF;
P3M1=0X00;
P3M0=0XFF;
P4M1=0X00;
P4M0=0XFF;
}
//定时器1作为波特率发生器用
void Serial_Initinal()
{
//波特率设置
SCON = 0x5a;        //8 bit data ,no parity bit
TMOD = 0x21;        //设置定时器1为工作方式2
TH1  = TL1 = 0xfa;  //波特率9600
TR1 = 1;           //T1 start running
EA=1;
ES=1;
}

void Timer0Init(void)		//1毫秒@22.1184MHz
{

AUXR |= 0x80;		//定时器时钟1T模式
TL0 = 0x9A;		//设置定时初值
TH0 = 0xA9;		//设置定时初值
ET0=1;
TR0 = 1;		//定时器0开始计时
}


波特率和定时时间值计算,可以通过STC_ISP计算得出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: