亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 51單片機仿真-中斷出現問題 [打印本頁]

作者: 百二秦關終屬我    時間: 2025-4-1 11:09
標題: 51單片機仿真-中斷出現問題
實驗目標:燈一亮一滅是1s,然后秒表計數,采用兩個定時器實現。
問題:我覺得這個燈一亮一滅是沒問題的。燈閃和計數我用的是T0、T1定時器。但是在實驗過程中,我發現這個數碼管更新不及時,感覺很慢。因為51的定時器應該是準的,但是我不知道為啥這個數碼管更新就是很慢。
主程序如下:
#include <reg51.h>
#include "Delay.h"
#include "Display.h"
#define uint unsigned int
#define uchar unsigned char
sbit led1 = P1^0;

uchar num0 = 0, num1 = 0, num = 55, shi, ge;
void main(void)
{
        shi = num / 10;
        ge = num % 10;
        display(shi, ge)
        TMOD = 0x11;
        TH1 = (65536 - 50000) / 256;
        TL1 = (65536 - 50000) % 256;
        TH0 = (65536 - 50000) / 256;
        TL0 = (65536 - 50000) % 256;
        EA = 1;
        ET1 = 1;
        TR1 = 1;
        ET0 = 1;
        TR0 = 1;
        while (1) {
                shi = num / 10;
                ge = num % 10;
        display(shi, ge);
        }
}
void T0_time() interrupt 1 {
        TH0 = (65536 - 50000) / 256;
        TL0 = (65536 - 50000) % 256;
        ++num0;
        if (num0 == 10) { //0.5s
                num0 = 0;
                led1 = ~led1;
        }
}
void T1_time() interrupt 3 {
        TH1 = (65536 - 50000) / 256;
        TL1 = (65536 - 50000) % 256; //50ms
        ++num1;
        if (num1 == 20) { //1s
                ++num;
                if (num == 60)
                        num = 0;
        }
}
仿真圖已經呈上:主要就是單片機的P0口控制兩個74HC573鎖存器分別送段碼和位碼。然后是兩個中斷程序。

Snipaste_2025-04-01_11-07-11.png (54.74 KB, 下載次數: 0)

Snipaste_2025-04-01_11-07-11.png

中斷.zip

356.7 KB, 下載次數: 0


作者: rundstedt    時間: 2025-4-1 12:03
肉眼觀察到的仿真軟件的時間并非真實時間,跟你的電腦運算速度有關,要看仿真軟件進度條里面的時間。
作者: xiaobendan001    時間: 2025-4-1 13:00
在if(num1==20)里面要加一句num1 = 0;
否則++num1;要一直循環到下次num1==20才能再次++num;
作者: 百二秦關終屬我    時間: 2025-4-1 15:53
xiaobendan001 發表于 2025-4-1 13:00
在if(num1==20)里面要加一句num1 = 0;
否則++num1;要一直循環到下次num1==20才能再次++num;

對哦,num1加完之后清0就對了。我竟然一直沒發現原來問題出現在這里,謝謝你了,佬!!!




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1