C8051F020学习笔记-ADC0.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C8051F020学习笔记-ADC0

三, 关于ADC0 ADC在PIC里面总算是完整的弄过一次了,但是基础还是很薄弱,尤其是转换时间的控制,而面对F020的ADC0,相关寄存器较多,所以做一个专题 C8051F020/1 的ADC0 子系统包括一个9 通道的可编程模拟多路选择器(AMUX0),一个可编程增益放大器(PGA0)和一个100ksps、12 位分辨率的逐次逼近寄存器型ADC, F020的ADC0只有一个逐次逼近的ADC,它能实现9路输入是因为它有一个9通道的多路选择器 AMUX0 。片上的特殊功能寄存器(简称SFR)有11个与ADC0的控制相关,它们是: AMUX0SL-AMUX0通道选择寄存器;AMX0CF-AMUX0配置寄存器; ADC0CF-ADC0配置寄存器;ADC0CN-ADC0控制寄存器; ADC0H-ADC0数据字MSB寄存器;ADC0L-ADC0数据字LSB寄存器; ADC0GTH-ADC0下限数据高字节寄存器;ADC0GTL-ADC0下限数据低字节寄存器; ADC0LTH-ADC0上限数据高字节寄存器;ADC0LTL-ADC0上限数据低字节寄存器; REF0CN-基准电压控制寄存器。 3.1 ADC0工作方式 ADC0 的最高转换速度为100ksps,其转换时钟来源于系统时钟分频,分频值保存在寄存 器ADC0CF 的ADCSC 位。 3.1.1 启动转换 有4 种转换启动方式,由ADC0CN 中的ADC0 启动转换方式位(AD0CM1,AD0CM0)的状态决定。转换触发源有: 1. 向ADC0CN 的AD0BUSY 位写1; 2. 定时器3 溢出(即定时的连续转换); 3. 外部ADC 转换启动信号的上升沿,CNVSTR; 4. 定时器2 溢出(即定时的连续转换)。 备注:(关于ADC0的开始转换,1,可以在软件里面设置,直接给AD0BUSY写1,然后直接输出转换结果。这种方式需要不断的扫描,不断的输出结果,似乎有点费劲。如果采用第三种方式,即用一个开关来控制ADC的启动,那样,在没有按键的情况下,ADC不需要扫描,或许可以用第二种或者第四种方式,我用一个按键来启动定时器的开始计数,技术满之后再启动ADC的转换。总之,除非处理芯片的主要目的就是为了AD转换,要不采用第一种方法只会显得有点笨。) 关于 ADC0CN AD0EN AD0TM AD0INT AD0BUSY AD0CM1 AD0CM0 AD0WINT AD0LJST 位7 位6 位5 位4 位3 位2 位1 位0 1 0 0 0 0 0 0 0 该寄存器可以位寻址,所以在清零的时候,可以直接写AD0INT 0就可以。 位7: AD0EN:ADC0 使能位 0:ADC0 禁止。ADC0 处于低耗停机状态。 1:ADC0 使能。ADC0 处于活动状态,并准备转换数据。 (在ACD0初始化里,该位肯定是被置高的。) 位6: AD0TM:ADC 跟踪方式位 0:当ADC 被使能时,除了转换期间之外一直处于跟踪方式。 1:由ADSTM1-0 定义跟踪方式。(该位设置为“0”) 位5: AD0INT:ADC0 转换结束中断标志,该标志必须用软件清‘0’。 0:从最后一次将该位清0 后,ADC0 还没有完成一次数据转换。 1:ADC 完成了一次数据转换。 (该位为标志位,可以用来查询,如果为1了,则说明ADC已经完成了一次转换,直接清零就ok) 位4: AD0BUSY:ADC0 忙标志位 读: 0:ADC0 转换结束或当前没有正在进行的数据转换。AD0INT 在AD0BUSY 的 下降沿被置‘1’。 1:ADC0 正在进行转换。 写: 0:无作用 1:若ADSTM1-0=00b 则启动ADC0 转换。 备注:(该位可以用来做启动指令,也可以用来做查询等待。While(! AD0BUSY)); 位3-2: AD0CM1-0:ADC0 转换启动方式选择位。 如果AD0TM 0: 00:向AD0BUSY 写1 启动ADC0 转换。 01:定时器3 溢出启动ADC0 转换。 10:CNVSTR 上升沿启动ADC0 转换。 11:定时器2 溢出启动ADC0 转换。 如果AD0TM 1: 00:向AD0BUSY 写1 时启动跟踪,持续3 个SAR 时钟,然后进行转换。 01:定时器3 溢出启动跟踪,持续3 个SAR 时钟,然后进行转换。 10:只有当CNVSTR 输入为逻辑低电平时ADC0 跟踪,在CNVSTR 的上升沿 开始转换。 11:定时器2 溢出启动跟踪,持续3 个SAR 时钟,然后进行转换。 (在这里,由于前面的AD0TM被设置为0,采用软件控制AD0BUSY启动转换,因此,这里写为“00”) 位1: AD0WINT:ADC0 窗口比较中断标志。该位必须用软件清0

文档评论(0)

gangshou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档