main.c

来自「飞 思 卡 尔 s19 简单 a d 中断」· C语言 代码 · 共 55 行

C
55
字号
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"




  word  AD_wData[8]=0;
void AD0_Init(void)	//AD初始化
{
     //控制寄存器2:    上电,标志位快速清零,开中断
     ATD0CTL2  = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE_MASK); 
     //控制寄存器3:转换序列长度为3  //FIFO模式
     ATD0CTL3  = (ATD0CTL3_S8C_MASK);//|ATD0CTL3_S1C_MASK);//|ATD0CTL3_FIFO_MASK);
	 //控制寄存器4:                  AD_CLK(0.5M~2M)=Bus_CLK/(2/PR+1)  24M/2/(7+1)=1.5M
     //ATD0CTL4  = (ATD0CTL4_SRES8_MASK|ATD0CTL4_PRS2|ATD0CTL4_PRS1_MASK|ATD0CTL4_PRS0_MASK);
     ATD0CTL4  = (ATD0CTL4_PRS2|ATD0CTL4_PRS1_MASK|ATD0CTL4_PRS0_MASK);

	 //控制寄存器5:
     ATD0CTL5  = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK|ATD0CTL5_MULT_MASK);
	
     ATD0DIEN=0x00;   // 禁止数字输入缓冲
}

      void interrupt 22 Int_AD0(void)
{
  AD_wData[0] = ATD0DR0;   //将结果寄存器中的值存放到数组中
  AD_wData[1] =ATD0DR1;   //将结果寄存器中的值存放到数组中
  AD_wData[2] =ATD0DR2;   //将结果寄存器中的值存放到数组中
  AD_wData[3] = ATD0DR3;
  AD_wData[4] = ATD0DR4;
  AD_wData[5] = ATD0DR5;
  AD_wData[6] = ATD0DR6;
  AD_wData[7] =ATD0DR7;  
} 


void main(void) {
 AD0_Init() ;
 DDRB=0XFF;
    PORTB=0XFF;
  /* put your own code here */
  EnableInterrupts;

  for(;;) { 
  int i ;
  for(i=0;i<8;i++){
  if (AD_wData[i]>80) PORTB=(char) AD_wData[i];
  }
  
  
  } /* wait forever */
  /* please make sure that you never leave this function */
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?