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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1838|回復: 6
打印 上一主題 下一主題
收起左側

52單片機重新上電后不執行while(1)語句

[復制鏈接]
跳轉到指定樓層
樓主
ID:664691 發表于 2019-12-15 23:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
52單片機重新上電后不執行while(1)語句 (重新上電8個數碼管只顯示:85-62-32) 而重新燒錄程式會顯示 00-00-00   
按道理重新上電顯示 00-00-00   才是正確的啊
void main()
{
                        InitTIMER0(); //定時器0初始化

                         a_tmpdisplay[0]= 2;  //數據的轉換,因我們采用數碼管1~9的顯示,將數據分開
                         a_tmpdisplay[1]= 3;
                        a_tmpdisplay[2]= 10;
                        a_tmpdisplay[3]= 2;
                        a_tmpdisplay[4]= 6;          
                        a_tmpdisplay[5]= 10;
                        a_tmpdisplay[6]= 5;
                        a_tmpdisplay[7]= 8;                          //初始化不能放在while 語句里,如放在while語句里數碼管會不顯示          
        while(1)
        {
               
                        if(ReadRTC_Flag)
                {
                        ReadRTC_Flag = 0 ;
                        tiaoshi();       
                        a_tmpdisplay[0]= miao%10;  //數據的轉換,因我們采用數碼管1~9的顯示,將數據分開
                        a_tmpdisplay[1]= miao/10;
                        a_tmpdisplay[2]= 10;
                        a_tmpdisplay[3]= fen%10;
                        a_tmpdisplay[4]= fen/10;          
                        a_tmpdisplay[5]= 10;
                        a_tmpdisplay[6]= shi%10;
                        a_tmpdisplay[7]= shi/10;
                                                                  
                        if(shan==1)
                        {
                                shanshuo();
                                if(mie==1)
                                {
                                //        if(xuan>3) xuan=1;       
                                   switch(xuan)
                                   {
                                                case 1: a_tmpdisplay[7]=11,a_tmpdisplay[6]=11;break;
                                                case 2:        a_tmpdisplay[4]=11,a_tmpdisplay[3]=11;break;
                                                case 3:        a_tmpdisplay[1]=11,a_tmpdisplay[0]=11;break;
               
                                        }
                                                     
                                  }
                        }                                 
                }  
        }                       
}

void tim(void) interrupt 1 using 1   //中斷,用于數碼管掃描
{
        static unsigned char i,num;
        TH0=0xf5;
        TL0=0xe0;
        P0=smgduan[a_tmpdisplay[i]]; //查表法得到要顯示數字的數碼段
        switch(i)
                        {
                                case(0):
                                                LC = 0; LB = 0; LA = 0; break;
                                case(1):
                                                LC = 0; LB = 0; LA = 1; break;
                                case(2):
                                                LC = 0; LB = 1; LA = 0; break;
                                case(3):
                                                LC = 0; LB = 1; LA = 1; break;
                                case(4):                       
                                                LC = 1; LB = 0; LA = 0; break;
                                case(5):                       
                                                LC = 1; LB = 0; LA = 1; break;
                                case(6):                 
                                                LC = 1; LB = 1; LA = 0; break;
                                case(7):                 
                                                LC = 1; LB = 1; LA = 1; break;       
                        }
                        i++;
                        if(i==8)
                        {
                                i=0;
                                        num++;
                                if(10==num)                   // 隔斷時間讀取1302數據, 時間間隔可以調整
                                        {
                                                ReadRTC_Flag=1;          //使用標志位判斷
                                                num=0;
                                        }
                                       
                        }
                         

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:25310 發表于 2019-12-16 08:07 | 只看該作者
重上電時間間隔多少?確認單片機VCC供電電壓到0V再上電看看。
回復

使用道具 舉報

板凳
ID:213173 發表于 2019-12-16 09:25 | 只看該作者
僅憑這點程序片段不足以證明樓主的判斷。
回復

使用道具 舉報

地板
ID:25310 發表于 2019-12-16 09:53 | 只看該作者
你讀的時1302的時間啊,1302即使掉電很長時間電源腳的電容都可以提供能量的,1-2分鐘不掉電都是有可能的,看你的電容大小了。
回復

使用道具 舉報

5#
ID:664691 發表于 2019-12-16 22:37 | 只看該作者
pcbboy 發表于 2019-12-16 08:07
重上電時間間隔多少?確認單片機VCC供電電壓到0V再上電看看。

1.只是一個開發板,帶上重新燒錄程式顯示 00-00-00  按鍵功能正常,斷電后重新上電(間隔無論多長時間都一樣)就顯示 85-62-32,按鍵功能也無反應,所以我認為重新上電后while語句沒執行。
回復

使用道具 舉報

6#
ID:664691 發表于 2019-12-16 22:45 | 只看該作者
pcbboy 發表于 2019-12-16 09:53
你讀的時1302的時間啊,1302即使掉電很長時間電源腳的電容都可以提供能量的,1-2分鐘不掉電都是有可能的, ...

1. 其實我沒讀1302時間的(我準備去做這個程式:1302調時間)
2. 我只是先寫一個這樣的:上電數碼管顯示 00-00-00 然后通過3個按鍵來改變這3位數字顯示
3.之前一上電也是顯示(我一開始就設定顯示): 00-00-00  因為一上電后按鍵無功能(重新燒錄程式有功能)。為了區分while語句是否被執行,所以我開開始就把顯示定義為:85-62-32
回復

使用道具 舉報

7#
ID:664691 發表于 2019-12-17 19:26 | 只看該作者
哪位大神了幫幫忙  為什么是這樣?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级片免费在线观看 | 国产高清精品一区 | 久久久国产一区 | 正在播放亚洲 | 欧美视频 亚洲视频 | 91亚洲精品久久久电影 | 国产精品久久久久久久久久 | 人人擦人人 | 国产xxxx在线 | 亚洲欧美日本在线 | 日韩靠逼 | 日韩免费视频一区二区 | 91黄在线观看 | 欧美影院| 欧美极品一区二区 | 超碰网址 | 91久久精品国产免费一区 | 日韩成人免费中文字幕 | 国产精品美女www爽爽爽视频 | 精品一区二区三区四区外站 | 一区二区三区四区免费视频 | 亚洲国产成人精品久久久国产成人一区 | www成人免费 | 亚洲午夜精品 | 亚洲精品白浆高清久久久久久 | 日日操夜夜操天天操 | 欧产日产国产精品v | 91国内外精品自在线播放 | 精品国产aⅴ | 神马影院一区二区三区 | 日本精品视频一区二区 | 精品福利av导航 | 欧美一区二区三区精品 | 日本在线中文 | 在线亚洲一区二区 | 99精品在线 | 中文天堂在线一区 | a级毛片国产 | 国产美女特级嫩嫩嫩bbb片 | 国产免费又色又爽又黄在线观看 | 久久久成人精品 |