|
عفوا اعطيني الكود لان لاأستطيع الاجابه بدون الكود
|
تعلم اخي اني ان وضعت delay فلن تعمل اليدات الاخرى حتى ينتي من الاولى
كود:
sbit sw1 at RA2_bit;
sbit sw1_dir at TRISA2_bit;
sbit sw2 at RA3_bit;
sbit sw2_dir at TRISA3_bit;
sbit sw3 at RA4_bit;
sbit sw3_dir at TRISA4_bit;
char sw1_flag=0,sw2_flag=0,sw3_flag=0 ;
char sw1_time=0,sw2_time=0,sw3_time=0 ;
int x=0;
//Timer1
//Prescaler 1:2; TMR1 Preload = 15536; Actual Interrupt Time : 50 ms
//Place/Copy this part in declaration section
void InitTimer1(){
T1CON = 0x11;
TMR1IF_bit = 0;
TMR1H = 0x3C;
TMR1L = 0xB0;
TMR1IE_bit = 1;
INTCON = 0xC0;
}
void Interrupt(){
if (TMR1IF_bit){
TMR1IF_bit = 0;
TMR1H = 0x3C;
TMR1L = 0xB0;
//Enter your code here
if(sw1_flag==1)sw1_time++;
if(sw2_flag==1)sw2_time++;
x++;
}
}
void main()
{
cmcon=7;
InitTimer1();
sw1_dir=1;
sw2_dir=1;
sw3_dir=1;
trisb=0;
portb=0;
while(1){
if(sw1==0 ) sw1_flag=1;
if(sw2==0 ) sw2_flag=1;
if(sw1_flag==1 && sw1_time>=10)// this mean time >= 500
{
sw1_flag=0;
sw1_time=0;
PORTB.F0=1;
}
if(sw2_flag==1 && sw2_time>=10)// this mean time >= 500
{
sw2_flag=0;
sw2_time=0;
PORTB.F1=1;
}
if(sw1==1 && portb.f0 ==1){
x=0;
while(x>60){
portb.f0=1;
}
portb.f0=0;
}
}