دوستان سلام
من می خوام یه برنامه ی ساده بنویسم که کانال an0میکرو pic18f452 در حالتی که با زمان نمونه برداری 16us و ولتاژ مرجعی برابر با ولتاژ تغذیه تنظیم شده است از ولتاژورودی به کانال که با یک پتانسیومتر 10کیلو اهم تنظیم می شود نمونه برداری کند و اگر مقدار هر نمونه از 125 بیشتر باشد الای دی شماره 1 را روشن و ال ای دی شماره ی 2 رو خاموش کند و اگر کمتر از 125 بود بر عکس این قضیه را انجام دهد.اما مشکل اینجاست که برنامه کار نمیکنه و با تغییر مولتی ترن هیچکدام از ال ای دی ها روشن نمیشن.دوستان اگر بتونیین کمکم کنید ممنون میشم.برنامه به صورت زیره.
من می خوام یه برنامه ی ساده بنویسم که کانال an0میکرو pic18f452 در حالتی که با زمان نمونه برداری 16us و ولتاژ مرجعی برابر با ولتاژ تغذیه تنظیم شده است از ولتاژورودی به کانال که با یک پتانسیومتر 10کیلو اهم تنظیم می شود نمونه برداری کند و اگر مقدار هر نمونه از 125 بیشتر باشد الای دی شماره 1 را روشن و ال ای دی شماره ی 2 رو خاموش کند و اگر کمتر از 125 بود بر عکس این قضیه را انجام دهد.اما مشکل اینجاست که برنامه کار نمیکنه و با تغییر مولتی ترن هیچکدام از ال ای دی ها روشن نمیشن.دوستان اگر بتونیین کمکم کنید ممنون میشم.برنامه به صورت زیره.
کد:
#include<p18f452.h>
#include<delays.h>
#pragma config OSC = HS , OSCS = OFF
#pragma config PWRT = OFF,BOR = ON , BORV = 45
#pragma config WDT = OFF, LVP = OFF
#pragma config DEBUG = OFF , STVR = OFF
void main()
{
unsigned int ALI;
unsigned int MOSI;
unsigned int ALI1;
TRISDbits.TRISD0=0;
TRISDbits.TRISD1=0;
TRISAbits.TRISA0=1;
ADCON0=0x81;
ADCON1=0XCE;
while(1)
{
Delay1KTCYx(1);
ADCON0bits.GO=1;
while(ADCON0bits.DONE==1);
ALI=ADRESL;
MOSI=ADRESH;
MOSI=MOSI<<8;
ALI1=MOSI+ALI;
Delay1KTCYx(250);
if(ALI1<125)
{
PORTDbits.RD0=1;
PORTDbits.RD1=0;
}
else
{
PORTDbits.RD0=0;
PORTDbits.RD1=0;
}
}
}


دیدگاه