新闻中心

EEPW首页>嵌入式系统>设计应用> STC单片机精确延时参数测定方法

STC单片机精确延时参数测定方法

作者: 时间:2016-11-19 来源:网络 收藏
在使用STC单片机的时候,大家是不是会遇见一个问题:延时往往很难把握。当然可以使用延时函数产生波形输出到示波器观察来修改延时参数,但是没有示波器时有没有方法来确定延时参数呢。我这里自创了个办法,发到这与大家分享一下。

其方法是这样,首先设置好定时器的定时时间,在调用延时函数前打开定时器,定时器中断函数中读取出延时参数,然后通过串口将延时参数输出。具体代码如下:

本文引用地址: //m.amcfsurvey.com/article/201611/318543.htm
//程序说明:测试stc单片机延时常数,串口输出//作者:mjx//注:程序测量精度高,适用stc这种指令不固定的单片机#include "STC12C5A60S2.h"#include
          
           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=0SCON=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)
           interrupt1 using 3{ii=i; // 暂存延时函数的i和j jj=j; //TR0=0;}
          




评论


技术专区

关闭