注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
chenqinyao的个人空间 https://home.eeworld.com.cn/space-uid-74415.html [收藏] [复制] [分享] [RSS]
日志

【原创】我的uPD78F9210_AD函数例子

已有 849 次阅读2009-6-8 23:01 |个人分类:NEC|

/***********************************************************
函数功能:   AD转换函数
参数说明:   Ch  转换的通道 
ADM = | ADCS | 0 | FR2 | FR1 | FR0 | 0 | 0 | ADCE | 地址:FF80H, 复位后:00H, R/W
ADCS A/D 转换操作控制
  0  停止转换操作
  1  开始转换操作
FR2   FR1   FR0    参考电压         采样时间注          转换时间  *注参考Fxp 8M
  0    0     0      VDD>=4.5V          12/Fxp(1.5us)      36/Fxp (4.5us)               
  1    0     0      VDD>=4.0V          24/Fxp(3.5us)      72/Fxp (9.0us)                           
  1    1     0      VDD>=2.85V         96/Fxp(12.5us)     144/Fxp(18.0us)                                 
  1    0     1      VDD>=2.85V         48/Fxp(6us)        96/Fxp (12.0us)                                
  0    1     0      VDD>=2.85V         48/Fxp(6us)        72/Fxp (9.0us)                                
  0    0     1      VDD>=2.85V         24/Fxp(3us)        48/Fxp (6.0us)                                
  1    1     1      VDD>=2.7V          176/Fxp(22us)      224/Fxp(28.0us)                              
  0    1     1      VDD>=2.7V          88/Fxp (11us)      112/Fxp(14.0us)
ADCE 比较操作控制
  0  停止比较器操作
  1  使能比较器操作
ADCS   ADCE    A/D 转换操作
  0      0      停止状态(不存在直流电源消耗)
  0      1      转换等待模式(仅有比较器电源消耗)
  1      x      转换模式
  
ADS = | 0 | 0 | 0 | 0 | 0 | 0 | ADS1 | ADS0 |

ADS1    ADS0     模拟输入通道选择寄存器
   0       0              ANI0
   0       1              ANI1
   1       0              ANI2
   1       1              ANI3
10 位 A/D 转换结果寄存器(ADCR)地址:  FF18H, FF19H       复位后: 不确定    只读
          |---------------FF19H---------------|       |------------------------------FF18H---------------------------|
ADCR = | 0 | 0 | 0 | 0 | 0 | 0 | ADCR.9 | ADCR.8 | ADCR.7 | ADCR.6 | ADCR.5 | ADCR.4 | ADCR.3 | ADCR.2 | ADCR.1 | ADCR.0 |

***********************************************************/
INT16U AD_Converter( INT8U Ch )
{
    INT8U i;
   
    INT16U ADValue;
   
    ADM = 0x10;
   
    ADCE = 1;
   
    ADS = Ch;
   
    NOP;NOP;NOP;
    NOP;NOP;NOP;
    NOP;NOP;NOP;
   
    ADCS = 1;
   
    for( i=0; i<1; i++ )
    {
        ADIF = 0;
        
        while( !ADIF )
            NOP;
        
        ADValue = ADCR;        
    }
   
    ADCS = 0;
    ADIF = 0;
    ADCE = 0;
    return ( ADValue );
}

注意:相应的AD通道的IO口要设为输入模式,并禁止上拉
 
天勤开发网首发:javascript:;
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章