⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.c

📁 一些用于电话管理的pc机下位机程序
💻 C
字号:
//程序实现A/D转换功能,A/D采用中断方式//程序实现A/D转换功能,A/D采用中断方式。
 
#include <p18cxxx.h>
#include  <adc.h>
union                   adres
{
         int              y1;
         unsigned  char  adre[2];
}adresult;                                        //定义一个共用体,用于存放A/D转换的结果
 
//unsigned   char i;
//unsigned   int    j;
 
void  InterruptHandlerHigh(void);
 
//A/D转化初始化子程序
void  ad(unsigned  char chunnel )
{
         INTCON=0X00;                   //禁止总中断和外围中断
         ADCON0=chunnel<<2+0x01;        //选择A/D通道,打开A/D转换器
                                        
         ADCON1=0X0;                    //且把RAx口设置为模拟量输入方式   
                        
         ADCON2=0X2E;                   //转换结果左移,及ADRESL寄存器的低6位为"0"      
               												  
         PIR1bits.ADIF=0;               //清除A/D转换标志
         PIE1bits.ADIE=1;              	//A/D转换中断允许
         INTCONbits.PEIE=1;         	 //外围中断允许
         IPR1bits.ADIP=1;              //B口变位中断高优先级
         RCONbits.IPEN=1;              //使能中断优先级
         TRISA=0xFF;              		 //设置为输入方式
         INTCONbits.GIE=1;             //总中断允许
         ADCON0bits.GO=1;              //启动A/D转换
}
 
//高优先级中断向量
#pragma code InterruptVectorHigh=0x08
void  InterruptVectorHigh (void)
{
  _asm
    goto InterruptHandlerHigh             //跳到中断程
  _endasm
}
 
//高优先级中断服务程序
#pragma code
#pragma interrupt InterruptHandlerHigh
void  InterruptHandlerHigh ()
{
	while(PIR1bits.ADIF){
         PIR1bits.ADIF=0;                    //清除中断标志
         //adresult.adre[0]=ADRESL;
         //adresult.adre[1]=ADRESH;            //读取并存储A/D转换结果,A/D转换的结果通过共
         TXREG=ADRESH;                       //To RS232                
	}
}  
 
//主程序
void main(void)
{
         ad(1);                       //A/D转换  

}

⌨️ 快捷键说明

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