当前位置:首页 > 《单片机原理及应用》习题库
解:根据题意,ADC0809的IN0口地址为
1111111011111000B=0FEF8H
本程序用R0作为片内RAM的地址指针,R7为通道号计数器,按题中要求,程序查询法的A/D转换程序如下:
ORG 0000H AJMP AD_START ORG 0030H
AD_START: MOV R0,#30H; 结果地址指针R0赋初值,指向
片内RAM 30H单元
MOV R7,#08H; 通道计数器赋初值
MOV DPTR,#0FEF8H; 通道号初值赋DPTR,指向IN0 AD: MOVX @DPTR,A; 启动A/D转换 JNB P1.0,$; 转换未结束则继续查询 MOVX A,@DPTR; 转换结束取结果
MOV @R0,A; 转存至片内RAM对应结果单元 INC R0; 片内RAM结果单元指针增1 INC DPTR; DPTR中的地址值增1,指向下一
通道
DJNZ R7,AD; 8个通道未巡检完则继续
29
SJMP $ END
4. DAC0832与8031单片机的硬件接口电路如下图所示。已知8031的晶振频率为
fOSC?6MHz,请按下述要求编写波形发生器程序(与
DAC0832无关的地址线全部取
“1”):
(1) 周期为1ms的锯齿波; (2) 周期为1ms的三角波;
Uo
t
T=1ms
+5VP0DI7~DI0RfbDAC08328031Iout1P2.7CSIout2UoWRWR1WR2EAXFER8031与DAC0832的硬件接口电路
30
解:
(1)齿波参考程序。
ORG 0000H AJMP DACR ORG 0030H
DACR:MOV DPTR,#7FFFH CON:MOV R0,#0 UP:MOV A,R0
MOVX @DPTR,A INC R0 NOP NOP NOP NOP
CJNE R0,#50,UP 循环50次,为1ms。
SJMP CON END
(2)
三角波参考程序。
ORG 0000H AJMP DACR ORG 0030H
;DPTR赋初值,指向DAC0832的口地址 ;置波形起点
;启动D/A转换 ;调整波形幅值 ;微调4个机器周期 10个机器周期,合20?s,
31
;每循环一次,共需
DACR:MOV DPTR,#7FFFH ;DPTR赋初值,指向DAC0832的口地址
MOV A, #0FFH
UP: INC A ;波形上升段
MOVX @DPTR,A ;启动D/A转换并参与延时
CJNE A, #50, UP ;上升段未完则继续。每上升一次延时5个机器周期、合10?s,
;故半个波形周期需要循环50次,合500?s=0.5ms
DOWN: DEC A ;上升段完成,立即转入波形下降段
MOVX @DPTR,A ;启动D/A转换并参与延时
CJNE A, #0, DOWN ;下降段未完继续
SJMP UP ;否则再次上升,不间断地输出三角波 END
5. 下图给出了某4相步进电动机的驱动电路。已知8031的晶振频率为fOSC?6MHz,请按下述要求编写步进电动机驱动程序:
(1)1P法励磁,步间软件延时10ms,连续正转; (2)2P法励磁,步间软件延时10ms,连续反转; (3)1P法励磁,步间软件延时10ms,正转48步后停止; (4)2P法励磁,步间软件延时10ms,反转96步后停止。
32
共分享92篇相关文档