سلام به همه دوستان موجود در eca :mrgreen:
من یه برنامه برای کنترلر rgb نوشتم توی یه جاش گیر کردم
این برنامشه
[code=qbasic]$regfile = "m8def.dat"
$crystal = 8000000
'________________________________ADC & PWM______________________________________
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Down , Prescale = 1
'________________________________Variables___ ___________________________________
Dim R As Word
Dim G As Word
Dim B As Word
'____________________________________________ ___________________________________
Config Int0 = Falling
On Int0 _int0
Enable Int0
Enable Interrupts
Dim A As Byte
Do
Waitms 200
While A = 0
Start Adc
R = Getadc(0)
G = Getadc(1)
B = Getadc(2)
R = R / 3.99
G = G / 3.99
B = B / 3.99
Pwm1a = R
Pwm1b = G
Ocr2 = B
Wend
'=================
While A = 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 0
B = 0
R = 255
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 60
R = 255
B = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 255
R = 255
B = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 255
R = 0
B = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 255
B = 15
R = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
R = 255
B = 50
G = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
R = 100
B = 110
G = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
B = 255
R = 0
G = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
R = 255
G = 255
B = 255
Wait 1
Wend
'=================
While A = 2
R = 100
G = 0
B = 0
Do
Pwm1a = R
Pwm1b = G
Ocr2 = B
Decr R
Incr G
Waitms 170
Loop Until G = 100
R = 0
G = 100
B = 0
Do
Pwm1a = R
Pwm1b = G
Ocr2 = B
Decr G
Incr B
Waitms 170
Loop Until B = 100
R = 0
G = 0
B = 100
Do
Pwm1a = R
Pwm1b = G
Ocr2 = B
Decr B
Incr R
Waitms 170
Loop Until R = 100
Wend
'=================
Loop
End
_int0:
Incr A
If A = 3 Then A = 0
Return[/code]
مشکلش اینه که زمانی که من میکرو سوییچ رو(که به اینتراپت وصله) برای تغغیر حالت افکت led ها فشار میدم به خاطر وجود wait هایی که دو دوتا افکت آخر هست کنترلر دیر دستور رو انجام میده و تا زمانی که یک دور کامل افکت تموم نشه ازش خارج نمیشه و به افکت بعدی نمیره ولی من می خوام به محض فشردن سوییچ افکت عوض شه حالا شما یه لطفی بکنید و بگید کجای برنامرو تغیر بدم(شرمنده زیاد زریدم
)
من یه برنامه برای کنترلر rgb نوشتم توی یه جاش گیر کردم
این برنامشه
[code=qbasic]$regfile = "m8def.dat"
$crystal = 8000000
'________________________________ADC & PWM______________________________________
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Down , Prescale = 1
'________________________________Variables___ ___________________________________
Dim R As Word
Dim G As Word
Dim B As Word
'____________________________________________ ___________________________________
Config Int0 = Falling
On Int0 _int0
Enable Int0
Enable Interrupts
Dim A As Byte
Do
Waitms 200
While A = 0
Start Adc
R = Getadc(0)
G = Getadc(1)
B = Getadc(2)
R = R / 3.99
G = G / 3.99
B = B / 3.99
Pwm1a = R
Pwm1b = G
Ocr2 = B
Wend
'=================
While A = 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 0
B = 0
R = 255
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 60
R = 255
B = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 255
R = 255
B = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 255
R = 0
B = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
G = 255
B = 15
R = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
R = 255
B = 50
G = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
R = 100
B = 110
G = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
B = 255
R = 0
G = 0
Wait 1
Pwm1a = R
Pwm1b = G
Ocr2 = B
R = 255
G = 255
B = 255
Wait 1
Wend
'=================
While A = 2
R = 100
G = 0
B = 0
Do
Pwm1a = R
Pwm1b = G
Ocr2 = B
Decr R
Incr G
Waitms 170
Loop Until G = 100
R = 0
G = 100
B = 0
Do
Pwm1a = R
Pwm1b = G
Ocr2 = B
Decr G
Incr B
Waitms 170
Loop Until B = 100
R = 0
G = 0
B = 100
Do
Pwm1a = R
Pwm1b = G
Ocr2 = B
Decr B
Incr R
Waitms 170
Loop Until R = 100
Wend
'=================
Loop
End
_int0:
Incr A
If A = 3 Then A = 0
Return[/code]
مشکلش اینه که زمانی که من میکرو سوییچ رو(که به اینتراپت وصله) برای تغغیر حالت افکت led ها فشار میدم به خاطر وجود wait هایی که دو دوتا افکت آخر هست کنترلر دیر دستور رو انجام میده و تا زمانی که یک دور کامل افکت تموم نشه ازش خارج نمیشه و به افکت بعدی نمیره ولی من می خوام به محض فشردن سوییچ افکت عوض شه حالا شما یه لطفی بکنید و بگید کجای برنامرو تغیر بدم(شرمنده زیاد زریدم

دیدگاه