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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2314|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

利用單片機(jī)中斷按鍵計(jì)數(shù)(key)源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:983884 發(fā)表于 2021-11-23 18:24 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
定時(shí)器中斷是由單片機(jī)中的定時(shí)器溢出而申請(qǐng)的中斷。

51單片機(jī)中有兩個(gè)定時(shí)器T0和T1:

TF0:定時(shí)器T0溢出中斷請(qǐng)求。當(dāng)定時(shí)器TO產(chǎn)生溢出時(shí),TO中斷請(qǐng)求標(biāo)志TF0置1,請(qǐng)求中斷處理。

TF1:定時(shí)器T1溢出中斷請(qǐng)求。當(dāng)定時(shí)器Tl產(chǎn)生溢出時(shí),T1中斷請(qǐng)求標(biāo)志TF1置1,請(qǐng)求中斷處理。

Stm32共有11個(gè)定時(shí)器:

1.兩個(gè)高級(jí)定時(shí)器:TIM1、TIM8-------------------------APB2

2.四個(gè)通用定時(shí)器:TIM2~TIM5-------------------------APB1

3.兩個(gè)基本定時(shí)器:TIM6、TIM7-------------------------APB1

4.兩個(gè)看門(mén)狗

5.一個(gè)系統(tǒng)嘀嗒定時(shí)器(SysTick)


定時(shí)/計(jì)數(shù)器
編輯

定時(shí)/計(jì)數(shù)器T0和T1分別是由兩個(gè)8位的專用寄存器組成,即定時(shí)/計(jì)數(shù)器T0由TH0和TL0組成,T1由TH1和TL1組成。此外,其內(nèi)部還有2個(gè)8位的特殊功能寄存器TMOD和TCON,TMOD負(fù)責(zé)控制和確定T0和T1的功能和工作模式,TCON用來(lái)控制T0和T1啟動(dòng)或停止計(jì)數(shù),同時(shí)包含定時(shí)/計(jì)數(shù)器的狀態(tài)。 [1]

TF1:定時(shí)器1溢出標(biāo)志。定時(shí)/計(jì)數(shù)器溢出時(shí)由硬件置位。中斷處理時(shí)由硬件清除。或用軟件清除。

TF0:定時(shí)器0溢出標(biāo)志。定時(shí)/計(jì)數(shù)器溢出時(shí)由硬件置位。中斷處理時(shí)由硬件清除,或用軟件清除。

工作流程
編輯

定時(shí)器工作的流程可以按照這個(gè)順序(以51為例用定時(shí)器0方式一產(chǎn)生10毫秒的定時(shí))

1、確定使用哪個(gè)定時(shí)器,使用哪種方式,這一步通過(guò)TMOD設(shè)置,TMOD的低四位是設(shè)置定時(shí)器0的,高四位是用來(lái)設(shè)置定時(shí)器1的,其中的M0,M1是用來(lái)設(shè)置定時(shí)器工作在哪種方式,GATE一般用不要設(shè)置,C/T是選擇計(jì)數(shù)模式還是定時(shí)模式的,如:TMOD = 0X01,就說(shuō)明定時(shí)器0工作在方式1。

2、接下來(lái)就要設(shè)置定時(shí)的時(shí)間,用定時(shí)器定時(shí)50毫秒,可以用這種方式TH0 = (65535 - 10000) / 256,TL0 = (65535 - 10000) % 256;可以這樣理解:因?yàn)檫@是定時(shí)器的初值,也就是說(shuō)計(jì)數(shù)脈沖就是在這個(gè)數(shù)的基礎(chǔ)上向上遞增,到達(dá)65535后就溢出產(chǎn)生中斷。

3、第三步打開(kāi)中斷,使用IE寄存器,首先打開(kāi)總中斷EA = 1,這一步是所有中斷所必須的,然后打開(kāi)定時(shí)器0中斷,ET0 =1。

4、這時(shí)準(zhǔn)備工作結(jié)束,啟動(dòng)定時(shí)器,使用TCON寄存器,TR0 = 1,實(shí)現(xiàn)了一個(gè)10毫秒的定時(shí)。



代碼如下:(中斷時(shí)間根據(jù)情況改變)

#include <reg51.h>
#include <delay.h>
sbit key1 = P0^0;
sbit LED1 = P3^0;
#define DataPort P1     //宏定義,如果換接口,需要修改這里
sbit Seg_Latch = P2^2;   //段鎖存
sbit Bit_Latch = P2^3;   //位鎖存
unsigned char code Seg_Code[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //段碼
unsigned char code Bit_Code[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  //位碼
void Display(unsigned char m,unsigned char num,unsigned int n);
unsigned char i;
void main()
{

        TMOD = 0x01;

        EA = 1;        //開(kāi)中斷
        ET0 = 1;
        //因?yàn)橹挥幸粋(gè)中斷,所以IP不用設(shè)置
        TH0 = (65536 - 400) / 256;   
        TL0 = (65536 - 400) % 256;        
        TR0 = 1;   //開(kāi)啟定時(shí)器0,等待中斷的到來(lái)
        while(1)
        {               
                key1 = 1;
                if(!key1)  //按下key1
                {
                        DelayMs(50);   
                        if(!key1)   //判斷key1是否持續(xù)按下,進(jìn)行防抖測(cè)試
                        {
//                                while(!key1) //
                                {
                                        LED1 = ~LED1;

                                }
                                while(!key1);
                                LED1 = 1;
                        }
                        i++;
                        if(i > 19)
                        {
                                i = 0;
                        }

                        Display(1,2,i);                       

                }

        }
}

void Display(unsigned char m,unsigned char num,unsigned int n)   //兩位共陰極數(shù)碼管顯示數(shù)字
{
      unsigned char j,a[5];

        a[0] = n / 10;
        a[1] = n % 10;

        for(j = m-1;j < num;j++)
        {
                DataPort = 0;
                Seg_Latch = 1;  //段開(kāi)門(mén)
                Seg_Latch = 0;   //段關(guān)門(mén)

                DataPort = Bit_Code[j];  //送位碼,鎖定第m位
                Bit_Latch = 1;    //位開(kāi)門(mén)
                Bit_Latch = 0;    //位關(guān)門(mén)

                DataPort = Seg_Code[a[j]];  //送段碼
                Seg_Latch = 1;  //段開(kāi)門(mén)
                Seg_Latch = 0;   //段關(guān)門(mén)
        }

}   
void T0_ISR(void) interrupt 1
{
        unsigned char j;

        EA = 0;   //如果你不想被其他中斷打斷,屏蔽中斷
        TH0 = (65536 - 400) / 256;   //
        TL0 = (65536 - 400) % 256;        
        Display(1,2,i);


        EA = 1;
}


評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:298123 發(fā)表于 2021-11-29 13:55 | 只看該作者
不要再發(fā)這樣的程序了,誤人子弟!
回復(fù)

使用道具 舉報(bào)

板凳
ID:983884 發(fā)表于 2021-11-30 21:25 | 只看該作者
hz_dyg 發(fā)表于 2021-11-29 13:55
不要再發(fā)這樣的程序了,誤人子弟!

抱歉,抱歉
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品成人 | 久草成人网 | 成人性视频在线播放 | www久久久| 欧美中文一区 | 2一3sex性hd | 久久久久中文字幕 | 国产精品久久久久久久久久软件 | 欧美a免费 | 久久久精品视 | 欧美日韩专区 | 久久福利电影 | 精品久久香蕉国产线看观看亚洲 | 欧美久久一区 | 伊人网综合 | 亚洲美女视频 | 国产免费看 | 精品影院 | 久在线 | 丝袜一区二区三区 | 国产99久久精品一区二区永久免费 | 欧美一区二区免费 | 国产精品久久久久久久久久免费 | av一区在线观看 | 久久精品中文字幕 | 成人精品视频免费 | 国产日韩91| 国产精品久久久久久中文字 | 激情久久网 | 亚洲国产福利视频 | 日韩激情一区 | 国产亚洲精品a | 亚洲欧美中文日韩在线 | 国产精品久久久久久久久久 | 国产精品久久久久久久久免费樱桃 | 久久婷婷国产香蕉 | 日本三级网站在线观看 | 精品国产一区二区三区久久影院 | 日本理论片好看理论片 | 欧美一区免费 | aaaa日韩 |