新聞中心

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

基于51單片機(jī)的計(jì)算器 C語言程序

作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏

void ChangeNum(uchar *p,uchar nCount)
{
if(nCount<4)
{
uchar ncount;
ncount=nCount;
while(ncount>0)
{
*(p+nCount)=*(p+nCount-1);
ncount--;
}
}
}
void Delay_510(void)//延時(shí)510微秒
{
#pragma asm
MOV R0,#7DH
MOV R1,#02H
TSR1:
DJNZ R0,TSR1
MOV R0,#7DH
DJNZ R1,TSR1
#pragma endasm
}

void Time0_Isr_Int(void) interrupt 1 //定時(shí)器0中斷服務(wù)子程序
{
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;
P1=0xF0;
if((P1&0xF0)!=0xF0)
{
Delay_510();
if((P1&0xF0)!=0xF0)
{
P1=0xFE;
if((P1&0xF0)==0xE0)//數(shù)字鍵0
{
KeyNum=0;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0xD0)
{
KeyNum=1;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0xB0)
{
KeyNum=2;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0x70)
{
KeyNum=3;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
P1=0xFD;
if((P1&0xF0)==0xE0)
{
KeyNum=4;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0xD0)
{
KeyNum=5;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0xB0)
{
KeyNum=6;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0x70)
{
KeyNum=7;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
P1=0xFB;
if((P1&0xF0)==0xE0)
{
KeyNum=8;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0xD0)
{
KeyNum=9;
ChangeNum(NumBufe,KeyPos);
KeyPos++;
}
if((P1&0xF0)==0xB0)//加法
{
op=1;
add=1;
}
if((P1&0xF0)==0x70)
{
op=1;
dec=1;
}
P1=0xF7;
if((P1&0xF0)==0xE0)
{
op=1;
mul=1;
}
if((P1&0xF0)==0xD0)
{
op=1;
div=1;
}
if((P1&0xF0)==0xB0)//等號(hào)
{
equ=1;
}
if((P1&0xF0)==0x70)//清零
{
clr=1;
}
}
}
}

本文引用地址:http://butianyuan.cn/article/201611/321399.htm


上一頁 1 2 下一頁

關(guān)鍵詞: 51單片機(jī)計(jì)算器C語言程

評(píng)論


相關(guān)推薦

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

關(guān)閉