دوستان سلام
من می خوام یه برنامه ی ساده بنویسم که کانال 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; } } }
دیدگاه