上一篇文章中,用C语言进行了单片机mac下入门开发。这一篇记录下如何在mac下使用汇编语言进行51单片机开发。
首先是汇编器的选择。汇编语言并不是跨平台的,需要汇编成指定系统的机器码。
经过在网上查找,找到一款可以对51系列单片机汇编语言进行汇编的编译器:c51asm. 官方下载地址:https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/C51ASM
接下来,就是汇编代码的编写,还是跟上篇文章一样,实现一个LED灯的闪烁,实现思路是通过在点亮和熄灭之间,执行255*255的循环,完成等待过程。
LOOP: SETB P1.0 ;高电平 熄灭 LCALL DELAY ;跳转到延迟子程序 CLR P1.0 ;低电平 点亮 LCALL DELAY ; 跳转到延迟子程序 AJMP LOOP ;跳转回循环LOOP标签处 DELAY: MOV R7,#255 ;延迟子程序 D1: MOV R6,#255 D2: DJNZ R6, D2 ;判断是否为0, 不为0减一, 一直执行 DJNZ R7, D1 ;完成 255 * 255次循环后, 进入下一步 RET ;子程序返回 END
建立文件名为pmd.asm的汇编文件。逻辑上:主程序,设置高电平(P1.0熄灭), 跳转延迟子程序,进行循环减数,完成后返回注程序,设置低电平(P1.0点亮)。再调用延迟子程序,返回后,进行主程序无限循环。完成LED灯的闪亮熄灭。
接下来进入汇编环节。
c51asm pmd.asm
生成pmd.hex文件。查看了下pmd.hex内容(Intel HEX)。
:10000000D29012000CC29012000C01007FFF7EFF04 :05001000DEFEDFFA2214 :00000001FF
将pmd.hex刷入单片机系统中。就可以看到LED灯不停的闪烁了。
stcgal -p /dev/tty.wchusbserial1410 pmd.hex