找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1397|回复: 1
打印 上一主题 下一主题
收起左侧

大佬们,请问这段单片机汇编代码是什么意思,注释看不太懂,这一段是用来做什么的?

[复制链接]
跳转到指定楼层
楼主
ID:1031815 发表于 2022-6-16 16:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这段代码来自这篇里用51单片机 汇编语言 做简单的电子琴 - 资料共享 (51hei.com)
SONG1:
        MOV A, 30H;将偏移量传入A
        MOV DPTR, #SONG;取得歌曲表的首地址
        MOVC A, @A + DPTR;取得相应音符
        JZ OVER;若8位全为0表示播放歌曲结束
        MOV R2, A
        ANL A, #0FH;从低4位取出节拍
        MOV R5, A;存入R5,用于定时器的中断服务程序
        MOV A, R2;再导入R2
        SWAP A
        ANL A, #0FH;取出频率向量
        JNZ SING;若为0表示无声
        CLR TR0 ;不记数
        JMP D1
;取出频率(计数值)的程序段
SING:
        DEC A;减1,因为要从0位置开始
        RL A;在计数值表中以字存储,乘2才得到正确位置
        MOV 22H, A;将位置暂存
        MOV DPTR, #TAB1;计数值表
        MOVC A, @A + DPTR
        MOV TH0, A;取到的高位放入TH0
        MOV 21H, A;暂存到21H,用于中断程序
        MOV A, 22H
    INC A;取低位地址
        MOVC A, @A + DPTR
        MOV TL0, A;放入TL0
        MOV 20H, A;暂存到20H,用于中断程序
        SETB TR0;计数器开始计数
D1:
        ACALL DELAY
        INC 30H;播放完一个音符后将偏移量加1
        JMP SONG1

作者注释是用来播放歌曲的,但是为什么要取高四位,低四位?整段代码又是什么意思
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2022-6-16 20:21 | 只看该作者
就是一个字节分两部分保存了两个数据呗,8位机资源有限这么做是常见的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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