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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

求助,練習獨立寫了個51單片機的中斷程序,但是沒有實現預期硬件上的效果

查看數: 2977 | 評論數: 8 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2024-1-31 19:25

正文摘要:

,如圖所示,我想用定時器0的方式1實現第一個二極管以200ms間隔閃爍,用定時器1的方式1實現第二個二極管以1s間隔閃爍,但是實驗結果只有第一個燈亮。而且不閃爍。誠信程序如圖,想讓大佬看看是哪里編程有問題

回復

ID:1101371 發表于 2024-2-1 10:32
懸賞解決了,黑幣怎么發啊
ID:1101371 發表于 2024-2-1 10:29
我找到問題了,我對硬件TMod的理解不對,打開兩個定時器的方式1是是0x11
ID:1110492 發表于 2024-2-1 10:29
中斷一般做定時標志,主循環讀取標記并取消標志。
ID:1064915 發表于 2024-2-1 09:09
自己能解決問題,進步更快
ID:161164 發表于 2024-1-31 22:00
找個定時器中斷的例程對比一下吧
ID:213173 發表于 2024-1-31 21:18

定時器中斷不是你這樣玩的,一個定時器能完成的任務就不要開兩個定時器。給你改了。
#include <reg52.h>

sbit led0=P2^0;
sbit led1=P2^1;

typedef unsigned char u8;
typedef unsigned int u16;

u8 num;
u8 flag;

void main()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=1;
        ET0=1;
        EA =1;
        while (1)
        {
                if(flag==1)
                {
                        flag=0;
                        num++;
                        if(num%2==0)//100ms
                        {
                                led0=~led0;
                        }
                        if(num>=10)//500ms
                        {
                                num=0;
                                led1=~led1;
                        }
                }
        }
}

void shine() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        flag=1;
}
ID:491577 發表于 2024-1-31 21:15
呵呵,樓主的中斷一點意義都沒有,num=0~19,當num=4時,led0會翻轉,但是速度太快,人眼看到的是長亮,num最大是19不會=20,所以led1不會亮。

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

Powered by 單片機教程網

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