找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1599|回复: 0
打印 上一主题 下一主题
收起左侧

个位计算器单片机程序 串口显示

[复制链接]
跳转到指定楼层
楼主
ID:382962 发表于 2018-8-15 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define N 4
  5. uchar flag,i,m,op;        
  6. uchar b,c,n,j=0;
  7. uchar  table1[N];
  8. void init()
  9. {
  10. TMOD=0x20;
  11. TH1=0xfb;
  12. TL1=0xfb;
  13. TR1=1;
  14. REN=1;
  15. SM0=0;
  16. SM1=1;
  17. EA=1;
  18. ES=1;
  19. }
  20. void main()
  21. {
  22. init();
  23.         while (1)
  24.         {
  25.                 if(flag==1)
  26.                 {
  27.                         ES=0;
  28.                         b=table1[1];
  29.                         op=table1[2];
  30.                         c=table1[3];
  31.                         switch(op)
  32.                         {
  33.                         case '+':
  34.                         i=b+c-96+48;
  35.                         break;
  36.                         case '-':
  37.                         i=(b-48)-(c-48)+48;
  38.                         break;
  39.                         case '*':
  40.                         case 'x':
  41.                         case 'X':
  42.                         i=(b-48)*(c-48)+48;
  43.                         break;
  44.                         case '/':
  45.                         i=(b-48)/(c-48)+48;
  46.                         break;
  47.                         case '%':
  48.                         i=(b-48)%(c-48)+48;
  49.                         break;
  50.                         }        
  51.                         for(n=1;n<4;n++)
  52.                         {
  53.                         SBUF=table1[n];
  54.                         while(!TI);
  55.                         TI=0;
  56.                         }
  57.                         SBUF=table1[0];
  58.                                 while(!TI);
  59.                         TI=0;
  60.                 if(i<48)
  61.                      {
  62.                           m=45;
  63.                                   n=48-i+48;
  64.                           SBUF=m;
  65.                           while(!TI);
  66.                         TI=0;
  67.                            SBUF=n;
  68.                           while(!TI);
  69.                         TI=0;
  70.                           }
  71.                         else if(i>'9')
  72.                         {
  73.                         m=((i-48)/10)+48;
  74.                         n=((i-48)%10)+48;
  75.                         /*if(n>=58)
  76.                         {
  77.                         while(n>57)
  78.                         {
  79.                          m+=n/58;
  80.                          n=n%58+48;
  81.                          }*/
  82.                         SBUF=m;
  83.                         while(!TI);
  84.                         TI=0;
  85.                         SBUF=n;
  86.                         while(!TI);
  87.                         TI=0;
  88.                         }
  89.                         
  90.                          else
  91.                         {
  92.                         SBUF=i;
  93.                         while(!TI);
  94.                         TI=0;
  95.                         }
  96.                         ES=1;
  97.                         flag=0;
  98.                         }
  99.                 }
  100.         }
  101. void ser()interrupt 4
  102. {
  103. uchar i;
  104. for(i=0;i<4;i++)
  105. {
  106. while(RI==0);
  107. RI=0;
  108. table1[i]=SBUF;
  109. }
  110. flag=1;
  111. }
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表