۲۱-اسفند-۱۳۹۰, ۱۷:۵۶:۵۱
۲۱-اسفند-۱۳۹۰, ۲۱:۰۴:۱۷
از 255 بیشتر نمیشه
چون LCD رو پاک نمیکنی فکر میکنی این اتفاق می افته.
مثلا آخرین عدد چاپ شده روی LCD باشد
counter=255
بار بعد باید عدد 0 رو چاپ کنه وقتی lcd_gotoxy(0,0); مینویسی برمیگرده به خط قبل صفحه رو پاک نمیکنه حالا این رو مینویسه
counter=0
اما چون مقدار قبلی باقی بود چیزی که به نمایش در میاد میشه این
counter=255
+
counter=0
=
counter=055
حال فکر کن عدد شمارنده شده 9
اما این رو نمایش میده
counter=955
کد زیر تصحیح شده.
چون 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);
}
}
خیلی لطف کردی
(۲۱-اسفند-۱۳۹۰, ۲۱:۰۴:۱۷)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);
}
}
خیلی لطف کردی