欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于單片機中斷那些事,數碼管閃爍過快

[復制鏈接]
跳轉到指定樓層
樓主
感覺進入中斷時間沒問題,但數碼管閃爍過快,代碼如下

#include <reg52.h>

sbit BEEP = P1^5; //跟中斷無關

bit flagls = 0;
unsigned char Ledbuf;
unsigned char T0RH = 0;
unsigned char T0RL = 0;
unsigned char code LedChar[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

void ConfigTimer0(unsigned int ms)         //配置T0
{
         unsigned long tmp;

        tmp = 11059200/12;
        tmp = (tmp*ms)/1000;
        tmp = 65536 - tmp;
        T0RH = (unsigned char)(tmp >> 8);
        T0RL = (unsigned char)tmp;

        TMOD &= 0xf0;
        TMOD |= 0x01;
        TH0=T0RH;        
        TL0=T0RL;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
}

void LedScan()         //在中斷中使用,每進中斷掃描一次
{
         P0 = 0x00;
        P2 = (P2&0xe3);
        P0 = Ledbuf;
}

void main()
{
         unsigned int i = 0;
        unsigned int sec = 0;
                  
        ConfigTimer0(1);        //設置定時器1ms

        for(i = 0; i < 50000; i++)
        {
                 BEEP = ~BEEP;
        }

        while(1)
        {
                if(flagls == 1)
                {
                        flagls = 0;
                        sec++;                                  //每次進入sec加1
                        Ledbuf = LedChar[9 - sec%10];
                }
        }
}

void InterruptTimer0() interrupt 1
{
         static unsigned int tmr1s = 0;

         TH0=T0RH;                           //設置斷點看進入時間          第一次0.00266602s,第二次 0.00367405, 相差0.001s左右,進入正常
        TL0=T0RL;

        tmr1s++;
        if(tmr1s >= 1000);           //1s時改變flagls
        {
                tmr1s = 0;
                flagls = 1;
        }

        LedScan();
}

$0WG4UH3Q@C4V5M{%`2Y6AT.png (137.56 KB, 下載次數: 46)

$0WG4UH3Q@C4V5M{%`2Y6AT.png

IMG_20210726_123409.jpg (6.21 MB, 下載次數: 40)

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

使用道具 舉報

沙發
ID:123289 發表于 2021-7-26 13:30 | 只看該作者
你想達成的效果是什么?實際效又是什么呢?
回復

使用道具 舉報

板凳
ID:955347 發表于 2021-7-26 13:49 | 只看該作者
yzwzfyz 發表于 2021-7-26 13:30
你想達成的效果是什么?實際效又是什么呢?

想每秒數碼管改變一個數,實際上改變太快,肉眼分辨不了,就是數碼管每個led全亮
回復

使用道具 舉報

地板
ID:161164 發表于 2021-7-26 14:01 | 只看該作者
if(tmr1s >= 1000);           //1s時改變flagls
低級錯誤:多了個分號
回復

使用道具 舉報

5#
ID:955347 發表于 2021-7-26 14:26 | 只看該作者
lkc8210 發表于 2021-7-26 14:01
if(tmr1s >= 1000);           //1s時改變flagls
低級錯誤:多了個分號

ok,我去試試
回復

使用道具 舉報

6#
ID:955347 發表于 2021-7-26 14:28 | 只看該作者
lkc8210 發表于 2021-7-26 14:01
if(tmr1s >= 1000);           //1s時改變flagls
低級錯誤:多了個分號

ok,以解決,麻煩大家了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表