سلام
میخاستم ببینم بنظرتون این برنامه مشکل داره ؟ که به احتمال قوی داره . دوستان لطف کنن یه چک بکنن
برنامه مربوط میشه به آشکار ساز گذر از صفر (دیمر دیجیتال) :
اینتراپت یک حساس به لبه بالا رونده و همچنین اینتراپت صفر حساس به لبه پایین رونده
بیت های صفر ویک پورت D برای کم و زیاد کردن زمان نیم سیکل هستن و همین دیگه
پیشاپیش از لطف همتون متشکرم
#include <mega8.h>
#include <alcd.h>
#include <delay.h>
int t=0,i=0;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTB.1=0;
delay_ms(t);
PORTB.1=1;
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
PORTB.1=0;
delay_ms(t);
PORTB.1=1;
}
void main(void)
{
DDRD.0=0;
PORTD.0=0;
DDRD.1=0;
PORTD.1=0;
GICR|=0xC0;
MCUCR=0x0B;
GIFR=0xC0;
lcd_init(16);
#asm("sei"
while (1)
{
if(PORTD.0==1 & t<=10) {
for(i=0;i<=10;i++){
t=i;
}
}
if(PORTD.1==1 & t>=10){
for(i=10;i>=0;i--){
t=i;
}
}
}
}
میخاستم ببینم بنظرتون این برنامه مشکل داره ؟ که به احتمال قوی داره . دوستان لطف کنن یه چک بکنن

برنامه مربوط میشه به آشکار ساز گذر از صفر (دیمر دیجیتال) :
اینتراپت یک حساس به لبه بالا رونده و همچنین اینتراپت صفر حساس به لبه پایین رونده
بیت های صفر ویک پورت D برای کم و زیاد کردن زمان نیم سیکل هستن و همین دیگه
پیشاپیش از لطف همتون متشکرم

#include <mega8.h>
#include <alcd.h>
#include <delay.h>
int t=0,i=0;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTB.1=0;
delay_ms(t);
PORTB.1=1;
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
PORTB.1=0;
delay_ms(t);
PORTB.1=1;
}
void main(void)
{
DDRD.0=0;
PORTD.0=0;
DDRD.1=0;
PORTD.1=0;
GICR|=0xC0;
MCUCR=0x0B;
GIFR=0xC0;
lcd_init(16);
#asm("sei"

while (1)
{
if(PORTD.0==1 & t<=10) {
for(i=0;i<=10;i++){
t=i;
}
}
if(PORTD.1==1 & t>=10){
for(i=10;i>=0;i--){
t=i;
}
}
}
}
دیدگاه