久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8739|回復(fù): 30
收起左側(cè)

一個不用中斷可立即跳出當前單片機程序運行狀態(tài)的操作

  [復(fù)制鏈接]
ID:469417 發(fā)表于 2019-1-22 02:53 | 顯示全部樓層 |閱讀模式
電路原理圖如下:
kkk.jpg

單片機程序源碼:

#include <reg52.h>          //頭文件
#include <intrins.h>
#define uint unsigned int   //宏定義
#define uchar unsigned char
sbit SW1 =P1^0;            //按鍵1
sbit SW2 =P1^1;            //按鍵2
sbit SW3 =P1^2;            //按鍵3
sbit SW4 =P1^3;            //按鍵4
uint num;
uchar huayang1[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};
uchar huayang2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};     
uchar huayang3[]={0xaa,0x55,0xfb,0xf7,0xef,0x39,0xf1,0xe5,0x02,0xe3,0x2c,};                                   
void delay(uint S)
{
        while(S--);
}

void ms()
{
        uint i;
        for(i=0;i<200;i++)
        {
                delay(200);
        }
}

void main()
{
        while(1)
        {
               
                if(SW1==0)   
                {
                        delay(10);   
                        if(SW1==0)   
                        {
                                while(!SW1);
                                while(1)
                                {
                                        for(num=0;num<9;num++)
                                        {
                                                P0=huayang1[num];  P2=~huayang1[num];
                                                ms();
                                        }
                                }
                        }
                }
               
                if(SW2==0)                                       
                {
                        delay(10);
                        if(SW2==0)
                        {
                                while(!SW2);
                                while(1)
                                {
                                        for(num=0;num<8;num++)
                                        {
                                                P0=0xff;  P2=0;
                                                ms();
                                                P0=huayang2[num]; P2=~(0x55 & huayang2[num]);
                                                ms();                           
                                         }


                                }
                        }
                }
                if(SW3==0)           
                {
                        delay(10);
                        if(SW3==0)
                        {
                                while(!SW3);
                                while(1)
                                {
                                        for(num=0;num<11;num++)
                                        {
                                                
                                                P0=huayang3[num]; P2=~(0xaa & huayang3[num]);
                                                ms(); ms();
                                                if(SW1==0||SW2==0||SW3==0||SW4==0)
                                                        break;
                                        }


                                }
                        }
                }        
        }
}

一個不用中斷可立即跳出當前運行狀態(tài)的操作.rar (17.29 KB, 下載次數(shù): 94)



回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2019-1-22 06:00 | 顯示全部樓層
改變PC值不就行了嗎!
回復(fù)

使用道具 舉報

ID:412814 發(fā)表于 2019-1-22 07:00 | 顯示全部樓層
這個程序挺好,謝謝樓主分享
回復(fù)

使用道具 舉報

ID:149389 發(fā)表于 2019-1-22 08:46 | 顯示全部樓層
delay的時候,其他的事件顧不上的,也能“立即”?
回復(fù)

使用道具 舉報

ID:471066 發(fā)表于 2019-1-22 18:25 | 顯示全部樓層
weidoit 發(fā)表于 2019-1-22 08:46
delay的時候,其他的事件顧不上的,也能“立即”?

什么呀!怎么跟智障似的,別人附件在那你都不知道下下來驗證。附件才是完整的!別人的代碼思路就是能起到跳過delay,立即進入別的代碼中,效果同中斷一樣!同樓主所說的主題是一樣。別人能想到的算法估計你還真沒那個能力想出來!不信你自己試試!

評分

參與人數(shù) 1黑幣 +10 收起 理由
zhengchong60 + 10 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:469932 發(fā)表于 2019-1-22 18:30 | 顯示全部樓層
驗證過了,很有創(chuàng)意!
回復(fù)

使用道具 舉報

ID:142059 發(fā)表于 2019-1-24 16:44 | 顯示全部樓層
建議把顯示的代碼更新下,不然這個是實現(xiàn)不了的,引起不必要的誤會
回復(fù)

使用道具 舉報

