سلام . من این کد ساده را نوشتم تا ببینم برنامه به روتین وفقه تایمر منتقل میشود یا نه .. ولی هر کاری کردم دیدم روتین وقفه اجرا نمیشود . چرا؟
# include <18f452.h>
# use delay ( clock = 10000000)
#INT_RTCC
#INT_TIMER0
void Timer0_isr()
{
output_high (PIN_D2);
}
int8 pulse;
main()
{
set_tris_d (0x0);
pulse=0;
while (true)
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_BIT) ;
interrupt_active(INT_TIMER0);
set_timer0(0);
if (get_timer0()==0)
{
if (pulse==1)
{
set_timer0(60);
pulse=0;
output_high (PIN_D1);
}
else
{
set_timer0(50);
pulse=1;
output_low (PIN_D1);
}
}
}
اگر برنامه حتی یک بار هم که شده به روتین وقفه منتقل شود ، باید پایه d2 روشن شود . ولی این کار اتفاق نمی افتد . چرا ؟
در ضمن در قسمت main ، برنامه را از help نرم افزار کپی کرده ام و در داخل برنامه نوشته که هر 102 میکرو ثانیه ، تایمر oveflow میشه ... ولی وقتی اجرا میکنم ، میبینم حدود هر ثانیه یک بار پایه d1 تغییر وضعیت میده ... چرا؟
سوال سوم ... اصلا اگه بخوام تابع روتین وقفه را بنویسم ، اسم خود تابع را چطور باید پیدا کنم ؟ این void Timer0_isr() را از فایل آقای یک نفر پیدا کردم . ولی در help خود نرم افزار ccs چیزی پیدا نشد ... help ccs خیلی بد است ... و آدم را دق مرگ میکند !!!!
# include <18f452.h>
# use delay ( clock = 10000000)
#INT_RTCC
#INT_TIMER0
void Timer0_isr()
{
output_high (PIN_D2);
}
int8 pulse;
main()
{
set_tris_d (0x0);
pulse=0;
while (true)
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_BIT) ;
interrupt_active(INT_TIMER0);
set_timer0(0);
if (get_timer0()==0)
{
if (pulse==1)
{
set_timer0(60);
pulse=0;
output_high (PIN_D1);
}
else
{
set_timer0(50);
pulse=1;
output_low (PIN_D1);
}
}
}
اگر برنامه حتی یک بار هم که شده به روتین وقفه منتقل شود ، باید پایه d2 روشن شود . ولی این کار اتفاق نمی افتد . چرا ؟
در ضمن در قسمت main ، برنامه را از help نرم افزار کپی کرده ام و در داخل برنامه نوشته که هر 102 میکرو ثانیه ، تایمر oveflow میشه ... ولی وقتی اجرا میکنم ، میبینم حدود هر ثانیه یک بار پایه d1 تغییر وضعیت میده ... چرا؟
سوال سوم ... اصلا اگه بخوام تابع روتین وقفه را بنویسم ، اسم خود تابع را چطور باید پیدا کنم ؟ این void Timer0_isr() را از فایل آقای یک نفر پیدا کردم . ولی در help خود نرم افزار ccs چیزی پیدا نشد ... help ccs خیلی بد است ... و آدم را دق مرگ میکند !!!!
دیدگاه