jianyijisuanji.rar

  • PUDN用户
    了解作者
  • Asm
    开发工具
  • 54KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 4
    下载次数
  • 2010-03-31 09:13
    上传日期
用汇编语言写的单片机方面的建议计算机,用的是虚拟的服务机WAVE6000,可用于单片机开发方面的学习,属于比较简单的,老师课堂上讲的。
jianyijisuanji.rar
  • 简易计算器
  • keilc
  • adc.asm
    1.8KB
  • key_show.c
    2.4KB
  • adc.hex
    3.1KB
  • disp.DSN
    130.9KB
  • 简易计算器.jpg
    65.5KB
  • disp.PWI
    653B
内容介绍
/*键盘计算器显示程序 说明:P1口键盘输入 行列扫描 p2数码管 数据口 p3.0~3 数码管片选 p3.0最低位 设计 陈仲库 创达科技 2007年11月29日 技术支持 kuzi00@163.com qq:86828048 */ #include <reg52.h> sbit p30=P3^0; sbit p31=P3^1; sbit p32=P3^2; sbit p33=P3^3; sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3; char LED[17]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x80}; int tmp1=0,tmp2=0,rst; char dat[4]={0},flag=0,flg=0;//dat[0]最低位 个位 flag标志位 void display(int n); void delay(int m)//延时程序 { while(--m); } void disp(char key_dat) { char i; if(flag)//标志判断 if flag=1 说明有按下 for(i=3;i>=1;i--) { dat[i]=dat[i-1]; } dat[0]=key_dat; P3=0X01; for(i=0;i<4;i++) { P2=~LED[dat[i]];delay(50); P3=P3<<1; } flag=0;//标志判断 if flag=0 说明mei有按下 } void clr(void) { char i; for(i=0;i<4;i++)dat[i]=0; disp(dat[0]); } void tmp(char f) { if(flag)tmp1=dat[3]*1000+dat[2]*100+dat[1]*10+dat[0]; flg=f;//1 add ;2 sub ;3mul ;4 div flag=0; clr(); } void display(int n) { char i; dat[3]=n/1000; dat[2]=(n/100)%10; dat[1]=(n/10)%10; dat[0]=n%10;delay(20); P3=0X01; for(i=0;i<4;i++) { P2=~LED[dat[i]];delay(20); P3=P3<<1; } } void result(void) { if(flag)tmp2=dat[3]*1000+dat[2]*100+dat[1]*10+dat[0]; switch(flg) { case 0: tmp2=tmp1;break; case 1: rst=tmp1+tmp2;break; case 2: rst=tmp1-tmp2;break; case 3: rst=tmp1*tmp2;break; case 4: rst=tmp1/tmp2;break; } flg=0; flag=0;//标志判断 if flag=0 说明mei有按下 display(rst); } void keyscan(void) { P1=0xef; if(!p13){flag=1;while(!p13)clr();} if(!p12){flag=1;while(!p12)disp(1);} if(!p11){flag=1;while(!p11)disp(4);} if(!p10){flag=1;while(!p10)disp(7);} P1=0xdf; if(!p13){flag=1;while(!p13)disp(0);} if(!p12){flag=1;while(!p12)disp(2);} if(!p11){flag=1;while(!p11)disp(5);} if(!p10){flag=1;while(!p10)disp(8);} P1=0xbf; if(!p13){flag=1;while(!p13)result();} if(!p12){flag=1;while(!p12)disp(3);} if(!p11){flag=1;while(!p11)disp(6);} if(!p10){flag=1;while(!p10)disp(9);} P1=0x7f; if(!p13){flag=1;while(!p13)tmp(1);} if(!p12){flag=1;while(!p12)tmp(2);} if(!p11){flag=1;while(!p11)tmp(3);} if(!p10){flag=1;while(!p10)tmp(4);} disp(dat[0]);//如果没有按键 就还现实 原来的数值 } main() { while(1) { keyscan();//键盘扫描调用 } }
评论
    相关推荐