基于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 asmMOV R0,#7DHMOV R1,#02HTSR1:DJNZ R0,TSR1MOV R0,#7DHDJNZ 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 下一页
评论