امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تایمر کانتر
نویسنده پیام
kavir90 آفلاین
تازه وارد

ارسال‌ها: 22
موضوع‌ها: 10
تاریخ عضویت: اسفند ۱۳۹۰

تشکرها : 1
( 2 تشکر در 1 ارسال )
ارسال: #1
تایمر کانتر
من برنامه مدار زیر رو با تایمر کانتر0 نوشتم و قاعدتا باید تا 255 بشمره ولی وقتی بستمش تا 400، 500 هم می شمره
کسی می دونه مشکلش چیه؟


فایل‌(های) پیوست شده بندانگشتی (ها)
   

.rar   counter.rar (اندازه: 672 bytes / تعداد دفعات دریافت: 68)
۲۱-اسفند-۱۳۹۰, ۱۷:۵۶:۵۱
ارسال‌ها
پاسخ
Pardazesh-Gar آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 457
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 330
( 630 تشکر در 286 ارسال )
ارسال: #2
RE: تایمر کانتر
از 255 بیشتر نمیشه
چون LCD رو پاک نمیکنی فکر میکنی این اتفاق می افته.

مثلا آخرین عدد چاپ شده روی LCD باشد
counter=255
بار بعد باید عدد 0 رو چاپ کنه وقتی lcd_gotoxy(0,0); مینویسی برمیگرده به خط قبل صفحه رو پاک نمیکنه حالا این رو مینویسه
counter=0
اما چون مقدار قبلی باقی بود چیزی که به نمایش در میاد میشه این
counter=255
+
counter=0
=
counter=055

حال فکر کن عدد شمارنده شده 9
اما این رو نمایش میده
counter=955

کد زیر تصحیح شده.


کد:
#include <mega16.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>

char X[16];
void main(void)
{
DDRB.0=0;
DDRD=0xFF;
TCCR0=0x06;
TCNT0=0x00;
lcd_init(16);
lcd_clear();

while (1)
      {
       if((TIFR & 1)==1)
       {
       TIFR=1;
       }
    
sprintf(X,"counter=%d",TCNT0);

lcd_clear();
lcd_puts(X);
delay_ms(10);
}      
}

---------------------------------------------------------------------------
تیـــز دوم، تیز دوم، تا به سواران برسم
--------------------------------------
۲۱-اسفند-۱۳۹۰, ۲۱:۰۴:۱۷
ارسال‌ها
پاسخ
تشکر شده توسط : sharin, abbasalifix, rdscience
kavir90 آفلاین
تازه وارد

ارسال‌ها: 22
موضوع‌ها: 10
تاریخ عضویت: اسفند ۱۳۹۰

تشکرها : 1
( 2 تشکر در 1 ارسال )
ارسال: #3
RE: تایمر کانتر
(۲۱-اسفند-۱۳۹۰, ۲۱:۰۴:۱۷)Pardazesh-Gar نوشته است: از 255 بیشتر نمیشه
چون LCD رو پاک نمیکنی فکر میکنی این اتفاق می افته.

مثلا آخرین عدد چاپ شده روی LCD باشد
counter=255
بار بعد باید عدد 0 رو چاپ کنه وقتی lcd_gotoxy(0,0); مینویسی برمیگرده به خط قبل صفحه رو پاک نمیکنه حالا این رو مینویسه
counter=0
اما چون مقدار قبلی باقی بود چیزی که به نمایش در میاد میشه این
counter=255
+
counter=0
=
counter=055

حال فکر کن عدد شمارنده شده 9
اما این رو نمایش میده
counter=955

کد زیر تصحیح شده.


کد:
#include <mega16.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>

char X[16];
void main(void)
{
DDRB.0=0;
DDRD=0xFF;
TCCR0=0x06;
TCNT0=0x00;
lcd_init(16);
lcd_clear();

while (1)
{
if((TIFR & 1)==1)
{
TIFR=1;
}

sprintf(X,"counter=%d",TCNT0);

lcd_clear();
lcd_puts(X);
delay_ms(10);
}
}
ممنون
خیلی لطف کردی

(۲۱-اسفند-۱۳۹۰, ۲۱:۰۴:۱۷)Pardazesh-Gar نوشته است: از 255 بیشتر نمیشه
چون LCD رو پاک نمیکنی فکر میکنی این اتفاق می افته.

مثلا آخرین عدد چاپ شده روی LCD باشد
counter=255
بار بعد باید عدد 0 رو چاپ کنه وقتی lcd_gotoxy(0,0); مینویسی برمیگرده به خط قبل صفحه رو پاک نمیکنه حالا این رو مینویسه
counter=0
اما چون مقدار قبلی باقی بود چیزی که به نمایش در میاد میشه این
counter=255
+
counter=0
=
counter=055

حال فکر کن عدد شمارنده شده 9
اما این رو نمایش میده
counter=955

کد زیر تصحیح شده.


کد:
#include <mega16.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>

char X[16];
void main(void)
{
DDRB.0=0;
DDRD=0xFF;
TCCR0=0x06;
TCNT0=0x00;
lcd_init(16);
lcd_clear();

while (1)
{
if((TIFR & 1)==1)
{
TIFR=1;
}

sprintf(X,"counter=%d",TCNT0);

lcd_clear();
lcd_puts(X);
delay_ms(10);
}
}
ممنون
خیلی لطف کردی
(آخرین ویرایش در این ارسال: ۲۲-اسفند-۱۳۹۰, ۰۲:۳۰:۴۹، توسط kavir90.)
۲۲-اسفند-۱۳۹۰, ۰۲:۲۸:۴۵
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [پروژه] تایمر 6 رقمی با آی سی 74573 ترانسپورتر 2 2,214 ۱۶-اسفند-۱۳۹۲, ۲۳:۴۱:۵۴
آخرین ارسال: ترانسپورتر
  [سوال] دو پروژه ساده با تایمر taraneee 4 3,375 ۱۵-فروردین-۱۳۹۰, ۲۲:۵۸:۰۳
آخرین ارسال: taraneee

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS