ايران ويج

نسخه‌ی کامل: وقفه سریال
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
اگر M=1 ارتباط سريال برقرار ، اگر M=0 دستورات ارتباط سريال چك نمي شن ...

کد php:
while(1){
//-----------------
باقيه برنامه
.
.
.
//-----------------
if (m){
//---------------------- مربوط به ارتباط سريال
if  
{}
if
{}
if
{}
//----------------------
}

(۰۹-مرداد-۱۳۹۱, ۱۸:۵۳:۰۱)sharin نوشته است: [ -> ]اگر M=1 ارتباط سريال برقرار ، اگر M=0 دستورات ارتباط سريال چك نمي شن ...

کد php:
while(1){
//-----------------
باقيه برنامه
.
.
.
//-----------------
if (m){
//---------------------- مربوط به ارتباط سريال
if 
{}
if
{}
if
{}
//----------------------
}

خيلي ممنونم.يعني همين كه دستورات مربوط به ارتباط سريال(putchar,getchar) نوشته نشن كافيه؟
خوب وقتي نوشته نشن ، ارتباطي هم نيست ديگه !!
البته بستگي به سبك كد زني شما هم دارهه ، اگر از وقفه ي ارسال و دريافت هم استفاده كرديد ، اونجا هم بايستي تغييرات رو لحاظ كنيد و ...
(۱۰-مرداد-۱۳۹۱, ۱۸:۲۵:۰۰)sharin نوشته است: [ -> ]خوب وقتي نوشته نشن ، ارتباطي هم نيست ديگه !!
البته بستگي به سبك كد زني شما هم دارهه ، اگر از وقفه ي ارسال و دريافت هم استفاده كرديد ، اونجا هم بايستي تغييرات رو لحاظ كنيد و ...

متشكرم از راهنماييتون.لطف كرديد.
سلام خدمت دوستان.
کاملا حق با دوستمون است.
وقتی وقفه سریال فعال میشه ومیکرو یک دیتا دریافت میکنه [/font]به زیر برنامه پرش میکنه و میشه اونجا دیتا رو خوند.
ولی میشه از دستور input استفاده کرد.
زمانی شما از یک سیستم دیگه یه text دریافت میکنید حالا تو وقفه سریال یا باید دونه دونه اونارو بخونید و کنار هم بزارید و یا کل text رو میتونید با input ,a بخونید . که a یک استرینگ هست به طول دلخواه .ولی بعد از اینکه input کردین یه خط پایین تر دستور b=udr رو بزنید و ثبات udr رو کافیه یه بار بخونید. حالا دیگه وقفه دوباره اجرا نمیشه .
ضمنا یه طول بافر توجه کنید که از طول متن ورودی کمتر نباشه وهمینطور بافر ابتدای برنامه
سلام

سوالم اینه:
چرا اصلا وقفه ی سریال رخ نمیده؟ Biggrin

هر بلایی سرش آوردم، نشد:

کد php:
$regfile "m8def.dat"
$crystal 8000000
$baud 
9600


Config Lcd 
16 2
Config Lcdpin 
Pin Db4 Portc.2 Db5 Portc.3 Db6 Portc.4 Db7 Portc.5 Portc.1 Rs Portc.0       ', Wr = Portd.5

Config Portb.0 = Input

Config Portd.3 = Input
Config Portd.2 = Input

Set Portb.0

On Urxc rec
Enable Interrupts
Enable Urxc



Dim A As Long
Dim B As Byte



Cls
Home
B = 0

Main:

Do

   Locate 1 , 1
   Lcd B ; " mmmm "
   Waitms 300
   Print "hello"
   Incr B

Loop


rec:
   Disable Interrupts
   a = UDR

   Locate 2 , 2
   Lcd A
   Print "receive"
   Enable Interrupts

Return 
سلام
تو برنامت Disable Interrupts رو واسه چی گذاشتی؟!
(۳۰-تير-۱۳۹۳, ۰۰:۲۷:۵۷)r0b0 نوشته است: [ -> ]سلام
تو برنامت Disable Interrupts رو واسه چی گذاشتی؟!

آخرشم نفهمیدم چی شد
یه بار کل میکرو رو از بورد جدا کردم، دوباره لحیم کردم، درست شد!
اون disable رو هم برداشتم، شاید از اون بود

(احساس میکنم این ژله های فلاکسی که آمریکایی هستن، با بعد خشک شدن با تینر کامل تمیز نمیشن، و باعث اینجور مشکلات میشن)
ممنون
مشکل اینه داخل روتین وقفه اومدی وقفه رو غیرفعال کردی
اینطوری دیگه دستورات وقفه اجرا نمیشه
سخت افزاری هم گاهی میتونه مشکل ساز بشه

خب شکر که درست شد.
(۳۰-تير-۱۳۹۳, ۲۱:۵۵:۳۲)salehjg نوشته است: [ -> ](احساس میکنم این ژله های فلاکسی که آمریکایی هستن، با بعد خشک شدن با تینر کامل تمیز نمیشن، و باعث اینجور مشکلات میشن)
ممنون

کلا تینر روی برد اثر مخربی میذاره!!

بهتره از اسپری های خشک استفاده کنی

برای پاک کردن بعد از اسید کاری هم بهترین گزینه بنزین هستش
سلام برنامه بسکامی رو که گذاشته بودین رو پروگرام کردم ولی ال سی دی فقط عدد 248 رو نشون میده.
با نرم افزار بلو توث ترمینال اندرید اطلاعات میفرستادم به میکرو
مشکل از کجاست
صفحه‌ها: 1 2 3