在使用STC单片机的时候,大家是不是会遇见一个问题:延时往往很难把握。当然可以使用延时函数产生波形输出到示波器观察来修改延时参数,但是没有示波器时有没有方法来确定延时参数呢。我这里自创了个办法,发到这与大家分享一下。 其方法是这样,首先设置好定时器的定时时间,在调用延时函数前打开定时器,定时器中断函数中读取出延时参数,然后通过串口将延时参数输出。具体代码如下:
//程序说明:测试stc单片机延时常数,串口输出
//作者:mjx
//注:程序测量精度高,适用stc这种指令不固定的单片机
#include "STC12C5A60S2.h"
#include <intrins.h>
int i,j,ii,jj;//ii,jj作为定时器定时结束时暂存数,用于延时结束后串口输出
void Uart1_Send(unsigned char Data) //向控制器发送数据
{
ES=0;
TI=0;
SBUF=Data;
while(TI==0);
TI=0;
ES=1;
}
//延时函数
void delay(int k)
{
for(i = 0; i < k; i++)
{
for(j = 0; j < 30000; j++)
{
_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
}
void Uart1_init(void) // 使用定时器1作为波特率发生器
{
PCON=0x00; //SMOD=0
SCON=0x50;