70 likes | 212 Views
微机控制 实验一. A/D 转换实验. 实验内容. A/D 转换实验. 已知有 ADC0809 模数转换器,有一模拟电压,电压高低由电位器控制 要求: 1 、通过接线令 ADC0809 的地址为 0F000H 2 、使用 0809 上的 IN0 采集模拟量 3 、将 0809 转换的结果的 二进制数值用 8 位 LED 显示. ADC0809. 总线式电路连接. 数据总线. 数据线. 245. 地址总线. 地址线. CPU. 373. 控制总线. 控制线. 245. 地址译码. 内存模块. 模块 1. 模块 2. 模块 N.
E N D
微机控制 实验一 A/D转换实验
实验内容 • A/D转换实验 已知有ADC0809模数转换器,有一模拟电压,电压高低由电位器控制 要求: 1、通过接线令ADC0809的地址为0F000H 2、使用0809上的IN0采集模拟量 3、将0809转换的结果的二进制数值用8位LED显示
总线式电路连接 数据总线 数据线 245 地址总线 地址线 CPU 373 控制总线 控制线 245 地址译码 内存模块 模块1 模块 2 模块 N … 问题: 在总线模式下,可供我们直接使用的通用IO口还剩有哪些?
初始化各个变量 启动AD 向ADC0809写入通道号 启动AD转换 等待EOC 等待转换完成 no EOC为1? yes 取转换结果 从ADC0809取出转换结果 显示转换结果 显示结果
mov dptr,#1000h • mov a,#55h • movx @dptr,a • 上面3调语句的C语言可以表示如下 • #define W_DATA XBYTE[0x1000] • W_DATA=0X55; • 在使用外部总线的时候,数据 地址和控制信号是直接按照规定的时序输出高低电平的,所以不用你管,当然你必须要满足时序工作如何理解#define XBYTE ((unsigned char volatile xdata * )) • code 以 MOVC @A+DPTR 读取的程序内存 • data 可以直接存取的内部数据存储器 • idata 以 Mov @Rn 存取的内部数据存储器 • bdata 可以位寻址(Bit Addressable)的内部存储器 • xdata 以 MOVX @DPTR 存取的外部数据存储器 • pdata 以 MOVX @Rn 存取的外部数据存储器 • sfr 特殊功能缓存器(Special Function Register) • 语法 • sfr my_sfr = location; (location 范围从 0x80 ~ 0xFF) • 范例 • sfr P0 = 0x80; • 指定绝对地址的变量 • 在单一模块内可以使用下面的语法宣告 • [memory_space] type variable_name _at_ location • 范例 • pdata char my_pdata _at_ 0x80;