اگه برنامتو نوشتی با IDLE یه تستی بزن ببین چطوریه
اما اگه نه می تونی بجای دستورات بسکام از ریجیستر ها استفاده کنی
اگه کلا می خوای با C هم می تونی بنویسی
برای C از کدویژن استفاده کن دیگه کدو بهت میده شما فقط استفاده کن

---------------
ریجیستر ها
کد:
ADMUX – ADC Multiplexer Selection Register
کد:
1-Bit 7:6 – REFS1:0: Reference Selection Bits
اینا مشخص می کنن که مرجع ADC چی باشه
0 -> AREF
1 -> AVCC
3 -> 2.56 داخلی
که چون باید 2 بیت آخر این ریجیستر باشن باید 6 بیت به چپ شیفت داده بشن یعنی تبدیل میشن به
0 و 64 و 192
کد:
2-Bit 5 – ADLAR: ADC Left Adjust Result
اگه اینو یک کنی طرز قرار گیری داده ها در ریجیستر هایی که نتایج ADC رو نشون میدن برعکس میشه
بیشتر مال موقعی هست که 8 بیتی از ADC استفاده می شه و در نتیجه فقط یک ریجیستر خونده بشه
شما اینو صفر بزار برای اطلاع بیشتر به دیتاشیت مراجعه کن مثال زده
کد:
3-Bits 4:0 – MUX4:0: Analog Channel and Gain Selection Bits
این پایه اندازگری و یا گین رو در مود Diff مشخص می کنه
که شما در مود معمولی داری از ADC استفاده می کنی
کلا 0 بدی پایه صفر 1 بدی پایه 1 و ... 7 بدی پایه هفتم رو اندازه گیری می کنه
۰
پس کلا این ریجیستر 3 نوع چیزو کنترل می کرد دومی که صفر شد اولی رو که انتخاب کردی باید توی یه متغییر ذخیرش بکنی
بعد با شماره پایه ای که می خوای اندازگیری کنی جمع کنی و به این ریجیستر بدی
مثلا اگه پایه 3 رو میخوای اندازه بگیری و مرجع هم AVCC هست پس میشه
----
کد:
ADCSRA – ADC Control and Status Register A
کد:
1-Bit 7 – ADEN: ADC Enable
این بیت که 1 بشه ADC فعال میشه
(مثل start adc توی بسکام)
کد:
2-Bit 6 – ADSC: ADC Start Conversion
این بیت که یک بشه شروع به اندازه گیری می کنه
کد:
3- Bit 5 – ADATE: ADC Auto Trigger Enable
این مال وقتی هست که ADC قرار هست خودکار اجرا بشه کاری بهش نداریم برای اطلاع بیشتر به دیتاشیت مراجعه کنید
کد:
4-Bit 4 – ADIF: ADC Interrupt Flag
این مشخص می کنه که اینتراپت ADC رخ داده و داده های جدید بدست اومدن وقتی بردار وقفه اجرا بشه این بیت صفر می شه
کد:
5-Bit 3 – ADIE: ADC Interrupt Enable
وقتی این بیت یک بشه وقفه ADC فعال میشه
کد:
Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits
این بیت ها کلاک ADC رو تعیین می کنن
2 به توان مقدار این ریجیستر تقسیم میشه بر کلاک اصلی و تبدیل میشه به کلاک ADC
مثلا اگه 16 مگا هرتز باشه کلاک اصلی و این بیت ها برابر 4 باشن
2 به توان 4 میشه 16
16 مگا تقسیم بر 16 میشه 1 مگا
پس ADC با سرعت 1 مگاهتز اجرا میشه
کد:
ADCL and ADCH – The ADC Data Register
این دوتا ریجیستر هم داده های ADC رو ذخیره می کنن
کد:
SFIOR – Special FunctionIO Register
این رجیستر هم کاربری برای ما نداره برای اطلاعات بیشتر به دیتاشیت
توی C که براش کلی مثال هست اما اگه می خوای توی بسکام از اینا استفاده کنی یه مثال برات می نویسم
کد:
$regfile = "m8def.dat"
$crystal = 16000000
Const Adc_ref = &H40 'AVCC
Enable Interrupts
On Adc Adc_isr
Dim Adc_val As Word
Admux = Adc_ref 'set Ref
Adcsra = &H8F 'set clock 125KHz - enable adc - enable adc int
Do
Admux = Adc_ref + 3 'get adc3
Waitus 10 'wait to stable input
Adcsra = Adcsra Or &H40 'start convert
Config Powermode = Adcnoise
'adc_val ready
Loop
End
Adc_isr:
Dim T As Word
Adc_val = Adcl
T = Adch
Shift T , Left , 8
Adc_val = Adc_val + T
Return