久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9270|回復: 0
打印 上一主題 下一主題
收起左側

單片機定時器毫秒級精確定時程序與分析

[復制鏈接]
跳轉到指定樓層
樓主
一,T0使用8位自動重裝模式(最大256us)
定時周期計算:
定時器計數器自加1時間:1us=機器周期(1/12M=1/12us) 乘 12(AUXR&=0x7f; //B7=0,T0設置為12倍速,其它設置不變)
當計數器(設置為8位時)計數到255再加1溢出(TMOD&=0xf0; //xxxx 0000,T0設置置零    TMOD|=0x02; //xxxx 0010,T0設置為8位自動重裝)
溢出時間=256-初裝值(TH0=0x38; //自動初裝值)(從初裝值開始計數,到256溢出完成一次。)


1.自動重裝方式
程序如下:
/*


P1.3為PWM輸出端

5.SID 串行數據輸入端 接單片機P3.7
6.SCLK 串行時鐘輸入端 接單片機P3.6


*/


#include<stc12c5a60s2.h>//頭文件

//全局變量聲明
sbit lcd_sid=P3^7; //定義12864數據端口
sbit lcd_sclk=P3^6; //定義12864時鐘脈沖端口
sbit pwm=P1^3;//

unsigned char t0_1ms; //T0計數器

//子函數聲明
void init(); //初始化子函數
void lcd(); //lcd子函數

//主函數開始/////////////////////////////////////////////////////////////////////
void main()
{
        init(); //初始化
        while(1) //循環下面的程序
        {
                if(t0_1ms==5) //如果計數5次,5*0.2ms=1ms,執行下面的程序
                {
                        t0_1ms=0; //計數器復位
                        lcd(); //lcd顯示
                }
        }
}

//主函數結束/////////////////////////////////////////////////////////////////////

//子函數程序
void t0_200us()interrupt 1 //T0中斷函數
{
        t0_1ms++; //每0.2ms加一次
        pwm=~pwm; //
}

void init() //初始化子函數
{
        //T0初始化
        AUXR&=0x7f; //B7=0,T0設置為12倍速,其它設置不變
        TMOD&=0xf0; //xxxx 0000,T0設置置零
        TMOD|=0x02; //xxxx 0010,T0設置為8位自動重裝
        TL0=0x38; //初裝值
        TH0=0x38; //自動初裝值
        TR0=1; //T0運行
        EA=1; //
        ET0=1; //
}

void lcd(); //lcd子函數




從示波器可以看出時間的時間比計算的時間要多。

把與定時器不相關的程序全部刪除:

#include<stc12c5a60s2.h>//頭文件

//全局變量聲明
sbit lcd_sid=P3^7; //定義12864數據端口
sbit lcd_sclk=P3^6; //定義12864時鐘脈沖端口
sbit pwm=P1^3;//

unsigned char t0_1ms; //T0計數器

//子函數聲明
void init(); //初始化子函數

//主函數開始/////////////////////////////////////////////////////////////////////
void main()
{
        init(); //初始化
        while(1) //循環下面的程序
        {
                if(t0_1ms==5) //如果計數5次,5*0.2ms=1ms,執行下面的程序
                {
                        t0_1ms=0; //計數器復位
                }
        }
}

//主函數結束/////////////////////////////////////////////////////////////////////

//子函數程序
void t0_200us()interrupt 1 //T0中斷函數
{
        t0_1ms++; //每0.2ms加一次
        pwm=~pwm; //
}

void init() //初始化子函數
{
        //T0初始化
        AUXR&=0x7f; //B7=0,T0設置為12倍速,其它設置不變
        TMOD&=0xf0; //xxxx 0000,T0設置置零
        TMOD|=0x02; //xxxx 0010,T0設置為8位自動重裝
        TL0=0x38; //初裝值
        TH0=0x38; //自動初裝值
        TR0=1; //T0運行
        EA=1; //
        ET0=1; //
}







200us輸出變換一次。符合計算。
由此可知,中斷發生是由于需要保護原來正在運行的程序,處理中斷前需要先保護現場,這樣就增加了運行時間,每毫秒需要5次中斷,當需要運行的程序越多時,中斷的時間越不穩定。

下面嘗試增加中斷時間,減少中斷處理時間,看看程序對中斷時間的影響。


IMG_20181129_103814R.jpg (1.96 MB, 下載次數: 35)

IMG_20181129_103814R.jpg

IMG_20181129_104249R.jpg (2.2 MB, 下載次數: 40)

IMG_20181129_104249R.jpg

IMG_20181129_105844R.jpg (2.28 MB, 下載次數: 40)

IMG_20181129_105844R.jpg

IMG_20181129_105946R.jpg (1.66 MB, 下載次數: 44)

IMG_20181129_105946R.jpg

IMG_20181129_105950R.jpg (1.88 MB, 下載次數: 39)

IMG_20181129_105950R.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美精品一区二区 | 国产一区二区三区视频在线观看 | 久久久久久久一区 | 欧美精品久久久久久久久久 | 国产精品久久久久久婷婷天堂 | 涩涩视频在线观看 | 国产精品一级在线观看 | 亚洲精品久久久久久国产精华液 | 91精品久久久久久久久久入口 | 综合精品在线 | 久亚州在线播放 | 欧美一区二区三区在线视频 | 少妇久久久久 | 久色网| 亚洲精品乱码久久久久久久久 | 国产激情在线 | 操皮视频 | 91久久久久久久久久久久久 | 99精品电影| 伦理一区二区 | 999www视频免费观看 | 成人在线电影网站 | 亚洲 成人 av| 欧美日韩一区在线播放 | 91精品国产综合久久香蕉922 | 国产精品永久免费 | 欧美bondage紧缚视频 | 国内精品久久久久久久 | 国产高清视频一区二区 | 欧美日本在线观看 | 国产欧美日韩在线一区 | 欧美精品一区二区在线观看 | 国产精品片aa在线观看 | 99热热热| 免费看黄视频网站 | 国产福利资源 | 欧美精品一区二区三区在线播放 | 国产精品久久久久久52avav | 国产精品污www一区二区三区 | 欧美xxxx网站| 国产一区二区在线播放 |