单片机做计算机乘法,运用单片机进行加减乘除法的运算

练习:25H+36H?

程序如下:

MOV R0,#25H;将立即数25送寄存器R0

MOV A,#36H;将立即数36送累加器A

ADD A,R0;将R0与A的内容相加,结果在A

NOP;空操作

POV P1,A;将累加器A的值送P1口。

END;结束

将程序编译以后烧入片子运行;可以看到灯的状态为

P1.0 灭

P1.1 灭

P1.2 亮

P1.3 灭

P1.4 灭

P1.5 亮

P1.6 灭

P1.7 亮

就是二进制数01011011.我们还是用上面的计算器来看看结果对不对:先将计算器设置为16进制,输入25+36=结果为5E

a36a4686a790b291739a2b6966f83bd5.png

然后呢再点击二进制结果为1011110,可见结果完全正确〉

e379a0f222b44c79948c6ab189cbef39.png

大家接着可以自行练习

减法指令SUBB

乘法指令 MUL

除法指令 DIV

的用法, 相信经过这一节的学习,大家对这几个指令的印象会非常深刻了。同时让我们对于计算机的数字有了一个深刻的认识。

c2c9ed493cd281aa86d8a6f5178c4c01.gif [1] [2] 610626052e95c7fbe3d254abc769d9ad.gif

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的51单片机课程设计4乘4计算器的代码,仅供参考: ``` #include <reg51.h> sbit RS = P2^0; //定义RS口 sbit EN = P2^1; //定义EN口 void Init_LCD(); //LCD初始化函数 void Write_Command(unsigned char command); //写指令函数 void Write_Data(unsigned char dat); //写数据函数 void Delay(int num); //延时函数 void main() { unsigned char key, a, b, c, result; Init_LCD(); //初始化LCD Write_Command(0x80); //设置光标位置为第一行第一列 Write_Data('A'); //输出提示信息 Write_Data(':'); Write_Command(0xC0); //设置光标位置为第二行第一列 Write_Data('B'); //输出提示信息 Write_Data(':'); while(1) { key = P1; //读取键盘按键 if(key != 0xFF) //如果有按键按下 { Delay(5); //延时去抖 key = P1; //再次读取键盘按键 if(key != 0xFF) //如果确认有按键按下 { if(key == 0xFE) a = 1; //如果按下第一行第一个键,则输入数字1 else if(key == 0xFD) a = 2; //如果按下第一行第二个键,则输入数字2 else if(key == 0xFB) a = 3; //如果按下第一行第三个键,则输入数字3 else if(key == 0xF7) a = 4; //如果按下第一行第四个键,则输入数字4 else if(key == 0xEF) b = 1; //如果按下第二行第一个键,则输入数字1 else if(key == 0xDF) b = 2; //如果按下第二行第二个键,则输入数字2 else if(key == 0xBF) b = 3; //如果按下第二行第三个键,则输入数字3 else if(key == 0x7F) b = 4; //如果按下第二行第四个键,则输入数字4 } } if(a != 0 && b != 0) //如果已经输入了两个数 { Write_Command(0x94); //设置光标位置为第二行第五列 Write_Data('C'); //输出提示信息 Write_Data(':'); key = P1; //读取键盘按键 if(key != 0xFF) //如果有按键按下 { Delay(5); //延时去抖 key = P1; //再次读取键盘按键 if(key != 0xFF) //如果确认有按键按下 { if(key == 0xFE) c = 1; //如果按下第一行第一个键,则输入数字1 else if(key == 0xFD) c = 2; //如果按下第一行第二个键,则输入数字2 else if(key == 0xFB) c = 3; //如果按下第一行第三个键,则输入数字3 else if(key == 0xF7) c = 4; //如果按下第一行第四个键,则输入数字4 } } if(c != 0) //如果已经输入第三个数 { if(a == 1) result = b * c; //如果A等于1,则乘法运算 else if(a == 2) result = b + c; //如果A等于2,则运算 else if(a == 3) result = b - c; //如果A等于3,则运算 else if(a == 4) result = b / c; //如果A等于4,则运算 Write_Command(0xD4); //设置光标位置为第二行第十三列 Write_Data('R'); //输出提示信息 Write_Data(':'); Write_Data(result+48); //输出结果 a = b = c = result = 0; //清零 } } } } void Init_LCD() { Write_Command(0x38); //设置LCD显示模式 Write_Command(0x0C); //开启LCD显示 Write_Command(0x06); //设置光标移动方式 Write_Command(0x01); //清屏 } void Write_Command(unsigned char command) { RS = 0; //RS置低,表示写入指令 P0 = command; //将指令写入P0口 EN = 1; //EN置高 Delay(5); //延时 EN = 0; //EN置低 } void Write_Data(unsigned char dat) { RS = 1; //RS置高,表示写入数据 P0 = dat; //将数据写入P0口 EN = 1; //EN置高 Delay(5); //延时 EN = 0; //EN置低 } void Delay(int num) { int i, j; for(i=0; i<num; i++) for(j=0; j<100; j++); } ``` 该代码使用了4x4键盘和LCD1602液晶屏,可以实现四则运算功能。用户输入两个数字和运算符后,按下等于号,程序会根据输入的运算进行计算,然后在LCD屏幕上显示结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值