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

標(biāo)題: 51單片機(jī)仿真-中斷出現(xiàn)問題 [打印本頁]

作者: 百二秦關(guān)終屬我    時(shí)間: 2025-4-1 11:09
標(biāo)題: 51單片機(jī)仿真-中斷出現(xiàn)問題
實(shí)驗(yàn)?zāi)繕?biāo):燈一亮一滅是1s,然后秒表計(jì)數(shù),采用兩個(gè)定時(shí)器實(shí)現(xiàn)。
問題:我覺得這個(gè)燈一亮一滅是沒問題的。燈閃和計(jì)數(shù)我用的是T0、T1定時(shí)器。但是在實(shí)驗(yàn)過程中,我發(fā)現(xiàn)這個(gè)數(shù)碼管更新不及時(shí),感覺很慢。因?yàn)?1的定時(shí)器應(yīng)該是準(zhǔn)的,但是我不知道為啥這個(gè)數(shù)碼管更新就是很慢。
主程序如下:
#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;
        }
}
仿真圖已經(jīng)呈上:主要就是單片機(jī)的P0口控制兩個(gè)74HC573鎖存器分別送段碼和位碼。然后是兩個(gè)中斷程序。

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

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

中斷.zip

356.7 KB, 下載次數(shù): 0


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

對(duì)哦,num1加完之后清0就對(duì)了。我竟然一直沒發(fā)現(xiàn)原來問題出現(xiàn)在這里,謝謝你了,佬。!




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