دوستان هلپپپپپپپپپپپپپ.
باور کنید دیگه دارم بالا میارم اینقد دیگه با پی سی بودم.(البته گلاب به روتون)
من با تایمر 1و3 تو کد ویژن مشکل دارم.اونم اینه که هر تو تایمر که 16 بیتی هستش ولی تا 255 میشموره.تو کتابش یه چیزایی نوشته بود که نتونستم اونو درست اجرا کنم.یکی از دوستان گلمم که راهنمایی کرده بود اونم جواب نداد.
این برنامه بیسیک:(که مشکلی نداره):
کد:
$regfile = "m128def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db7 = Porta.7 , Db6 = Porta.6 , Db5 = Porta.5 , Db4 = Porta.4 , E = Porta.3 , Rs = Porta.1
Config Timer0 = Timer , Prescale = 8 : Config Timer1 = Timer , Prescale = 8 : Config Timer2 = Timer , Prescale = 8 : Config Timer3 = Timer , Prescale = 8
Config Pind.0 = Input
Dim S As String * 5
Start Timer0
Start Timer1
Start Timer2
Start Timer3
S = Space(5)
Cursor Off
Dim B As Word
Do
Locate 1 , 1 : Lcd "Timer0=" ; Timer0 ; S
Locate 2 , 1 : Lcd "Timer1=" ; Timer1 ; S
Locate 3 , 1 : Lcd "Timer2=" ; Timer2 ; S
Locate 4 , 1 : Lcd "Timer3=" ; Timer3 ; S
If Pind.0 = 1 Then
Stop Timer0
Stop Timer1
Stop Timer2
Stop Timer3
Locate 1 , 1 : Lcd "Timer0=" ; Timer0 ; S
Locate 2 , 1 : Lcd "Timer1=" ; Timer1 ; S
Locate 3 , 1 : Lcd "Timer2=" ; Timer2 ; S
Locate 4 , 1 : Lcd "Timer3=" ; Timer3 ; S
Timer0 = 0
Timer1 = 0
Timer2 = 0
Timer3 = 0
Wait 2
Start Timer0
Start Timer1
Start Timer2
Start Timer3
End If
Loop
End 'end program
اینم برنامه سی که مشکل داره:
کد:
#include <mega128.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
char a[20];
char b[20];
char c[20];
char d[20];
unsigned int aa;
void main(){
PORTD=0x01;
DDRD=0x01;
TCCR0=0x02;
TCCR1B=0x02;
TCCR2=0x02;
TCCR3B=0x02;
lcd_init(20);
do{
aa= (TCNT1L*256,TCNT1L+TCNT1H);
sprintf(a,"Timer0=%d",TCNT0);
sprintf(b,"Timer1=%d",aa);
sprintf(c,"Timer2=%d",TCNT2);
sprintf(d,"Timer3=%d",aa);
lcd_gotoxy(0,0);lcd_puts(a);lcd_putsf(" ");
lcd_gotoxy(0,1);lcd_puts(b);lcd_putsf(" ");
lcd_gotoxy(0,2);lcd_puts(c);lcd_putsf(" ");
lcd_gotoxy(0,3);lcd_puts(d);lcd_putsf(" ");
if (PIND.0==1){
TCCR0=0x00;
TCCR1B=0x00;
TCCR2=0x00;
TCCR3B=0x00;
lcd_gotoxy(0,0);lcd_puts(a);lcd_putsf(" ");
lcd_gotoxy(0,1);lcd_puts(b);lcd_putsf(" ");
lcd_gotoxy(0,2);lcd_puts(c);lcd_putsf(" ");
lcd_gotoxy(0,3);lcd_puts(d);lcd_putsf(" ");
TCNT0=0;
TCNT1=0,
TCNT2=0;
aa=0;
TCCR0=0x02;
TCCR1B=0x02;
TCCR2=0x02;
TCCR3B=0x02;
delay_ms(2000);}
}while(1);
}
اینم شبیه ساز:
2.دستوری داریم که چند متغیر و عبارت رو با یک دستور رو lcd نشون بده.(تو کدویژن)
مثلا تو بیسیک این هستش:
کد:
Locate 1 , 1 : Lcd "Timer0=" ; Timer0 ; S
من تو کدویژن اینو میدونم که باید یه رشته بنویسی بعد اونو برگردونی بعد از اون رو lcd نشون بدی.که فقط یک متن و یک متغیر رو نشون میده.
3.اینی که میگن فرکانس رو با تایمر بسازی دقیق تره با PWM این کارو میکنن؟
بعد میکرو حداکثر تا چه مقدار میتونه فرکانس بسازه؟و چگونه؟
4.این دستور که تو بیسیک هستش تو کدویژن چطوریه؟
کد:
On Timer1 Label
On Harchize Dgei Label
اعتراف میکنم که به دنبال همه ی موارد رفتم و گشتم بجز مورد 4.
با تشکر فراوان از همه ی شما عزیزان...