请大神解释一下锯齿波产生的这个程序!
答案:3 悬赏:10
解决时间 2021-12-14 21:16
- 提问者网友:清茶柒夏
- 2021-12-14 05:17
MOV DPTR,#0FEFFH MOV A,#00HLOOP:MOVX @DPTR,A INC A MOV R0,#DATA DJNZ R0,$ SJMP LOOP这段程序是怎么形成一个原点开始向-5线性的一个锯齿波的?
最佳答案
- 二级知识专家网友:哭不代表软弱
- 2021-12-14 05:22
你光看程序当然是看不明白咯!咱一步一步说吧
首先0FEFH这是一个地址,2113如果我分析的没错的话,这个地址连接的应该是DA转换器,将数字信号转换成模5261拟信号的。
A是累加器,8未的单片机累加器应该最多是0FFH 也就是255,
LOOP循环里,第一个循环将#00H送到DA转换器里面(MOVX,@DPTR,A这条语句实现的,第一次循环的时候A里面的值是#00H),DA转换器将#00H这个数字信号转换成4102模拟信号(#00H对应的是0V,#01H对应的是5/255*1V,#02H对应的是5/255*2V以此类推)。
DA转换器实现DA转换之后,我们要1653给锯齿波一个时间信号来控制锯齿波的周期,靠的是MOV R0,#DATA和DJNZ R0,$这两条语句实现的,其中#DATA这个数值由你自己设置(可以在#00H和#FFH中任选),实际上的锯齿波周期就是#DATA*255*单片机的时钟。
第二回个循环就送#01H给DA 第三个周期送#02H………… 一直送到#FFH。
DA转换器就根据送数据的不同答输出不同的电压,最终形成锯齿波。
写的有点乱不知道你能不能看懂!
首先0FEFH这是一个地址,2113如果我分析的没错的话,这个地址连接的应该是DA转换器,将数字信号转换成模5261拟信号的。
A是累加器,8未的单片机累加器应该最多是0FFH 也就是255,
LOOP循环里,第一个循环将#00H送到DA转换器里面(MOVX,@DPTR,A这条语句实现的,第一次循环的时候A里面的值是#00H),DA转换器将#00H这个数字信号转换成4102模拟信号(#00H对应的是0V,#01H对应的是5/255*1V,#02H对应的是5/255*2V以此类推)。
DA转换器实现DA转换之后,我们要1653给锯齿波一个时间信号来控制锯齿波的周期,靠的是MOV R0,#DATA和DJNZ R0,$这两条语句实现的,其中#DATA这个数值由你自己设置(可以在#00H和#FFH中任选),实际上的锯齿波周期就是#DATA*255*单片机的时钟。
第二回个循环就送#01H给DA 第三个周期送#02H………… 一直送到#FFH。
DA转换器就根据送数据的不同答输出不同的电压,最终形成锯齿波。
写的有点乱不知道你能不能看懂!
全部回答
- 1楼网友:duile
- 2021-12-14 07:18
DPTR指向FEFF DAC的地址
A清空
DPTR指向的地址内容清空
A自增1
延时
跳转
A每次增加都对应着电压的变高,A溢出后重新产生新的锯齿波,如此无限循环
- 2楼网友:留下所有热言
- 2021-12-14 06:47
DPTR指向FEFF DAC的地址
A清空
DPTR指向的地址内容清空
A自增1
延时
跳转
A每次增加都对应着电压的变高,A溢出后重新产生新的锯齿波,如此无限循环
再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