微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > AD口用作IO口(帮忙注释一下)

AD口用作IO口(帮忙注释一下)

时间:10-02 整理:3721RD 点击:
#include <hidef.h>           //工程通用的宏文件
#include "derivative.h"      //单片机硬件型号文件
/*************************************************************/
/*                        延时函数                           */
/*************************************************************/
void delayms(int ms)
{   
   int ii,jj;
   if (ms<1) ms=1;
   for(ii=0;ii<ms;ii++)
     for(jj=0;jj<1335;jj++);      
}
/*************************************************************/
/*                        PLL初始化                          */
/*************************************************************/
void INIT_PLL(void)
{   
   CLKSEL_PLLSEL=0;          
           
   PLLCTL_PLLON=0;
   SYNR=0x00|0x01;        
   REFDV=0x80 | 0x01;

   POSTdiv=0x00;     
   PLLCTL_PLLON=1;  
   _asm(nop);         
   _asm(nop);
   while(CRGFLG_LOCK==0);
   CLKSEL_PLLSEL =1;           
}
/*************************************************************/
/*                       主函数                              */
/*************************************************************/
void main(void)
{
  
  unsigned char LedCnt=0;
  INIT_PLL();   
  DDRB=0xff;   
  DDRA=0xff;     
  PORTA=0X00;     
  PORTB=0X00;   
  DDR1AD0=0X00;
  ATD0DIEN=0XFF;
  DisableInterrupts;   
  delayms(500);
  for(;;)
  {
    if(PT1AD0_PT1AD07)
    {        
      PORTB_PB0=0;      
      PORTA_PA0=0;     
    }
    else
    {
      PORTB_PB0=1;     
      PORTA_PA0=1;     
    }     
    delayms(500);   
  }
  
}

只会玩PIC,PIC中也要看芯片型号来确定是I/O还是A/D,具体根据芯片手册来决定
举两个例子,一个是16F87X系列,ADCON1 = 0x07,A口设置为I/O口.一个是16F88X系列,ANSEL = 0;A口为I/O口...ANSELH = 0;B口为I/O口.不看芯片手册的伤不起,其他种类的单片机应该也差不多的方式,主要看芯片手册.

唉,好吧。。

有个专门的寄存器 可以把IO口数字化的 每款PIC是不一样的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top