 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
19-09-2015, 02:40 PM
المشاركة 11
|
|
إليك برنامج قد يفى بالغرض بشكل مؤقت ولقد تم تجربته على برنامج بروتيس :
كود:
#define ON 1
#define OFF 0
//====================
#define SW1 0//PORTA.F0
#define SW2 1//PORTA.F1
#define SW3 2//PORTA.F2
#define SW4 3//PORTA.F3
//========================
#define LED1 PORTB.F0
#define LED2 PORTB.F1
#define LED3 PORTB.F2
#define LED4 PORTB.F3
#define LED5 PORTB.F4
#define LED6 PORTB.F5
//=====================
short counter1=0,counter2=0,counter3=0,counter4=0;
bit oldstate1,oldstate2,oldstate3,oldstate4;
void main()
{
CMCON=7;
TRISA=0x00001111;
TRISB=0;
PORTA=0;
PORTB=0;
//==============
while (1)
{
//===============SW1=============================
if (Button(&PORTA, SW1, 20, 1))oldstate1 = 1;
if (oldstate1 && Button(&PORTA, SW1, 20, 0))
{
oldstate1 = 0;
counter1++;
if(counter1==3) counter1=0;
}//end if
//======================
switch (counter1)
{
case 0: LED1=OFF; LED2=OFF;delay_ms(100); break;
case 1: LED1=ON; LED2=OFF;delay_ms(100); break;
case 2: LED1=OFF; LED2=ON;delay_ms(100); break;
//default : LED1=OFF; LED2=OFF; break;
}//end switch 1
//=============SW2================
if (Button(&PORTA, SW2, 20, 1))oldstate2 = 1;
if (oldstate2 && Button(&PORTA, SW2, 20, 0))
{
oldstate2 = 0;
counter2++;
if(counter2==3) counter2=0;
}//end if
//======================
switch (counter2)
{
case 0: LED3=OFF; LED4=OFF;delay_ms(100); break;
case 1: LED3=ON; LED4=OFF;delay_ms(100); break;
case 2: LED3=OFF; LED4=ON;delay_ms(100); break;
//default : LED3=OFF; LED4=OFF; break;
}//end switch 2
//============SW3=================
if (Button(&PORTA, SW3, 20, 1))oldstate3 = 1;
if (oldstate3 && Button(&PORTA, SW3, 20, 0))
{
oldstate3 = 0;
counter3++;
if(counter3==3) counter3=0;
}//end if
//======================
switch (counter3)
{
case 0: LED5=OFF; LED6=OFF;delay_ms(100); break;
case 1: LED5=ON; LED6=OFF;delay_ms(100); break;
case 2: LED5=OFF; LED6=ON;delay_ms(100); break;
//default : LED5=OFF; LED6=OFF; break;
}//end switch 3
//============SW4=============
if (Button(&PORTA, SW4, 20, 1))oldstate4 = 1;
if (oldstate4 && Button(&PORTA, SW4, 20, 0))
{
oldstate4 = 0;
counter4++;
if(counter4==3) counter4=0;
}//end if
//======================
switch (counter4)
{
case 0: break;
case 1: PORTB=0b00111111;delay_ms(100); break;
case 2: PORTB=0;delay_ms(100); break;
//default :
}//end switch 4
//====================
}//end while
}//end main
فى انتظار الرد لتعديل البرنامج حسب المطلوب تماما ولحسم مشكلة التداخل (التضارب) بين المفتاح الرابع وباقى المفاتيح
التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 19-09-2015 الساعة 02:44 PM
|