历史上的今天
今天是:2024年09月04日(星期三)
2020年09月04日 | pic多路adc 中断方式
2020-09-04 来源:eefocus
/*
* File: main.c
* Author: sm116
*
* Created on June 12, 2017, 9:27 AM
*/
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled)ON
#pragma config PWRTE = ON // Power-up Timer Enable (PWRT enabled)ON
#pragma config MCLRE = ON // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = ON // Flash Program Memory Code Protection (Program memory code protection is enabled)ON
#pragma config CPD = ON // Data Memory Code Protection (Data memory code protection is enabled)
#pragma config BOREN = SBODEN // Brown-out Reset Enable (Brown-out Reset controlled by the SBOREN bit in the BORCON register)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
// CONFIG2
#pragma config WRT = ALL // Flash Memory Self-Write Protection (000h to FFFh write protected, no addresses may be modified by EECON control)ALL
#pragma config VCAPEN = OFF // Voltage Regulator Capacitor Enable (All VCAP pin functionality is disabled)
#pragma config PLLEN = ON // PLL Enable (4x PLL enabled)
#pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = ON // Low-Voltage Programming Enable (Low-voltage programming enabled)
#define _XTAL_FREQ 32000000
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
#include
#include
#include
#include
#include
#include
#include
unsigned int batter_ad=0;
unsigned int bat=0;
void init_system(void) // 时钟
{
OSCCON =0xf0;//0xF0;//0xf3;//0x6B; //内部时钟32m/8M/4M
WDTCON = 0x1f; //看门狗周期32S
}
void init_gpio(void) // 端口
{
TRISAbits.TRISA2=1;
ANSELAbits.ANSA2=1;
TRISAbits.TRISA3=1;
ANSELAbits.ANSA3=1;
}
void init_adc(void)
{
ADCON0=0X0b ; //默认采集的
ADCON1=0XE0;// FOSC/64 右对齐参考电压 VDD
PIE1bits.ADIE=1;
PIR1bits.ADIF=0;
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
}
unsigned int get_ad(unsigned char n)
{
unsigned int value=0;
ADCON0 = n ;
ADCON1=0XE0;// FOSC/64 右对齐参考电压 VDD
__delay_us(5);
// Delay_ms(20);//致命延时3天没找到问题 分时调用,暂时不用
// ADCON0bits.ADON=1;//在定时器0中断中
ADCON0bits.GO=1;
while(ADCON0bits.GO);
value=ADRESH *256 + ADRESL;
return value;
}
void interrupt ISR(void) // isr
{
if(ADIF)
{
ADIF=0;
if( ADCON0==0X09)//在中断中实际的adcon0的GO 是0 所以是配置ADCON0-2
{
batter_ad=(ADRESH<<8)+ADRESL; //存放ad值
ADCON0=0X0F; //打开下一次要用的通道
ADCON0bits.GO=1;//启动转换,不然只转化一次
}
if( ADCON0==0X0d)
{
bat=(ADRESH<<8)+ADRESL;
ADCON0=0X09;
ADCON0bits.GO=1;
}
}
}
void main()
{
init_system();
init_gpio();
init_adc();
while(1)
{
//bat=get_ad(0X0B);
//batter_ad=get_ad(0X0f);
//bat=batter_ad;
}
}
史海拾趣
|
第一节: 心情和时钟 说实话我能够使用的单片机不多,我总是以为无论什么单片机都能开发出好的产品。 前些年用51,总是向各位大大学习,无休止的索取,在网上狂览一通。心里感激的同时也想奉献一些,可是我会什么?后来使用avr(公司要求)还是 ...… 查看全部问答> |
|
安全监控系统常见的故障现象在一个监控系统进入调试阶段、试运行阶段以及交付使用后,有可能出现这样那样的故障现象,如:不能正常运行、系统达不到设计要求的技术指标、整体性能和质量不理想,亦即一些软毛病。这些问题对于一个安防系统工程项目来 ...… 查看全部问答> |
|
原来在windows mobile 6.0上开发了个应用程序,现在想移植到wince6.0 的PND上(找别人买的,好象没有提供SDK),不知该如何做,我用VS2005,只能选择mobile 6.0的开发环境。我想在在这个pnd上开发程序,并能在其模拟器运行与调试… 查看全部问答> |
|
爱晶电子 基于ENC28J60的PIC以太网开发板(PIC实验板/PIC开发板) ¥450 http://item.taobao.com/auction/item_detail-db2-cdaacf2253921bc4ab5b5d41b991e651.jhtml 小新电子 PIC18F97J60 以太网开发板 一 口 价: 298.00元 http:/ ...… 查看全部问答> |
|
最近做一个项目,把两个现有设备并凑到一起。两个设备CPU需要通信,所有接口都有其他用途,只剩下一个Jtag,有没有办法使用Jtag进行通信?系统是基于Linux的,想不重写驱动就可以通信,不知有没有可能,本人对Jtag没什么了解,望达人指教。… 查看全部问答> |
|
【VxWorks5.x -->VxWorks6.x 移植问题】 大家好,谁有没有做过 PPC的BSP 从 5.X ---> 6.X 的移植啊? 我所知道的是,从6.x对5.X的支持是兼容的,那么我就先把 5.X 的BSP文件夹 如 ppc_myself_XXX 放到 h/config/ 下,然后新建立 BSP 工程,进行编译,可是编译的时候,发现ERROR超多啊 ...… 查看全部问答> |
|
103系列的好用的USB iap现在挪到105下不好用了。 对这个USB很不了解。 现在哪里能找到基于USB-OTG的USB iap例程? 哪位能分享一下例程不胜感激… 查看全部问答> |




