新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STC單片機精確延時參數測定方法

        STC單片機精確延時參數測定方法

        作者: 時間:2016-11-19 來源:網絡 收藏
         在使用STC單片機的時候,大家是不是會遇見一個問題:延時往往很難把握。當然可以使用延時函數產生波形輸出到示波器觀察來修改延時參數,但是沒有示波器時有沒有方法來確定延時參數呢。我這里自創了個辦法,發到這與大家分享一下。

        其方法是這樣,首先設置好定時器的定時時間,在調用延時函數前打開定時器,定時器中斷函數中讀取出延時參數,然后通過串口將延時參數輸出。具體代碼如下:

        本文引用地址:http://www.104case.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) interrupt 1 using 3{ii=i; //  暫存延時函數的i和j jj=j; //TR0=0;}




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 故城县| 清水河县| 景洪市| 桦甸市| 孝昌县| 治多县| 上栗县| 迁安市| 宽城| 吉木萨尔县| 当涂县| 信阳市| 武宣县| 青州市| 滨州市| 汤阴县| 扬州市| 道真| 南华县| 双桥区| 繁昌县| 镶黄旗| 双柏县| 池州市| 浪卡子县| 株洲市| 阿合奇县| 峡江县| 拉萨市| 汉阴县| 友谊县| 韩城市| 张家口市| 孟州市| 金沙县| 石嘴山市| 霸州市| 磐安县| 平乐县| 屯昌县| 瑞丽市|