普中51-单核-A2 学习之路(从点亮第一个LED开始)

1,点亮第一个LED

2,闪烁LED

3,流水灯

4,蜂鸣器

5,动态数码管

6,独立按键

7,矩阵按键

8. LED点阵(点亮一个点)

 

  • 5
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,以下是基于普中51-单核-A2制作一个简易计算器程序的汇编代码,附有中文解释: ``` org 0 ;指定程序起始地址为0 ;定义变量 num1: db 0 ;存储第一个数值 num2: db 0 ;存储第二个数值 op: db 0 ;存储运算符 result: db 0 ;存储计算结果 ;中断服务程序 ;这里使用外部中断0来读取按键输入 int0_handler: mov a, p1 ;读取P1口状态 anl a, #0Fh ;屏蔽高4位 mov num1, a ;存储数值到num1变量中 reti ;返回中断 main: ;初始化串口 mov scon, #50h ;设定波特率为9600 setb ti ;启动串口发送 ;等待用户输入第一个数值 mov a, #"1" ;默认为1 mov num1, a mov a, #"0" mov num2, a mov a, #"+" ;默认为加法运算符 mov op, a ;循环读取用户输入 loop: ;显示当前输入状态 mov a, num1 mov sbuf, a clr a mov sbuf, a mov a, op mov sbuf, a clr a mov sbuf, a mov a, num2 mov sbuf, a clr a mov sbuf, a ;等待按键输入 setb it0 ;开启外部中断0 acall delay ;等待一段时间,防止重复输入 clr it0 ;关闭外部中断0 ;判断按键输入 mov a, num1 cjne a, #"1", check_num2 ;如果num1不为1,则跳过读取num2 mov a, num2 cjne a, #"0", check_op ;如果num2不为0,则跳过读取op mov a, p1 ;读取P1口状态 anl a, #0Fh ;屏蔽高4位 mov num1, a ;存储数值到num1变量中 sjmp loop ;返回循环 check_num2: mov a, p1 ;读取P1口状态 anl a, #0Fh ;屏蔽高4位 mov num2, a ;存储数值到num2变量中 sjmp loop ;返回循环 check_op: mov a, p1 ;读取P1口状态 anl a, #0Fh ;屏蔽高4位 mov op, a ;存储运算符到op变量中 sjmp loop ;返回循环 ;计算结果 mov a, num1 subb a, #"0" ;将ASCII码转换为数值 mov b, a mov a, num2 subb a, #"0" ;将ASCII码转换为数值 mov c, a mov a, op cmp a, #"+" jnz minus add b, c ;执行加法运算 sjmp display minus: cmp a, #"-" jnz multiply subb b, c ;执行减法运算 sjmp display multiply: cmp a, #"*" jnz divide mov dpl, b mov dph, #0 mov b, c mul ab ;执行乘法运算 sjmp display divide: cmp a, #"/" jnz error mov dpl, b mov dph, #0 mov b, c div ab ;执行除法运算 sjmp display error: mov a, #"E" ;运算符错误 mov sbuf, a mov a, #"r" mov sbuf, a mov a, #"r" mov sbuf, a sjmp loop ;显示结果 display: mov a, b ;将计算结果存储到result变量中 add a, #"0" ;将数值转换为ASCII码 mov result, a ;发送计算结果到串口 mov a, result mov sbuf, a clr a mov sbuf, a sjmp loop ;返回循环 ;延时函数 delay: mov r6, #20h delay1: mov r7, #255 delay2: djnz r7, delay2 djnz r6, delay1 ret end ``` 这个代码实现了一个简单的计算器程序,可以通过按键输入数值和运算符,然后计算并显示结果。程序通过外部中断0来读取按键输入,然后根据输入的数值和运算符执行相应的运算,并将结果显示在屏幕上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值