您的位置 首页 FPGA

STC单片机准确延时参数测定办法

在使用STC单片机的时候,大家是不是会遇见一个问题:延时往往很难把握。当然可以使用延时函数产生波形输出到示波器观察来修改延时参数,…

 在运用STC单片机的时分,我们是不是会遇见一个问题:延时往往很难掌握。当然能够运用延时函数发生波形输出到示波器调查来修正延时参数,可是没有示波器时有没有办法来确认延时参数呢。我这儿自创了个办法,发到这与我们共享一下。

其办法是这样,首要设置好守时器的守时时刻,在调用延时函数前翻开守时器,守时器中止函数中读取出延时参数,然后经过串口将延时参数输出。详细代码如下:

//程序阐明:测验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) interrupt 1 using 3{ii=i; //  暂存延时函数的i和j jj=j; //TR0=0;}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/265964.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部