电子技术论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
下载方法|用单线程|避免多扣帖子规范|求助必读|发帖建议积分策略|勋章介绍|新人必读获取金币|推广论坛|出售帖子基本礼节|致会员信|版规总则
禁涉政治|反对低俗|举报专帖征集相片|留下足迹|推荐精华上传附件|制作分卷|使用网盘禁发qq群|恶意灌水|纯表情帖加入团队|监督机制|安全上网
查看: 128|回复: 9

用汇编玩转单片机

[复制链接]
发表于 昨天 15:34 来自手机 | 显示全部楼层 |阅读模式
RT809HSE编程器

注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
本帖最后由 1363822353 于 2026-11-11 19:41 编辑

单片机开发主流是C语言,并不提倡汇编语言,它效率低兼容性差。
用汇编语言玩单片机纯粹是图个娱乐,它是直接底层控制单片机运行的每一步,可玩性还是蛮高的。
后面都以MCS-51单片机作为玩偶,那些高级的32位MCU是不能用汇编玩的,因为它们指令系统复杂,寄存器数量繁多,不是人脑能记忆的。
汇编玩MCS-51的先决条件是:清晰记住111条指令,21个寄存器的功能,片内RAM、ROM的地址分配原则。
 楼主| 发表于 昨天 16:38 来自手机 | 显示全部楼层
本帖最后由 1363822353 于 2026-11-12 00:02 编辑

首先来玩一个没有用处的流水灯,代码如下:
      ORG 0000H
      LCALL MAIN
      ORG 0030H        ;开始
   MAIN:MOV A,0FEH  
  START:MOV P2,A      ;亮一个灯
      RL A        ;累加器循环左移一位
      AJMP START     ;跳转到前面再次开始
      END           ;结束
程序从内存的30H单元地址开始,30H以前的ROM空间是中断入口地址,我的实验板是P2口接八个LED灯,口为低电平时灯亮。每循环一次,亮灯向左移动一位,反复不断形成流水灯。
发表于 昨天 17:09 | 显示全部楼层
RT809HSE编程器
MCS-51,现在还有这个51吗
另外请问,汇编对于指针数组指针函数是如何玩转的
 楼主| 发表于 昨天 17:17 | 显示全部楼层
本帖最后由 1363822353 于 2026-11-11 17:26 编辑
joyb 发表于 2026-11-11 17:09
MCS-51,现在还有这个51吗
另外请问,汇编对于指针数组指针函数是如何玩转的 ...


STC系列的都是一样内核,指针实际就是一个地址,汇编中有间址寄存器Ri,数据指针DPTR,堆栈指针sp,数据表格TAB,就是C语言的指针吧。汇编比C更底层,C有的东西,汇编一定有,只是表达方式不同。
发表于 昨天 17:20 | 显示全部楼层
楼主玩的挺好的.
 楼主| 发表于 昨天 18:22 | 显示全部楼层
本帖最后由 1363822353 于 2026-11-11 19:34 编辑

这段代码能让单片机延时,通常作为一段延时子程序来调用。
DELAY:MOV R5,#250
LOOP2:MOV R4,#250
LOOP1:  NOP
      五个NOP
      DJNZ R4,LOOP1
      DJNZ R5,LOOP2
      RET
NOP是空指令,什么都不做但要花掉执行一条指令的时间,就是靠它延时的,六个NOP执行250x250次,在12M晶振频率时花掉0.5秒时间。
通常代码执行中需要短晢延时的就调用它,调用一次延时0.5秒,调用多次延时( N x 0.5)秒。
汇编中的子程序就是C语言的函数吧。
 楼主| 发表于 昨天 19:23 | 显示全部楼层
本帖最后由 1363822353 于 2026-11-11 19:57 编辑

这段代码是八段数码管显示驱动,码表是八段共阴极编码,本人实验板是P0口接段位,P1.0——P1.3口经NPN三极管接四个数码管阴极。
  TAB:DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40
     MOV DPTR,#TAB
     CLR A
     MOVC A,@A+DPTR
     MOV P0,A
     MOV P1,#01H
     LCALL DELAY

上面的代码只是在码表中取出了0的编码,放在第一位数码管上显示,要取出其它1——9的字符在其它位显示时,只要改变累加器A的值和P1口中0——3的值就行。最后一条指令就是调用前面的延时子程序。
发表于 昨天 19:57 | 显示全部楼层
随着AI兴起,以后更少有人学编程了
 楼主| 发表于 昨天 19:59 | 显示全部楼层
本帖最后由 1363822353 于 2026-11-11 20:00 编辑
大大汉 发表于 2026-11-11 19:57
随着AI兴起,以后更少有人学编程了


编程却实没有人愿意搞,我这是玩,嘿嘿。如果是为了编程,用汇编不是作S吗。
发表于 昨天 23:15 | 显示全部楼层
感谢分享~
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|家电维修技术论坛 ( 鄂ICP备09003585号-2 )

GMT+8, 2026-11-12 01:22 , Processed in 0.061170 second(s), 4 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

CopyRight © 电子技术论坛
电子邮箱:8794149@qq.com | 联系 QQ:3081868839 | 官方网址:www.dzdu.com

Qiji. All Rights Reserved


服务条款 | 站长声明

Wuhan Qiji Technology Co., Ltd.武汉奇迹科技有限公司版权所有


鄂ICP备09003585号-2鄂公网安备42010602000420号

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