標題: 52單片機數(shù)碼管從左往右間隔一秒循環(huán)顯示“-”,哪里不對,求大神 [打印本頁]

作者: 霍禮林    時間: 2017-11-6 15:51
標題: 52單片機數(shù)碼管從左往右間隔一秒循環(huán)顯示“-”,哪里不對,求大神
#include "reg52.h"               
#include<intrins.h>                //因為要用到左右移函數(shù),所以加入這個頭文件
#define uchar unsigned char
typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;

u8 duan[8]={0x40};
u8 wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
u8 dispbitcnt;
u8 i;
void Timer()
{
        TMOD=0x01;//采用定時器0,16位
        TH0=0x3c;                //初始值 10ms
        TL0=0xb0;
        EA=1;                //總中斷打開
        ET0=1;                //定時器中斷打開
        TR0=1;                //定時器開關打開
}

void main()
{
        Timer();
        while (1);
        {
                if(i==100)                                       
                {
                        i=0;
                        P0=0x40;
                        P2=wei[dispbitcnt];
                        P2=P2>>1;
                        dispbitcnt++;
                        if(P2==0x7f)
                        dispbitcnt=0;
                }
        }
}
void Timer0(void) interrupt 1
{
        static u16 i;
        TH0=0xd8;       
        TL0=0xf0;               
        i++;
}


作者: Felixin    時間: 2017-11-6 16:23
為啥會有一個全局變量i
作者: Felixin    時間: 2017-11-6 16:24
為啥會有一個全局變量i和一個局部變量i呢,你主函數(shù)用的應該是全局變量那個吧
作者: 1014477535    時間: 2017-11-6 16:49
會不會是因為定時太短了?
作者: 霍禮林    時間: 2017-11-6 16:55
Felixin 發(fā)表于 2017-11-6 16:24
為啥會有一個全局變量i和一個局部變量i呢,你主函數(shù)用的應該是全局變量那個吧

用的全局的

作者: liut_text    時間: 2017-11-6 17:26
while(1);這里有分號,運行到這里就一直循環(huán)
作者: zl2168    時間: 2017-11-6 21:05
先學理論,打基礎,否則,問題多多,事倍功半。
作者: 白羊一只老母豬    時間: 2017-11-6 21:13

先學理論,打基礎,否則,問題多多,事倍功半。




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