با سلام . من واسه چند تا led شروع به برنامه نویسی کرده بودم که از چندتا پورت tiny13 به عنوان خروجی استفاده کرده بوذم.اوایل که تست میکردم جواب میداد ولی همچین که یه خورده تعداد خطوط برنامه نویسی بالا رفت دیگه جواب نداد.حتی مقدار حافظه tiny 13 رو هم چک کردم از 60 درصد بالاتر نرفته بود.همین برنامه رو تو mega 8 وارد کردم جواب داد حتی تو proteus جواب داد. نمیدونم مشکل tiny13 چیه؟برنامه رو هم در کدویژن نوشتم لفطا کمک کنید.با تشکر
اطلاعیه
Collapse
No announcement yet.
مشکل در tiny13
Collapse
X
-
پاسخ : مشکل در tiny13
#include <tiny13.h>
#include <delay.h>
/************************************/
#define Data PORTB.0
#define Clk PORTB.1
#define OE PORTB.2
/************************************/
void write_led1(unsigned long int input);
void main(void){
unsigned long int i=0,j=0,m,t=0,u,w=0,p=0;
unsigned char counter=0;
DDRB=0x3F;
PORTB=0x00;
OE=1;
Clk=1;
Data=0;
start:i=1;j=0;t=0;
for(j=0;j<10;j++){
i=7;
while(counter<=32){
write_led1(i);
delay_ms(2+counter);
m=i<<1;
i=m;
counter++;
}
counter=0;
}//end of for
j=0;
for(j=0;j<5;j++){
i=7;
t=0xE0000000;
while(counter<=14){
write_led1(t|i);
delay_ms(50);
m=i<<1;
i=m;
u=t>>1;
t=u;
counter++;
}
counter=0;
}//end of for
for(j=0;j<10;j++){
i=0xE0000000;
while(counter<=32){
write_led1(i);
delay_ms(2+counter);
m=i>>1;
i=m;
counter++;
}
counter=0;
}//end of for
for(j=0;j<5;j++){
i=7;
t=0xE0000000;
while(counter<=14){
write_led1(t|i);
delay_ms(50);
m=i|i<<1;
i=m;
u=t|t>>1;
t=u;
counter++;
}
counter=0;
delay_ms(500);
while(counter<=14){
write_led1(t|i);
delay_ms(50);
m=i>>1;
i=m;
u=t<<1;
t=u;
counter++;
}
counter=0;
}//end of for
for(w=0;w<16;w++){
i=1;
p=i|i<<w;
i=p;
for(j=0;j<2;j++){
while(counter<=16){
write_led1(i);
delay_ms(16-w);
m=i<<1;
i=m;
counter++;
}
counter=0;
}//end of for
}
write_led1(0xFFFFFFFF);
delay_ms(1000);
i=0x0000FFFF;
t=0xFFFF0000;
while(counter<=16){
write_led1(t|i);
delay_ms(50);
m=i>>1;
i=m;
u=t<<1;
t=u;
counter++;
}
goto start;
}//end of main
/*************************************/
void write_led1(unsigned long int input){
unsigned char k=0;
unsigned long int temp=0;
OE=1;
for(k=0;k<32;k++){
temp=0x01;
temp&=input>>k;
Data=temp;
Clk=0;
delay_us(5);
Clk=1;
delay_us(5);
}
OE=0;
}
دیدگاه
-
پاسخ : مشکل در tiny13
من یک موضوع در مورد این TINY13 بگم تجربه شخصی من هست بعد برسیم به مشکل شما
حدود یک سال پیش من یک پروژه برای یک شرکت تولیدی اجاق گاز سازی انجام دادم که این میکروTINY13 پدر من در آورد :cry: در دمای 60 درجه این میکرو کنترلر به خوبی کار نمیکنه و همچنین خدا نکنه محیط NOISE داشته باشه که دیگه میکرو اصلا کار نمیکنه :angry: خیلی روش ها تست کردم آخر جواب نگرفتم و پروژه با PIC انجام دادم
گفتم اینا بگم شاید در پروژه شما بدرد بخور باشه
الان برنامه تو پروتئوس تست کنم و جواب شما میدم :read:خداوندا
از بچگی به من آموختندهمه را دوست بدار حال که بزرگ شده ام و کسی را دوست می*دارم می گویند:
فراموشش کن
دکتر علی شریعتی
دیدگاه
-
پاسخ : مشکل در tiny13
اول این کد رو تست کن
کد:#include <tiny13.h> #include <delay.h> /************************************/ #define Data PORTB.0 #define Clk PORTB.1 #define OE PORTB.2 /************************************/ void write_led1(unsigned long int input); void main(void) { unsigned long int i,m,t,u,w,p; unsigned char j,counter=0; DDRB=0x3F; PORTB=0x00; OE=1; Clk=1; Data=0; while(1) { //------------------------------ for(j=0;j<10;j++) { i=7; counter=0; while(counter<=32) { write_led1(i); delay_ms(2+counter); m=i<<1; i=m; counter++; } } //------------------------------ for(j=0;j<5;j++) { i=7; t=0xE0000000; counter=0; while(counter<=14) { write_led1(t|i); delay_ms(50); m=i<<1; i=m; u=t>>1; t=u; counter++; } }//end of for //------------------------------ for(j=0;j<10;j++) { i=0xE0000000; counter=0; while(counter<=32) { write_led1(i); delay_ms(2+counter); m=i>>1; i=m; counter++; } }//end of for //------------------------------ for(j=0;j<5;j++) { i=7; t=0xE0000000; counter=0; while(counter<=14) { write_led1(t|i); delay_ms(50); m=i|i<<1; i=m; u=t|t>>1; t=u; counter++; } delay_ms(500); counter=0; while(counter<=14) { write_led1(t|i); delay_ms(50); m=i>>1; i=m; u=t<<1; t=u; counter++; } }//end of for //------------------------------ for(w=0;w<16;w++) { i=1; p=i|i<<w; i=p; for(j=0;j<2;j++) { counter=0; while(counter<=16) { write_led1(i); delay_ms(16-w); m=i<<1; i=m; counter++; } }//end of for } //------------------------------ write_led1(0xFFFFFFFF); delay_ms(1000); i=0x0000FFFF; t=0xFFFF0000; counter=0; while(counter<=16) { write_led1(t|i); delay_ms(50); m=i>>1; i=m; u=t<<1; t=u; counter++; } } }//end of main /*************************************/ void write_led1(unsigned long int input) { unsigned char k=0; unsigned long int temp=0; OE=1; for(k=0;k<32;k++) { temp=0x01; temp&=input>>k; Data=temp; Clk=0; delay_us(5); Clk=1; delay_us(5); } OE=0; }
حالا این کد رو :
کد:#include <tiny13.h> #include <delay.h> /************************************/ #define Data PORTB.0 #define Clk PORTB.1 #define OE PORTB.2 /************************************/ void write_led1(unsigned long input); void main(void) { unsigned long i,t; unsigned char j,counter,w; DDRB=0x3F; PORTB=0x00; OE=1; Clk=1; Data=0; while(1) { //------------------------------ for(j=0;j<10;j++) { i=7; counter=0; while(counter<=32) { write_led1(i); delay_ms(2+counter); i<<=1; counter++; } } //------------------------------ for(j=0;j<5;j++) { i=7; t=0xE0000000; counter=0; while(counter<=14) { write_led1(t|i); delay_ms(50); i<<=1; t>>=1; counter++; } }//end of for //------------------------------ for(j=0;j<10;j++) { i=0xE0000000; counter=0; while(counter<=32) { write_led1(i); delay_ms(2+counter); i>>=1; counter++; } }//end of for //------------------------------ for(j=0;j<5;j++) { i=7; t=0xE0000000; counter=0; while(counter<=14) { write_led1(t|i); delay_ms(50); i=i|(i<<1); t=t|(t>>1); counter++; } delay_ms(500); counter=0; while(counter<=14) { write_led1(t|i); delay_ms(50); i>>=1; t<<=1; counter++; } }//end of for //------------------------------ for(w=0;w<16;w++) { i=1; i=i|(i<<w); for(j=0;j<2;j++) { counter=0; while(counter<=16) { write_led1(i); delay_ms(16-w); i<<=1; counter++; } }//end of for } //------------------------------ write_led1(0xFFFFFFFF); delay_ms(1000); i=0x0000FFFF; t=0xFFFF0000; counter=0; while(counter<=16) { write_led1(t|i); delay_ms(50); i>>=1; t<<=1; counter++; } } }//end of main /*************************************/ void write_led1(unsigned long input) { unsigned char k; OE=1; for(k=0;k<32;k++) { Data=(input>>k) & 0x01; Clk=0; delay_us(5); Clk=1; delay_us(5); } OE=0; }
هر دو رو امتحان کن. کد اول یه مورد داشت که counter رو یکی دو جا صفر نکرده بودی. کد دوم هم بهینه شده کد اول هست.
دیدگاه
دیدگاه