新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于51单片机的计算器 C语言程序

基于51单片机的计算器 C语言程序

作者: 时间:2016-11-25 来源:网络 收藏

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)//延时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 //定时器0中断服务子程序
{
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)//数字键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)//等号
{
equ=1;
}
if((P1&0xF0)==0x70)//清零
{
clr=1;
}
}
}
}

本文引用地址:https://www.eepw.com.cn/article/201611/321399.htm


上一页 1 2 下一页

关键词: 51单片机计算器C语言程

评论


相关推荐

技术专区

关闭