找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1338|回复: 5
打印 上一主题 下一主题
收起左侧

一个关于单片机ADC的小程序,P2八位只有低两位有变化 请大神帮忙看一下

[复制链接]
跳转到指定楼层
楼主
动手做了一个ADC的小试验,程序好像有点问题,P2八位只有低两位有变化,还有就是输出不应该是5V或0V吗?为什么我量P2的管脚会有1V到4V的变化。
模拟量输入P1.1,0到5V可变。
#include <STC12C5A60S2.H>
#include <intrins.h>
typedef unsigned char         uchar;
typedef unsigned int          uint;
sbit LED=P0^4;




void main ()
{
  uint i;
  P0=0XFF;
  LED=0;
  P1ASF=0Xff;
  ADC_CONTR=0X81;
  for(i=0;i<20000;i++);
  CLK_DIV=0X00;
  ADC_CONTR=0X89;
  EADC=1;
  EA=1;

  while(1);

}
void adc_zd() interrupt 5
{
   ADC_CONTR=0X81;

   P3=~((ADC_RES&0x03)<<6);

   P2=~ADC_RESL;
   ADC_CONTR=0X89;


}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2019-6-9 12:45 | 只看该作者
你的程序有缺陷,给你改了一下,你试试。



  1. #include <STC12C5A60S2.H>
  2. #include <intrins.h>

  3. typedef unsigned char  uchar;
  4. typedef unsigned int   uint;

  5. sbit LED=P0^4;

  6. void main ()
  7. {
  8.         uint i;
  9.         P1M1 = 0xFF; P1M0 = 0x00; //设置P1端口全部为高阻
  10.         P0=0XFF;
  11.         LED=0;
  12.         P1ASF=0Xff;  //所有通道设为模拟输入
  13.         ADC_RES = 0;   //AD数据寄存器高8位清空
  14.         ADC_RESL= 0;   //AD数据寄存器低2位清空
  15.         ADC_CONTR=0X81; //打开电源, 设置频道
  16.         for(i=0;i<20000;i++);  //延时
  17.         CLK_DIV=0X00; //用来配置CPU主频,默认值为0x00,不分频  //这句没有设置作用
  18.         ADC_CONTR=0X89;  //打开电源, 设置频道P1.1 //启动ad转换,置1为起动,转换结束后自动置0
  19.         AUXR1|=0x04; //AUXR1/ ADRJ=1 时 ADC_RESL是低位,高2位在ADC_RES上,
  20.         EADC=1;  //开ADC中断。
  21.         EA=1;    //开总中断。

  22.         while(1);

  23. }
  24. void adc_zd() interrupt 5
  25. {
  26.         ADC_CONTR=0X81;

  27.         P3=~((ADC_RES&0x03)<<6);

  28.         P2=~ADC_RESL;
  29.         ADC_CONTR=0X89;

  30. }
复制代码
回复

使用道具 举报

板凳
ID:493146 发表于 2019-6-9 23:12 | 只看该作者
谢谢你的帮助,又学了东西了,真心的感谢你。就还有一个地方不太明白妄不吝赐教
就是AUXR1|=0x04这个语句在此程序冲起什么作用?
回复

使用道具 举报

地板
ID:123289 发表于 2019-6-10 08:49 | 只看该作者
要学会看手册,手册都有,不稀奇。
回复

使用道具 举报

5#
ID:155507 发表于 2019-6-10 18:12 | 只看该作者
zcwjzwd 发表于 2019-6-9 23:12
谢谢你的帮助,又学了东西了,真心的感谢你。就还有一个地方不太明白妄不吝赐教
就是AUXR1|=0x04这个语句 ...

最重要的就是学会看数据手册,AUXR1|=0x04这个语句也已注释 解释很清楚



回复

使用道具 举报

6#
ID:493146 发表于 2019-6-11 20:32 | 只看该作者
谢谢你的赐教,初学者还有很长很曲折的路要走,你们就是我们黑夜里的一盏明灯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表