找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2285|回復: 6
收起左側

關于單片機中斷里閃燈的代碼

[復制鏈接]
ID:777834 發(fā)表于 2021-4-4 01:49 來自手機 | 顯示全部樓層 |閱讀模式
大家好呀,是這樣的,如圖中,我寫P1=0xfe能一個燈閃爍,但寫P1<<=1就不能1個燈閃爍了,而是全部燈閃爍,這是為什么呢?
IMG_20210404_013754.jpg
回復

使用道具 舉報

ID:213173 發(fā)表于 2021-4-4 06:42 | 顯示全部樓層
void InterruptTimer0(void) interrupt 1
{
        static unsigned int  sec;
        static unsigned char a=0xfe,b=0;
        TH0=(65536-1000)/256;
        TL0=(65536-1000)%256;
        sec++;
        if(sec%100==0)//閃爍周期0.2秒
        {
                b=~b;
                P1=a|b;
        }
        if(sec>=1000)//移動周期1秒
        {
                sec=0;
                a=a<<1|1;
                if(a==0xff)
                        a=0xfe;
        }
}
回復

使用道具 舉報

ID:684049 發(fā)表于 2021-4-4 07:19 | 顯示全部樓層
你的sec能加上數嗎?
回復

使用道具 舉報

ID:777834 發(fā)表于 2021-4-4 11:08 來自手機 | 顯示全部樓層
wulin 發(fā)表于 2021-4-4 06:42
void InterruptTimer0(void) interrupt 1
{
        static unsigned int  sec;

多謝,每次都能看到你幫我解決問題~
我圖中的程序這樣寫為何全閃呢,
回復

使用道具 舉報

ID:894154 發(fā)表于 2021-4-5 08:59 | 顯示全部樓層
1 P1=0xfe;代表八個IO的高低電平狀態(tài) 即 P1.7-P1.0: 1111 1110  sec>=200時只改變了P1.0的電平狀態(tài)
2 P1<<=1;執(zhí)行一次 P1向左移位一次(sec=200開始進入執(zhí)行),低位補0;進入第八次的時候 sec=207 P1= 0000 0000  所以改變了八個IO的狀態(tài).
所以才會全閃啊.
回復

使用道具 舉報

ID:777834 發(fā)表于 2021-4-5 14:17 來自手機 | 顯示全部樓層
ANT1987 發(fā)表于 2021-4-5 08:59
1 P1=0xfe;代表八個IO的高低電平狀態(tài) 即 P1.7-P1.0: 1111 1110  sec>=200時只改變了P1.0的電平狀態(tài)
2 P1

謝謝你
回復

使用道具 舉報

ID:777834 發(fā)表于 2021-4-5 14:22 來自手機 | 顯示全部樓層
ANT1987 發(fā)表于 2021-4-5 08:59
1 P1=0xfe;代表八個IO的高低電平狀態(tài) 即 P1.7-P1.0: 1111 1110  sec>=200時只改變了P1.0的電平狀態(tài)
2 P1

看完你的分析,一下子頓悟啊,自己忘記分析sec在大于200之后的P1后幾次移位的狀態(tài)了,謝謝啊
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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