在使用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; //0101,0000 8位可变波特率,无奇偶校验位
TMOD|=0x20; //0011,0001 设置顶时器1为8位自动重装计数器
AUXR=0x00; //设置定时器1工作在1T模式下
TH1=0xfd; //设置定时器1自动重装数
TL1=0xfd;
TR1=1; //开定时器1
// ES=1; //允许串口1中断
EA=1; //开总中断
}
void main()
{
TMOD=0x01;//T0定时器
TH0 = 0xdC; //11.0592MHz--10ms 设置不同的时间,可以测试stc单片机内部延时参数
TL0 = 0x00;
ET0 = 1;
EA=1;
Uart1_init();//初始化uart1,波特率9600,其他默认
TR0 = 1;//开启定时
delay(100);//延时
Uart1_Send(0x30+jj/10000);
Uart1_Send(0x30+(jj%10000)/1000);
Uart1_Send(0x30+(jj%1000)/100);
Uart1_Send(0x30+(jj%100)/10);
Uart1_Send(0x30+jj%10);
Uart1_Send(0x2e);
Uart1_Send(0x30+ii/10000);
Uart1_Send(0x30+(ii%10000)/1000);
Uart1_Send(0x30+(ii%1000)/100);
Uart1_Send(0x30+(ii%100)/10);
Uart1_Send(0x30+ii%10);
while(1);
}
void Timer0(void) interrupt 1 using 3
{
ii=i; // 暂存延时函数的i和j
jj=j; //
TR0=0;
}
分享到:
相关推荐
关于单片机C语言的精确延时,网上很多都是大约给出延时值没有准确那值是多少,也就没有达到精确高的要求,而本函数克服了以上缺点,能够精确计数出要延时值且精确达到1us,本举例所用CPU为STC12C5412系列12倍速的单片机,...
本程序用于测试stc单片机C语言下延时时间,将测试的延时参数通过串口输出。程序可以测试如stc这类指令不固定的单片机的延时。代码C语言。 注:测试比较准,多次试验,每次输出值相差1
STC单片机不同晶振时1MS精确延时程序
关于单片机C语言的精确延时,网上很多都是大约给出延时值没有准确那值是多少,也就没有达到精确高的要求,而本函数克服了以上缺点,能够精确计数出要延时值且精确达到1us,本举例所用CPU为STC12C5412AD系列单片机12M的...
我在STC12C5410上写的一个很简单的延时程序,希望对刚学习STC的人工程帅有点帮助
STC毫秒级和微秒级延时函数和对应代码分析,带计算的excel模板,可以根据自己的晶振频率修改参数获得更精确定时。计算方法基本和示波器显示一致。
次代码是针对STC8系列的单片机的延时函数,使用 此代码可以直接添加调用,程序自动获取内部系统时 钟后初始化延时函数。只要是ISP软件默认的时钟频 率都可以应用(特殊频率除外) 该代码为初版,还存在很多缺陷,请...
本文档主要针对STC12系列单片机的调试延时的方法做简介
stc单片机软复位到isp引导区因学习需要, 本人从网上整理了一些 STC 单片机不断电程序下载的方法, 拿出来分享一下。
各种STC系列单片机的详细资料,主要介绍了各种STC单片机的内部构成及参数
STC 单片机包 STC单片机开发包 STC单片机 PACK STC单片机各系列 单片机开发库 STC 51 52 等 STC89 等
// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟. // 返回: none. // 版本: VER1.0 // 日期: 2013-4-1 // 备注: //======================================================================== void ...
详细说明STC单片机的中文手册,为了更好的学习STC单片机提供详细资料说明
基于STC单片机串口接收发送程序/**************************************************************************** * 程序名称:STC89C52RC单片机串口发送接收程序 * 实验条件:11.0592的晶振频率
本文主要讲了一下关于stc单片机io口模式设置方法,希望对你的学习有所帮助。
stc单片机.pdf stc单片机.pdf stc单片机.pdf
STC单片机开发助手软件延时模块的设计.pdf
本文即介绍此情况下的ISP(In-System-Programming)程序设计方法,以及在SST和STC单片机上的具体实现.。
对于用stc单片机的朋友 冷启动烧写很麻烦 这个方法就可以解决不用通过冷启动就能烧写 很不错的