在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于51單片機的計算器 C語言程序

            基于51單片機的計算器 C語言程序

            作者: 時間:2016-11-25 來源:網(wǎng)絡 收藏
            前些日子再博客上轉(zhuǎn)載了一篇計算器的C程序,由于這些日子一直忙于考試,也抽不出時間來重寫一下基于C51的計算器,昨晚考完信號處理,回來就著手寫,一直弄到凌晨3點多,現(xiàn)面把代碼帖出來和大家一起共免,由于時間倉促,代碼部分可能還有不足,并且程序只是再我的實驗板上調(diào)試,如有不足請多多執(zhí)教,程序時C和匯編混合編程,匯編部分值用到延時的處理,其他代碼都用C寫的,希望哪為高人能夠?qū)懗龉δ芨鼮閺姶蟮挠嬎闫鞒绦蛞黄鸱窒?,對于我的程序,哪位博友增添了更多功能的話,希望發(fā)到回復里,以共同進步!
            程序代碼如下:

            #include
            #define uchar unsigned char
            #define uint unsigned int
            bit NumSem;//前后操作數(shù)的互斥信號量
            bit equ;//等號判斷
            bit clr;//清零標志
            bit add;//加標志
            bit dec;//減標志
            bit mul;//乘標志
            bit div;//除標志
            bit op;//算術(shù)符號標志
            uchar KeyNum;//鍵值
            uint result;//計算結(jié)果
            uint PreNum,LatNum;//計算的兩個操作數(shù)前操作數(shù),后操作數(shù)
            uchar KeyPos;
            uchar DisLed[]={0xC0,0xF9,0xA4,0xB0,0x99,//LED數(shù)碼七段表
            0x92,0x82,0xF8,0x80,0x90};
            uchar NumBufe[]={0,0,0,0};
            //sbit P10=P1^0;
            //sbit P11=P1^1;
            //sbit P12=P1^2;
            //sbit P13=P1^3;
            void T0Intal(void);//定時器0初始化程序
            void DisPlay(void);//顯示程序
            void ResultNum(void);//計算器運算結(jié)果
            void Clear(void);//清零程序
            void Delay_510(void);//延時510us程序用匯編編寫
            void ChangeNum(uchar *p,uchar nCount);//NumBufe[]移位程序
            void main(void)
            {
            T0Intal();
            while(1)
            {
            if(NumSem)
            {
            PreNum=NumBufe[3]*1000+NumBufe[2]*100+NumBufe[1]*10+NumBufe[0];
            NumBufe[4]=0;
            NumSem=0;
            }
            if(op)
            {
            if(PreNum!=0)
            {
            if(NumBufe[4]==0)
            {
            NumSem=1;
            }
            if(equ)
            {
            if(NumBufe[4]!=0)
            {
            LatNum=NumBufe[3]*1000+NumBufe[2]*100+NumBufe[1]*10+NumBufe[0];
            //DisLed[]=0;
            KeyPos=0;
            }
            ResultNum();//計算器結(jié)果計算
            //DisPlay();//顯示計算結(jié)果
            }

            }
            else Clear();

            }
            if(clr)
            {
            Clear();
            }
            DisPlay();//顯示計算結(jié)果
            }

            本文引用地址:http://www.biyoush.com/article/201611/321399.htm

            }
            void T0Intal(void)
            {
            TMOD=0x01;
            TH0=(65536-20000)/256;
            TL0=(65536-20000)%256;
            EA=1;
            ET0=1;
            TR0=1;
            }
            void DisPlay(void)
            {
            //uchar one,two,three,four;
            //one=result/1000;
            P2=DisLed[NumBufe[3]];
            P0=0xFE;
            Delay_510();
            //two=(result-one*1000)/100;
            P2=DisLed[NumBufe[2]];
            P0=0xFD;
            Delay_510();
            //three=(result-one*1000-two*100)/10;
            P2=DisLed[NumBufe[1]];
            P0=0xFB;
            Delay_510();
            //four=(result-one*1000-two*100)%10;
            P2=DisLed[NumBufe[0]];
            P0=0xF7;
            Delay_510();

            }
            void ResultNum(void)
            {
            if(op)
            {
            if(add)
            {
            result=PreNum+LatNum;
            }
            if(dec)
            {
            result=PreNum-LatNum;
            }
            if(mul)
            {
            result=PreNum*LatNum;
            }
            if(div)
            {
            result=PreNum/LatNum;
            }
            }
            //return result;
            //unsigned char
            //uchar one,two,three;
            //one=result/1000;
            NumBufe[3]=result/1000;
            NumBufe[2]=(result-NumBufe[3]*1000)/100;
            //NumBufe[2]=two;
            NumBufe[1]=(result-NumBufe[3]*1000-NumBufe[2]*100)/10;
            //NumBufe[1]=three;
            NumBufe[0]=(result-NumBufe[3]*1000-NumBufe[2]*100)%10;
            }
            void Clear(void)
            {
            // if(Clear)
            //{
            NumBufe[0]=0;
            NumBufe[1]=0;
            NumBufe[2]=0;
            NumBufe[3]=0;
            PreNum=0;
            LatNum=0;
            result=0;
            NumSem=0;
            KeyPos=0;
            clr=0;
            equ=0;
            add=0;
            dec=0;
            mul=0;
            div=0;
            op=0;
            // }
            }


            上一頁 1 2 下一頁

            評論


            技術(shù)專區(qū)

            關閉