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

2019-07-15 23:56发布

#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);   
  }
  
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
PATCC
1楼-- · 2019-07-16 01:31
只会玩PIC,PIC中也要看芯片型号来确定是I/O还是A/D,具体根据芯片手册来决定
举两个例子,一个是16F87X系列,ADCON1 = 0x07,A口设置为I/O口.一个是16F88X系列,ANSEL = 0;A口为I/O口...ANSELH = 0;B口为I/O口.不看芯片手册的伤不起,其他种类的单片机应该也差不多的方式,主要看芯片手册.
wenshuai536
2楼-- · 2019-07-16 04:05
 精彩回答 2  元偷偷看……
hobbye501
3楼-- · 2019-07-16 08:57
有个专门的寄存器 可以把IO口数字化的 每款PIC是不一样的

一周热门 更多>