توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : برنامه روشن کردن ال ای دی با کلید
سلام
برنامه زیر رب برای اینکه زمانی کلید زده میشود ال ای دی روشن شود زمانی صفر هست خاموش بشود
ولی در عمل کار نمیکند
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb.0 = Output
Config Portc.5 = Input
Config Portd.0 = Output
Do
Debounce , Portc.5 , 1 , Af
Q:
Set Portd.0
Loop
End
Af:
Do
Set Portb.0
Loop Until Portc.5 <> 1
Goto Q
من بیسیک کار نمیکنم ولی خوب برنامه را فکر نمی کنی باید اینطوری مینوشتی !
Debounce , Portc.5 , 1 , Af
Q:
reset Portb.0
من بیسیک کار نمیکنم ولی خوب برنامه را فکر نمی کنی باید اینطوری مینوشتی !
debounce , portc.5 , 1 , af
q:
Reset portb.0
سلام
اره این خط رو اشتباه نوشتم ولی مشکلم اینجاست که اصلا روشن نمیشود
اگر با کد ویژن کار میکنید امکان دارد یه نمونه برام بدید ببینم مشکل کجاست
البته فایل هگز باشه چ.ن با نرم افزارش کار نکردم
ممنون
sarbaz13
02-03-2013, 11:09
#include <mega32.h>
#include <delay.h>
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x02;
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
while (1)
{
if ( PINC.0==1 ){
PORTC.1=1;
delay_ms(80);
}
else{
PORTC.1=0;
}
};
}
فایل هگز و برنامه اصلی را ضمیمه می کنم.
مشکل شما اینجاست که با پایه ی مورد نظر خودتون رو به صورت Pull up یا Pull down به صورت زیر ببندی.
سلام
Portc.5 برای خواندن مقدار پین نیست. بجای Portc.5 از pinc.5 استفاده کنید.
پ.ن : چرا از یه Do..Loop و یک if ساده واسه اینکار استفاده نمی کنید. (قانون کلی : هیچ وقت از Goto در برنامه نویسی استفاده نکنید. هروقت مجبور به استفاده از Goto شدید ، مطمئن باشید که راه بهتری برای پیاده سازی برنامتون وجود داشته.)
سلام
Portc.5 برای خواندن مقدار پین نیست. بجای Portc.5 از pinc.5 استفاده کنید.
پ.ن : چرا از یه Do..Loop و یک if ساده واسه اینکار استفاده نمی کنید. (قانون کلی : هیچ وقت از Goto در برنامه نویسی استفاده نکنید. هروقت مجبور به استفاده از Goto شدید ، مطمئن باشید که راه بهتری برای پیاده سازی برنامتون وجود داشته.)
سلام
از pin هم استفاده کردم باز مشکل حل نشد
قبلا با پورت نوشته بود درست عمل میکرد ولی الان کار نمیکنه
امکان داره کل برنامه را با میکرو 8 برام بنویسید
شرمنده
اینجوری بنویسی جواب نمیده
$regfile = "m8def.dat"
$crystal = 1000000
config portb.0 = output
config portc.5 = input
do
if pinc.5=1 then
set portb.0
if pinc.5=0 then
reset portb.0
loop
end
اینجوری بنویسی جواب نمیده
$regfile = "m8def.dat"
$crystal = 1000000
config portb.0 = output
config portc.5 = input
do
if pinc.5=1 then
set portb.0
if pinc.5=0 then
reset portb.0
loop
end
سلام
نوشتم جواب نداد
برنامه زیر را هم نوشتم جواب نداد
دیگه دارم میریزم بهم نمیدونم مشکل کجاست
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd.0 = Output
Config Portc.0 = Input
Config Portc.1 = Input
Config Portd.1 = Output
Dim G As Word
Dim H As Word
Do
If Portc.0 = 1 Then
Do
Set Portd.0
Waitms 1
Loop Until Portc.0 <> 1
Reset Portd.0
End If
If Portc.1 = 1 Then
Do
Set Portd.1
Loop Until Portc.1 <> 1
Reset Portd.1
End If
Loop
End
sarbaz13
02-03-2013, 17:08
سلام
نوشتم جواب نداد
برنامه زیر را هم نوشتم جواب نداد
دیگه دارم میریزم بهم نمیدونم مشکل کجاست
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd.0 = Output
Config Portc.0 = Input
Config Portc.1 = Input
Config Portd.1 = Output
Dim G As Word
Dim H As Word
Do
If Portc.0 = 1 Then
Do
Set Portd.0
Waitms 1
Loop Until Portc.0 <> 1
Reset Portd.0
End If
If Portc.1 = 1 Then
Do
Set Portd.1
Loop Until Portc.1 <> 1
Reset Portd.1
End If
Loop
End
سلام آقای kendab
شما اگر با انجام این کار ها بازم موفق نشدی مشکل از یک جای دیگه است و ربطی به برنامه نویسی نداره.
یا میکروت مشکل داره یا فیوز بیتهای میکروت رو دست کاری کردی
چک کن اگر میکروت سالم هست و فیوز بیت هات دستکاری نکردی و درست تنظیم شدن یک بار کلا میکروتو پاک کن برنامه های داخلش رو و بعد دوباره کامپایل کن.
مدارت رو طبق عکسی که گذاشتم باید وصل کنی تا جواب بگیری.
دوست عزیز فایل شبیه سازی برنامه تون را قرار بدهید + هگز برنامه
دوست عزیز فایل شبیه سازی برنامه تون را قرار بدهید + هگز برنامه
سلام
دوستان از صب نشستم تا الان تونستم جواب بگیرم
نمیدونم چرا میکرو به pin و portحساس هست یه جاش باید pin یجا دیگه پورت نوشت
منظورتو متوجه نشدم خوب هرکجا شما میخوای از ورودی بخونی مقداری را (صفر یا یک ) pin استفاده میکنی
و هر کجا بخوای به پایه های میکرو فرمان بدی (صفر یا یک ) port استفاده میکنی
اصلا امکان پذیر نیست همین طوری جاشونو عوض کنیا :mrgreen:
شرمنده دوستان برا اینکه تایپک اضافی نزنم میخاهم یه فرسنده گیرنده با hmt ,rبسازم برا ارسال چی باید نوشت
ممنون
منظورتو متوجه نشدم خوب هرکجا شما میخوای از ورودی بخونی مقداری را (صفر یا یک ) pin استفاده میکنی
و هر کجا بخوای به پایه های میکرو فرمان بدی (صفر یا یک ) port استفاده میکنی
اصلا امکان پذیر نیست همین طوری جاشونو عوض کنیا :mrgreen:
یعنی اگه بخاهم یک پایه را فرمان بدهم مثلا باید بنویسمportc.0
شرمنده دوستان برا اینکه تایپک اضافی نزنم میخاهم یه فرسنده گیرنده با hmt ,rبسازم برا ارسال چی باید نوشت
ممنون
فرستنده گیرنده میخوای بسازی باید با پورت سریال کار بکنی یه کانفیگ ساده داره
قبلا کار کردی تجربه ای داری؟
یعنی اگه بخاهم یک پایه را فرمان بدهم مثلا باید بنویسمportc.0
بله دقیقا :0013:
فرستنده گیرنده میخوای بسازی باید با پورت سریال کار بکنی یه کانفیگ ساده داره
قبلا کار کردی تجربه ای داری؟
بله دقیقا :0013:
سلام
نه قبلا کار نکردم
امکان دارد بیشتر توضیح بدهید
ممنون
سلام
برا فرستنده اینو نوشتم
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Pinc.0 = Input
Config Pinc.1 = Input
Dim C0 As String * 13
Dim C1 As String * 13
C0 = "canal1"
C1 = "canal2"
Do
Do
Print C0 ; Chr(13);
Loop Until Pinc.0 <> 1
Print C0 ; Chr(13);
Do
Print C1 ; Chr(13);
Loop Until Pinc.1 <> 1
Print C1 ; Chr(13);
Loop
End
و برای گیرنده:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Portb.0 = Output
Config Portb.1 = Output
Dim S As String * 13
Do
Input S
If S = "canal1" Then
Do
Set Portb.0
Loop Until S <> "canal1"
End If
Reset Portb.0
If S = "canal2" Then
Do
Set Portb.1
Loop Until S <> "canal2"
End If
Reset Portb.1
Loop
مشکلاتش کجاست ممنون
دوستان کجاید کمککککککککککککککککککککککک ککککککک
دوست عزیز پیشنهاد میکنم کتاب الکترونیکی نوشته سبحان سروری را با عنوان انتقال دیتا بین میکرو -میکرو ،میکرو -رایانه را از نت بگیرید بسیار مفصل در مورد فرستنده و گیرنده با hmt -hmr توضیح داده و تمامی نکات هم داخل این PDF موجود هست موفق باشید .:0013:
دوست عزیز پیشنهاد میکنم کتاب الکترونیکی نوشته سبحان سروری را با عنوان انتقال دیتا بین میکرو -میکرو ،میکرو -رایانه را از نت بگیرید بسیار مفصل در مورد فرستنده و گیرنده با hmt -hmr توضیح داده و تمامی نکات هم داخل این pdf موجود هست موفق باشید .:0013:
ممنون
لطف کردید
من هم اونو خوندم
هم کتاب اقای کاهه
و...
ولی واقعا نفهمیدم شاید از خنگی خودم هست
موفق باشید
برنامه هاش خیلی روان و گویا هست کجاش مشکل دارید ؟
مدار را عملی تست کردید ؟
شبیه سازی کردید ؟
برنامه هاش خیلی روان و گویا هست کجاش مشکل دارید ؟
مدار را عملی تست کردید ؟
شبیه سازی کردید ؟
من این برنامه نوشتم با استفاده از کتاب سروی
تو شبیه سازی هر کلید را میزنیم فقط ال ای دی یک روشن میشود
تو عمل هم اصلا کار نمیکند
دوست عزیز همون طور که قبلا گفتم من بیسک کار نمی کنم ولی برنامه فرستنده را اینطوری بنویسی بهتره
به نظرم برنامه های اون PDF را اول اجرا کن و جواب بگیر بعدا تغییرات را در اون اعمال کن در عمل چطوری میبندی
توضیح بده شماتیک بزار
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Pinc.0 = Input
Config Pinc.1 = Input
Dim C0 As String * 13
Dim C1 As String * 13
C0 = "canal1"
C1 = "canal2"
Do
IF Pinc.0=1 then
Print C0 ; Chr(13);
IF Pinc.1=1 then
Print C1 ; Chr(13);
waitms 50
Loop
End
دوست عزیز همون طور که قبلا گفتم من بیسک کار نمی کنم ولی برنامه فرستنده را اینطوری بنویسی بهتره
به نظرم برنامه های اون pdf را اول اجرا کن و جواب بگیر بعدا تغییرات را در اون اعمال کن در عمل چطوری میبندی
توضیح بده شماتیک بزار
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
config pinc.0 = input
config pinc.1 = input
dim c0 as string * 13
dim c1 as string * 13
c0 = "canal1"
c1 = "canal2"
do
if pinc.0=1 then
print c0 ; chr(13);
if pinc.1=1 then
print c1 ; chr(13);
waitms 50
loop
end
سلام
این فایل پرتیوس و کد هگز میباشد
تو عمل 5 ولت با رگلاتور ایجاد میکنم
دوست عزیز مشکل شما چیه شما برنامه ای برای گیرنده نوشته اید به صورت لحظه ای هست یعنی تا زمانی کلید فشرده شده باشه لامپ متناظرش روشنه دستو که برداری خاموش میشه و برای کلید دوم هم همین طور مشکلی در عمل نداره
الان شما میخواستید این طوری کار کنه یا نه؟
در عمل پایه enable را در گیرنده متصل کردید ?
دوست عزیز مشکل شما چیه شما برنامه ای برای گیرنده نوشته اید به صورت لحظه ای هست یعنی تا زمانی کلید فشرده شده باشه لامپ متناظرش روشنه دستو که برداری خاموش میشه و برای کلید دوم هم همین طور مشکلی در عمل نداره
الان شما میخواستید این طوری کار کنه یا نه؟
در عمل پایه enable را در گیرنده متصل کردید ?
سلام
اره من میخاهم دست از روی کلید برداشتم ال ای دی خاموش شود
در مورد پایه enable چیزی نمیدونم فقط تو کتاب دیدم یکش کردم منم یکش کردم
مشکلن اینکه در عمل کار نمیکنه
فک کردم شاید مال مازول باشه چطور باید تستش کنم؟
ramin.st
05-03-2013, 23:40
سلام این برنامتون اشتباه بود اینطوری باید مینوشتید
در کل برای دستور if اگر بعد از اینکه شرط برقرار بود بخواین یک دستور اجرا بشه میتوننین جلوش بعد از then بنویسید ولی اگر دستورات زیاد بودن در خط های بعدی میتوننین وارد کنین وباید پایان شرط رو هم مشخص کنین با end if مثل:
If pinc.0=1 then
"print "x
portb.0 = 1
end if
سلام این برنامتون اشتباه بود اینطوری باید مینوشتید
در کل برای دستور if اگر بعد از اینکه شرط برقرار بود بخواین یک دستور اجرا بشه میتوننین جلوش بعد از then بنویسید ولی اگر دستورات زیاد بودن در خط های بعدی میتوننین وارد کنین وباید پایان شرط رو هم مشخص کنین با end if مثل:
If pinc.0=1 then
"print "x
portb.0 = 1
end if
سلام ممنون
در مورد تست ماژول چکار باید بکنم
ممنون
Mirhabibi
10-09-2013, 20:34
سلام دوستان
من می خواهم با زدن یک کلید که به یکی از پین های میکرو وصل است پورت دیگری یک شود و با رها کردن کلید اون پورت صفر شود
من اومدم در atmega8A و در codevision wizard پین PC0 رو input و در حالت pull up تنظیم کردم پورت PC1 رو هم به صورت OUT و 0 تنظیم کردم
در برنامه هم در داخل while(1) نوشتم
PORTC.1=PINC.0;
در مدارم هم PC0 رو به یک سر کلید فشاری و اون یکی سر کلید فشاری رو هم به GND وصل کردم
مشکل اینجاست که وقتی یک LED به PC1 و GND وصل می کنم می بینم LED روشن هست و با فشردن کلید خاموش می شود من می خواهم عکس این عمل باشد یعنی PC1 صفر باشد و وقتی کلید را فشار دادم یک بشود و در نتیجه LED روشن شود
امیدوارم توانسته باشم منظورمو برسونم
در ضمن می خواهم حتما به زبان c و در کدویژن بنویسمش
منتظر راهنمایی دوستان هستم
sobhan537
10-09-2013, 21:01
سلام دوستان
من می خواهم با زدن یک کلید که به یکی از پین های میکرو وصل است پورت دیگری یک شود و با رها کردن کلید اون پورت صفر شود
من اومدم در atmega8A و در codevision wizard پین PC0 رو input و در حالت pull up تنظیم کردم پورت PC1 رو هم به صورت OUT و 0 تنظیم کردم
در برنامه هم در داخل while(1) نوشتم
PORTC.1=PINC.0;
در مدارم هم PC0 رو به یک سر کلید فشاری و اون یکی سر کلید فشاری رو هم به GND وصل کردم
مشکل اینجاست که وقتی یک LED به PC1 و GND وصل می کنم می بینم LED روشن هست و با فشردن کلید خاموش می شود من می خواهم عکس این عمل باشد یعنی PC1 صفر باشد و وقتی کلید را فشار دادم یک بشود و در نتیجه LED روشن شود
امیدوارم توانسته باشم منظورمو برسونم
در ضمن می خواهم حتما به زبان c و در کدویژن بنویسمش
منتظر راهنمایی دوستان هستم
پین PC0 رو Pull Down کنید و اون یکی سر کلید فشاری رو هم به VCC وصل کنید تا مشکلتون حل بشه...
sobhan537
10-09-2013, 21:07
هر کجا شما میخوای از ورودی بخونی مقداری را (صفر یا یک ) از pin استفاده میکنی و هر کجا بخوای به پایه های میکرو فرمان بدی (صفر یا یک ) از port استفاده میکنی.
اصلا امکان پذیر نیست همین طوری جاشونو عوض کنیا :mrgreen:
درسته. اما آیا ابتدای برنامه برای config کردن یک پایه به عنوان ورودی یا خروجی هم این بحث صادقه؟ یعنی اگه بخوایم پینA.0 رو بصورت ورودی تعریف کنیم باید از دستور Config PinA.0=Input و اگه بخوایم پینA.0 رو بصورت خروجی تعریف کنیم باید از دستور Config PortA.0=Output استفاده کنیم؟؟؟
بله باید قبل از استفاده اونو کانفیگ کنی
فرقی نداره مثل زبان سی که با رجیستر ddrx کار میکنی
Powered by vBulletin® Version 4.2.1 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.