سلام چند تا سوال درباره برنامه زیر داشتم دوستان نظرشونو بگن :applause: :NO: 
این برنامه توی کتاب علی کاهه هست
1)این حلقه بینهایت کارش تو برنامه چیه؟
2) زمان 65 میلی ثانیه دقیقا از کجا اومده؟ (با تقسیم فرکانس 4مگا بر 1024 و معکوس کردن این عدد به دست نمیاد)
3)اگر بخوایم این برنامه رو با ال سی دی خود بسکام شبیه سازی کنیم باید دقیقا چه کارهایی رو انجام بدیم؟(نتونستم این کار رو بکنم)
البته سوالای دیگه هم دارم ولی الان دیگه خجالت میکشم بپرسم ان شا الله تو پستهای بعدی :icon_razz: :smile:

این برنامه توی کتاب علی کاهه هست
$regfile = "m32def.dat"
'We use internal osc 4000000 for atmega32
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = _
Portc.4 , E = Portd.2 , Rs = Portd.3
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto
Start Adc
Config Timer0 = Timer , Prescale = 1024
Enable Interrupts
Enable Timer0
On Timer0 Temp_sample
Start Timer0
Dim Sample As Word
Dim Temp As Word
Dim Temp_final As Integer
Dim Sum As Integer
Deflcdchar 0 , 24 , 24 , 32 , 32 , 32 , 32 , 32 , 32 '' sign -> ('
Cursor Off
Cls
Do
Loop
End 'end program
Temp_sample:
Incr Sample 'incr sampling counter
Temp = Getadc(0) 'read adc(0) every 65ms
Sum = Sum + Temp 'sum the sample data
If Sample = 15 Then '20 samples
Sample = 0 'reset sample counter
Stop Timer0 'stop timer to calculation
Sum = Sum / 15 'mean calculation
Sum = Sum - 558 'decrementing offset
Temp_final = Sum / 2 'every 10mv is almost 2 step of adc (adc step=5/1023=4.88mv)
Select Case Temp_final
Case Is =< 10 : 'compare temperature
Home L
Lcd " Low "
Case 11 To 34 : 'compare temperature
Home L
Lcd " Normal "
Case Is >= 35 : 'compare temperature
Home L
Lcd " High "
End Select
Home
Lcd Temp_final ; Chr(0) ; "C " 'show temperature
Start Timer0
Sum = 0
End If
Return
'We use internal osc 4000000 for atmega32
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = _
Portc.4 , E = Portd.2 , Rs = Portd.3
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto
Start Adc
Config Timer0 = Timer , Prescale = 1024
Enable Interrupts
Enable Timer0
On Timer0 Temp_sample
Start Timer0
Dim Sample As Word
Dim Temp As Word
Dim Temp_final As Integer
Dim Sum As Integer
Deflcdchar 0 , 24 , 24 , 32 , 32 , 32 , 32 , 32 , 32 '' sign -> ('

Cursor Off
Cls
Do
Loop
End 'end program
Temp_sample:
Incr Sample 'incr sampling counter
Temp = Getadc(0) 'read adc(0) every 65ms
Sum = Sum + Temp 'sum the sample data
If Sample = 15 Then '20 samples
Sample = 0 'reset sample counter
Stop Timer0 'stop timer to calculation
Sum = Sum / 15 'mean calculation
Sum = Sum - 558 'decrementing offset
Temp_final = Sum / 2 'every 10mv is almost 2 step of adc (adc step=5/1023=4.88mv)
Select Case Temp_final
Case Is =< 10 : 'compare temperature
Home L
Lcd " Low "
Case 11 To 34 : 'compare temperature
Home L
Lcd " Normal "
Case Is >= 35 : 'compare temperature
Home L
Lcd " High "
End Select
Home
Lcd Temp_final ; Chr(0) ; "C " 'show temperature
Start Timer0
Sum = 0
End If
Return
1)این حلقه بینهایت کارش تو برنامه چیه؟
2) زمان 65 میلی ثانیه دقیقا از کجا اومده؟ (با تقسیم فرکانس 4مگا بر 1024 و معکوس کردن این عدد به دست نمیاد)
3)اگر بخوایم این برنامه رو با ال سی دی خود بسکام شبیه سازی کنیم باید دقیقا چه کارهایی رو انجام بدیم؟(نتونستم این کار رو بکنم)
البته سوالای دیگه هم دارم ولی الان دیگه خجالت میکشم بپرسم ان شا الله تو پستهای بعدی :icon_razz: :smile:
دیدگاه