微机原理与接口实验 4.4 模数转换-ADC0809 赖晓铮
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SET R1, 80H
HLT OUTA R0, PORT0 OUT R0, PORT0 IN R2, PORT0
设置373锁存器,地址[1000xxxx]
OUTA R1, PORT0 OUT R2, PORT0 JMP 04H
(四)模数转换(ADC0809) 实验
思考题:
●
请把本实验的微程序版“CPU+ADC0809”电路改成硬布线版 和流水线版“CPU+ADC0809”电路,并且运行本实验步骤所 示的ADC0809测试程序。请问上述程序在硬布线或流水线版 本中需要修改么? 若需要,请修改并测试。
(四) 模数转换(ADC0809)实验
实验目的:
● 理解模数转换器ADC0809的特征和工作原理。 ●
掌握使用ADC0809芯片进行模拟数据采集和模数转换的方法。
实验内容:
● 构建一个“CPU+ADC0809”的微型计算机系统及编程相应的
机器语言程序,实现通过ADC0809芯片对输入的模拟电压进 行采集,并转换成相应的8位字节数据的功能。该模数转换 结果以LED形式显示。
XORI RA, IMM; (RA)⊕IMMRA
功能 (PORTx)RA (RA)PORTx (RA)PORTx
I7 I6 I5 I4 0100 0101 0101
I1 I0 PORTx 0/PORTx 1/PORTx
三、存储器及堆栈操作指令:
汇编语言 LAD RA, [ADDR]; 功能 [ADDR]RA I7 I6 I5 I4 1000 I3 I2 RA ADDR RA RA ADDR RA I1 I0 0/0
重启过程(跳出“断点”)
1) 时钟信号CLK接开关MANUAL,手 动令复位信号端#RESET的状态 “101”变化,即重启完成, 跳出“断点”继续执行 。
注:跳出“断点”后,CPU进入HLT指令的 后续下一条指令的取指周期。
ADC0809应用电路图
模数转换芯片ADC0809结构图
模数转换芯片ADC0809工作时序图
JMPR RB; JC ADDR;
JCR RB;
(RB)PC IF CF=1, ADDRPC IF CF=1, (RB)PC IF ZF=1, ADDRPC IF ZF=1, (RB)PC IF SF=1, ADDRPC IF SF=1, (RB)PC
0001 0001
0001
RB 0/0
实验步骤:
1) ADC0809测试程序test_0809.asm存放在实验4.4项目的子文 件夹test里,其功能是CPU设置并启动ADC0809芯片,把 ADC0809通道A输入的模拟电压转换成一个8位字节数据(该 数据与输入模拟电压线性相关),并且锁存到8位LED灯显 示。具体代码如后页所示。 2) 编译、烧写、自动运行上述test_0809源程序,观察 74LS373锁存的转换结果(8位数据),通过本实验中列举 的公式换算成理论电压值,与分压电阻上并联的电压表显 示的实际电压数值进行对比。(编译和烧写asm文件的方法 参见“2.6存储器实验:ROM批量导入数据”) 3) 不断调整分压电阻的分压比,观测输入模拟电压的最大值、 最小值和中间值的ADC0809输出的转换结果(8位数据); 在输入模拟电压逐渐变大或变小的过程中,观察ADC0809输 出的转换结果(8位数据)是否呈现一致的线性变化趋势。
五、算术逻辑运算指令:
汇编语言格式 ADD RA, RB; 功能 (RA) +(RB)RA I7 I6 I5 I4 1101 1101 1100 1100 1110 1110 1111 1111 1011 1011 I3 I2 RA RA IMM RA RA IMM RA RA IMM RA RA IMM RA RA IMM I1 I0 RB 0/0 RB 0/0 RB 0/0 RB 0/0 RB 0/0
test_0809
汇编助记符 SET R0, E2H 注释 设置ADC0809(地址[1110xxxx]) 的通道A (M地址:机器指令) 00H:00110000 01H:11100010 02H:00110100 03H:10000000 04H:00000001 选择 0809 通道A 输出R0只是为了触发0809写信号 保存ADC转换结果(ADC0809时钟 ADCLK至少是CPU时钟CLK的20 倍,才能保证此处OUT和IN指令间 ADC转换完成,否则要填充NOP) 选择 373锁存器 ADC转换结果锁存373显示 05H:01010010 06H:01010000 07H:01001000 08H:01010110 09H:01011000 0AH:00010000 0BH:00000100
RB
JZ ADDR;
JZR RB;
0001
0001
1/0 ADDR 1/0 1/1 ADDR 1/1
0/0
RB
JS ADDR;
JSR ຫໍສະໝຸດ BaiduB;
0001
0001
0/0
RB
五、算术逻辑运算指令:
汇编语言 RLC RA; LLC RA; RRC RA; LRC RA; 汇编语言 INC RA; DEC RA; NOT RA; THR RA; 功能 (RA)右逻辑移位 (RA)左逻辑移位 (RA)右循环移位 (RA)左循环移位 功能 (RA)+1RA (RA)-1RA #(RA)RA (RA)RA I7 I6 I5 I4 1010 1010 1010 1010 I7 I6 I5 I4 0010 0010 0010 0010 I3 I2 RA RA RA RA I3 I2 RA RA RA RA I1 I0 0/0 1/0 0/1 1/1 I1 I0 0/0 0/1 1/0 1/1
微机原理与接口 实验系列 一、IO端口扩展(8255) 二、定时器/计数器(8253) 三、串口通信(8251) 四、模数转换(ADC0809) 五、数模转换(DAC0832) 六、液晶屏显示(LCD1602) 七、中断控制器(8259) 赖晓铮 博士
华南理工大学 laixz@scut.edu.cn QQ: 68046508
二、寄存器及I/O操作指令:
汇编语言 MOV RA, RB; SET RA, IMM; 注释 (RB)RA IMMRA I 7 I6 I5 I4 0110 0011 I3 I2 RA RA IMM I3 I2 RA RA RA I1 I0 RB x/x
汇编语言 IN RA, PORTx; OUT RA, PORTx; OUTA RA, PORTx;
ADDI RA, IMM; (RA) +IMMRA SUB RA, RB; SUBI RA, IMM; AND RA, RB; (RA)-(RB)RA (RA)-IMMRA (RA)∧(RB)RA
ANDI RA, IMM; (RA)∧IMMRA OR RA. RB; ORI RA, IMM; XOR RA, RB; (RA)∨(RB)RA (RA)∨IMMRA (RA)⊕(RB)RA
IN
SET SOP (INC/DEC/NOT/THR) JMP/JMPR/Jx/JxR NOP/HLT
1100
1011 1010 1001 1000
SUB/SUBI
XOR/XORI SHT (RLC/ LLC/ RRC/ LRC) STO/PUSH LAD/POP
一、系统指令:
汇编语言 NOP; HLT; IRET; 功能 无操作(延时4个T) 停机(断点) 中断返回 BP_PCPC;BP_PSWPSW I7 I6 I5 I 4 0000 0000 0111 I3 I2 0/0 0/0 0/0 I1 I0 x/0 x/1 x/x
微程序版“CPU+ADC0809”电路图
初始化过程
1) 时钟信号CLK接手动开关MANUAL,启动仿真,使能复位信号 #RESET=0; 2) 手动按钮MANUAL开关“010”,然后令信号#RESET=1.
注:初始化完成后,若时钟信号CLK继续接开关MANUAL,则CPU进入手动模式, 手动MANUAL开关,生成时钟信号CLK,程序单步执行;若时钟信号CLK接 信号源AUTO-CLK(主频10Hz),则CPU进入自动模式,程序自动运行, 直到HLT指令的“断点”处暂停。
附录:CPU指令集(OP码表)
OP码 ( I7 I 6 I 5 I 4 ) 0111 0110 0101 指令助记符
IRET
MOV OUT/OUTA
OP码 ( I 7 I6 I5 I4 ) 1111 1110 1101
指令助记符
OR/ORI
AND/ANDI ADD/ADDI
0100
0011 0010 0001 0000
POP RA, [RB]; STO RA, [ADDR];
PUSH RA, [RB];
[RB]RA (RA)[ADDR]
(RA)[RB]
1000 1001
1001
RB 0/0
RB
四、跳转系列指令:
汇编语言 JMP ADDR; 功能 ADDRPC I7 I6 I 5 I4 0001 I 3 I2 0/0 ADDR 0/0 0/1 ADDR 0/1 I1 I0 0/0