ID:142059 發(fā)表于 2019-1-24 16:46 | 顯示全部樓層
我把他的源碼貼下,顯示的那個是錯的:
void ms()
{
        uint i;
        for(i=0;i<200;i++)
        {
                delay(200);
                if(SW1==0||SW2==0||SW3==0||SW4==0)
                        break;
        }
}
if(SW1==0)   
                {
                        delay(10);   
                        if(SW1==0)   
                        {
                                while(!SW1);
                                while(1)
                                {
                                        for(num=0;num<9;num++)
                                        {
                                                P0=huayang1[num];  P2=~huayang1[num];
                                                ms();
                                                if(SW1==0||SW2==0||SW3==0||SW4==0)
                                                        break;
                                        }
                                        if(SW1==0||SW2==0||SW3==0||SW4==0)
                                                break;
                                }
                        }
                }
其他按鍵同理

評分

參與人數(shù) 1黑幣 +35 收起 理由
就你**** + 35

查看全部評分

回復(fù)

使用道具 舉報

ID:472325 發(fā)表于 2019-1-24 19:39 | 顯示全部樓層
Angle145 發(fā)表于 2019-1-24 16:46
我把他的源碼貼下,顯示的那個是錯的:
void ms()
{

沒有必要作什么更新,是要學(xué)的自然會找附件,不想學(xué)的何苦自擾!

評分

參與人數(shù) 1黑幣 +8 收起 理由
sheng7533967 + 8 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:469417 發(fā)表于 2019-1-25 16:12 | 顯示全部樓層
Trump1438 發(fā)表于 2019-1-24 19:39
沒有必要作什么更新,是要學(xué)的自然會找附件,不想學(xué)的何苦自擾!

Mr. Trump, you said it very well.
回復(fù)

使用道具 舉報

ID:472268 發(fā)表于 2019-2-7 00:45 | 顯示全部樓層
好樣的,思路不錯
回復(fù)

使用道具 舉報

ID:472242 發(fā)表于 2019-2-7 00:47 | 顯示全部樓層
很好,收下了
回復(fù)

使用道具 舉報

ID:475444 發(fā)表于 2019-2-11 13:37 | 顯示全部樓層
很好的創(chuàng)意
回復(fù)

使用道具 舉報

ID:402398 發(fā)表于 2019-2-11 16:01 | 顯示全部樓層
這個程序挺好,謝謝樓主分享
回復(fù)

使用道具 舉報

ID:448822 發(fā)表于 2019-2-11 17:27 | 顯示全部樓層
這個程序挺好,謝謝樓主分享
回復(fù)

使用道具 舉報

ID:164189 發(fā)表于 2019-2-21 14:14 | 顯示全部樓層
感謝樓主分享!!
回復(fù)

使用道具 舉報

ID:365802 發(fā)表于 2019-2-22 08:08 來自手機 | 顯示全部樓層
思路新奇,感謝分享。
回復(fù)

使用道具 舉報

ID:473186 發(fā)表于 2019-3-7 23:05 | 顯示全部樓層
這個程序很有創(chuàng)意,謝謝樓主分享
回復(fù)

使用道具 舉報

ID:387856 發(fā)表于 2019-3-8 09:46 | 顯示全部樓層
提示: 該帖被管理員或版主屏蔽
回復(fù)

使用道具 舉報

ID:499466 發(fā)表于 2019-12-25 18:51 | 顯示全部樓層
初學(xué)者不明覺歷我也在想能不能不寫中斷
回復(fù)

使用道具 舉報

ID:472975 發(fā)表于 2020-7-23 11:54 | 顯示全部樓層
代碼一小段,變化千千萬,非常好,稍作修改,把按鍵改成變量即可與程序中的其他模塊配套使用,亦可連接串口與下位機、雙機、多機通信協(xié)作運行,并不僅限于51系列只要是C都可以用,不是C也是可以借鑒原理的
回復(fù)

使用道具 舉報

ID:608923 發(fā)表于 2020-8-17 20:18 | 顯示全部樓層
這個太好了
回復(fù)

使用道具 舉報

ID:810680 發(fā)表于 2020-8-17 22:19 | 顯示全部樓層
每天都有小驚喜,樓主太給力!
回復(fù)

使用道具 舉報

ID:89217 發(fā)表于 2020-8-18 08:40 | 顯示全部樓層
  if(SW1==0)   
                        {
                                while(!SW1);只要用這種結(jié)構(gòu)的 都是渣渣程序。你一直按著 別的程序要不要做事啊?萬一按鍵進水/短路,你這太機器就廢物了,最好用位置自鎖,延時用標志位延時 不要用delay()這類的硬延時,保證系統(tǒng)不卡在某個程序時間超過10ms才是高效的程序
回復(fù)

使用道具 舉報

ID:66287 發(fā)表于 2020-8-18 08:47 | 顯示全部樓層
if(SW1==0)   
                 {
                         delay(10);   
                         if(SW1==0)   
                         {
                                 while(!SW1);
                                 while(1)
                                 {
                                         for(num=0;num<9;num++)
                                         {
                                                 P0=huayang1[num];  P2=~huayang1[num];
                                                 ms();
                                                 if(SW1==0||SW2==0||SW3==0||SW4==0)
                                                         break;
                                         }
                                         if(SW1==0||SW2==0||SW3==0||SW4==0)
                                                 break;
                                 }
                         }
                 }
其他按鍵同理

以上是樓主原程序,又是while(!SW1);又是 for(num=0;num<9;num++)的,單片機也不需要干其他事了。
高明在何處?
回復(fù)

使用道具 舉報

ID:429003 發(fā)表于 2020-8-18 13:16 | 顯示全部樓層
有人贊揚,有人鄙夷,有人抱不平,實在不明,高明在何處?  no code project ?
回復(fù)

使用道具 舉報

ID:89217 發(fā)表于 2020-8-19 08:16 | 顯示全部樓層
bhjyqjs 發(fā)表于 2020-8-18 08:47
if(SW1==0)   
                 {
                         delay(10);   

寫作手法開頭不練好后續(xù)思想就固化,無論大小程序,都盡量不要做程序堵塞性的操作,保持良好的編程手法很重要。現(xiàn)在初學(xué)者跟著開發(fā)程序板,開發(fā)板的程序和量產(chǎn)程序天壤地別,早知道早避坑,愛聽不聽,感覺自我良好就按照你自己想怎么滴就怎么滴。
回復(fù)

使用道具 舉報

ID:108573 發(fā)表于 2020-8-20 08:41 | 顯示全部樓層
只有在初始化程序中用過delay,或者在某些等待引腳狀態(tài)翻轉(zhuǎn)時用過微秒級delay,其他地方都不建議用
回復(fù)

使用道具 舉報

ID:108573 發(fā)表于 2020-8-20 08:54 | 顯示全部樓層
bhjyqjs 發(fā)表于 2020-8-18 08:47
if(SW1==0)   
                 {
                         delay(10);   

我也看了,一頭霧水,該delay的地方還是跳不出去,能跟中斷比?還是樓主貼錯程序了
回復(fù)

使用道具 舉報

ID:468878 發(fā)表于 2020-8-20 12:47 | 顯示全部樓層
大概用的什么原理?沒看明白,注釋也沒有啊
回復(fù)

使用道具 舉報

ID:807712 發(fā)表于 2020-8-20 14:00 | 顯示全部樓層
rsx9583 發(fā)表于 2020-8-20 12:47
大概用的什么原理?沒看明白,注釋也沒有啊

庸人自擾,高明處懂的是內(nèi)行,不懂是一般水準

評分

參與人數(shù) 1黑幣 +15 收起 理由
shuisheng60 + 15 很給力!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久 | 福利片在线| 中文字幕亚洲一区 | 久久久成人网 | 一级黄色生活视频 | 国产精品视频久久久 | 日韩一区二区在线视频 | 欧美性网站 | 亚洲一区免费 | 久久精品视频亚洲 | 日韩免费福利视频 | 自拍偷拍亚洲一区 | 日本欧美黄色片 | 中文字幕视频在线观看 | 日本一本视频 | 久久久999成人 | 日韩欧美天堂 | 色婷婷av99xx | 成人在线视频一区 | 中文字幕av亚洲精品一部二部 | 国产精品久久久久久久久久免费看 | 欧美日本在线 | 日本电影一区二区 | 日韩午夜 | 六月成人网 | 欧美一区二区黄 | 黄色大片视频 | 免费看啪啪网站 | 精品国产一区二区三区在线观看 | 欧美另类视频在线 | 免费看黄色视屏 | 国产精品视频在线观看 | 国产亚洲一区二区三区 | 亚洲国产一区二区视频 | 91短视频网址 | 欧美激情精品久久久久久 | 成人国产综合 | av网站免费观看 | 精品国产欧美一区二区三区成人 | 欧洲高清转码区一二区 | 情侣酒店偷拍一区二区在线播放 |