搜索
bottom↓
回复: 22

开始学习松翰单片机了,第一个汇编程序,献丑了.

[复制链接]

出0入0汤圆

发表于 2014-10-17 17:34:53 | 显示全部楼层 |阅读模式
之前无论学习51,STM8还是MSP430,一直都很依赖C,虽然也算是用了几年MCU了,但从没用过汇编程序.
现在头脑发抽,突然想学松翰,这芯片虽有C studio,但是为了摆脱C的粘性,决定学习汇编,就从这颗芯片开始.
写的第一个程序,单个LED闪烁,用C非常简单,但汇编还要查各种指令的使用方式,所以也捣鼓了一下午.
单片机仿真型号是2711.
献丑了.

  1. /**********************************************************
  2. ;程序名称:LED闪烁程序
  3. ;日    期:2014.10.17
  4. **********************************************************/
  5.         CHIP        SN8P2711A
  6. //{{SONIX_CODE_OPTION
  7.         .Code_Option        LVD                LVD_H                ; 2.4V Reset Enable LVD36 bit of PFLAG for 3.6V Low Voltage Indicator
  8.         .Code_Option        Reset_Pin        P04
  9.         .Code_Option        Watch_Dog        Disable                ; Disable Watchdog
  10.         .Code_Option        High_Clk        4M_X'tal        ; Crystal/Resonator: 2Mhz~10Mhz
  11.         .Code_Option        Fcpu                #0     ; Fcpu = Fosc/1
  12.         .Code_Option        Security        Enable
  13.         .Code_Option        Noise_Filter        Disable
  14. //}}SONIX_CODE_OPTION

  15. ;RAM变量定义
  16. .DATA
  17. ORG                0H        ;RAM变量定义起始地址
  18. timera ds 1                ;1Byte变量
  19. timerb ds 1                ;1Byte变量

  20. ;程序开始地址,ROM
  21. .CODE
  22. ORG                0H        ;ROM起始地址
  23. jmp                main        ;跳转到10H地址处,因00H - 10H处有中断处理入口,所以需要跳过               
  24. ORG                10H        ;MAIN函数地址
  25. main:                       
  26.         b0bset                p5m.3        ;设置p5.3为输出模式
  27. @@:                        ;暂时性标号       
  28.         b0bset                p5.3        ;置位P5.3
  29.         mov                 a,#255         ;载入延时时间
  30.         call                delay        ;延时
  31.         b0bclr                p5.3        ;复位P5.3
  32.         mov                a,#255        ;载入延时时间
  33.         call                delay        ;延时
  34.         jmp                @b        ;跳回向前最近的一个"@@"处

  35. delay:                        ;延时子函数
  36.         mov         timerb,a        ;将延时变量(形参)载入函数变量
  37.         mov         a,#100               
  38.         mov        timera,a        ;将立即数载入变量timera
  39.         decms         timera                ;如果timera -- 等于0,则跳过下一条指令
  40.         jmp        $-1                ;回到上一步,结合decms指令完成while(timera --)功能
  41.         decms   timerb                ;双重延时
  42.         jmp        $-3                   ;回到上面3步
  43.         ret                        ;子程序返回
  44. ENDP                        ;程序结束
复制代码

出0入0汤圆

发表于 2014-10-17 19:01:10 | 显示全部楼层
不错!!!

出145入215汤圆

发表于 2014-10-17 19:10:00 | 显示全部楼层
delay:                        ;延时子函数
        mov         timerb,a        ;将延时变量(形参)载入函数变量                        //这一句把延迟参数送入 timerb
        mov         a,#100                                                                           //这一句就是把立即数送入A
        mov        timera,a        ;将立即数载入变量timera                                  //这一句相当于吧A的数直接放到 timerb,,,为啥不直接立即寻址吧100放入 timerble ??mov  timerb,#100/////////第一句就变的没意义了,没用就直接被下面的覆盖了!

出0入0汤圆

发表于 2014-10-17 19:50:22 | 显示全部楼层
今天刚刚学习汇编,。。

出0入0汤圆

 楼主| 发表于 2014-10-17 20:33:19 | 显示全部楼层
dz20062008 发表于 2014-10-17 19:10
delay:                        ;延时子函数
        mov         timerb,a        ;将延时变量(形参)载入 ...

不会啊,两个变量,timera,timerb,
timerb = 传入变量
timera = #100

出145入215汤圆

发表于 2014-10-17 20:51:41 | 显示全部楼层
i7gly 发表于 2014-10-17 20:33
不会啊,两个变量,timera,timerb,
timerb = 传入变量
timera = #100

眼神不好,看花了。与c比有啥感想啊。为啥不学51的汇编啊,资料多?

出0入0汤圆

 楼主| 发表于 2014-10-17 20:56:36 | 显示全部楼层
dz20062008 发表于 2014-10-17 20:51
眼神不好,看花了。与c比有啥感想啊。为啥不学51的汇编啊,资料多?

用51我肯定又会依赖C,这单片机RAM紧张,不用汇编不好搞,强迫一下自己.

出0入0汤圆

发表于 2014-10-27 07:22:56 | 显示全部楼层
除非量大,用C开发效率高,修改容易。

出0入0汤圆

发表于 2014-10-28 11:45:29 | 显示全部楼层
膜拜了,还是很厉害

出0入0汤圆

发表于 2014-11-22 12:55:41 | 显示全部楼层
汇编学好了还是有用的,至少对寄存器的了解比用C的话深刻一些。

出0入0汤圆

发表于 2014-11-22 13:07:37 | 显示全部楼层
被汇编课程弄的脑大,膜拜,一起学习

出0入0汤圆

发表于 2015-1-6 16:56:58 | 显示全部楼层
没什么价值

出0入0汤圆

发表于 2015-1-6 17:04:15 | 显示全部楼层
其实,干吗要特意去学汇编?我刚开始也是用汇编写,但是后来用的芯片多了 就用C了。汇编和C的目的都一样,不过汇编相对比较直接而且

出0入0汤圆

发表于 2015-1-6 17:20:39 | 显示全部楼层
有时间,任性!

出0入0汤圆

发表于 2015-6-11 14:37:20 | 显示全部楼层
你很依赖延时函数

出0入0汤圆

发表于 2018-4-12 15:31:42 | 显示全部楼层
有量产需求,量大,想省成本才会考虑用汇编。

出0入0汤圆

发表于 2018-4-12 18:22:10 | 显示全部楼层
现在还学会汇编的,不多了 可以交流下

出0入0汤圆

发表于 2018-4-13 08:09:37 | 显示全部楼层
xyq1943rr 发表于 2018-4-12 18:22
现在还学会汇编的,不多了 可以交流下

现在松翰 很多支持C的MCU了

出0入0汤圆

发表于 2018-6-21 14:38:03 | 显示全部楼层
用C开发速度快得不止一点点。

出0入0汤圆

发表于 2018-6-25 13:58:15 | 显示全部楼层
汇编省空间小的项目还可以,大程序真心累。

出0入0汤圆

发表于 2018-6-25 16:20:12 | 显示全部楼层
C语言,可以写出汇编的效果,知道不?

出0入0汤圆

发表于 2021-6-24 12:37:39 | 显示全部楼层
多少年没有用汇编了,忘的差不多了。

出0入8汤圆

发表于 2021-6-24 19:16:45 | 显示全部楼层
汇编移植太麻烦了,特别像今年这种缺芯片的情况
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 19:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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