icfans

单片机操作实例:用P0口、P1 口分别显示加减乘除运算结果

0
阅读(34) 评论(0)

单片机操作实例:用P0口、P1 口分别显示加减乘除运算结果


//实例9:用P0口、P1 口分别显示加法和减法运算结果

#include<reg51.h>

void main(void)   

{  

  unsigned char m,n;

  m=43;     //即十进制数2x16+11=43

  n=60;     //即十进制数3x16+12=60

  P1=m+n;  //P1=103=0110 0111B,结果P1.3、P1.4、P1.7 口的灯被点亮

  P0=n-m;  //P0=17=0001 0001B,结果P0.0、P0.4的灯被熄灭

 }

 

     

 

 

//实例10:用P0、P1口显示乘法运算结果

#include<reg51.h> //包含单片机寄存器的头文件

void main(void)  

{

  unsigned char m,n;

  unsigned int s;

  m=64;

  n=71;

  s=m*n;       //s=64*71=4544,需要16位二进制数表示,高8位送P1口,低8位送P0口

               //由于4544=17*256+192=H3*16*16*16+H2*16*16+H1*16+H0

//两边同除以256,可得17+192/256=H3*16+H2+(H1*16+H0)/256

//因此,高8位16进制数H3*16+H2必然等于17,即4544除以256的商

//低8位16进制数H1*16+H0必然等于192,即4544除以256的余数

             

  P1=s/256;     //高8位送P1口 ,P1=17=11H=0001 0001B, P1.0和P1.4口灭,其余亮

  P0=s%256;     //低8位送P0口 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7口灭,其余亮

}

 

 

//实例11:用P1、P0口显示除法运算结果

#include<reg51.h>   //包含单片机寄存器的头文件

void main(void)  

{

  P1=36/5;          //求整数

  P0=((36%5)*10)/5; //求小数

  while(1)          

    ;              //无限循环防止程序“跑飞”

 }


分享来自半导体社区