Trích:
Nguyên văn bởi caremlanh
khi đang ở case 1, có ngắt thì bien++, tức là sẽ chuyển sang case 2 chứ ko quay lại case1.
còn nếu muốn chuyển sang case 3 chẳng hạn thì mình dùng lệnh goto. bạn xem chương trình mình viết nha 
|
code của bạn:
Code:
#include <16f877a.h>
#include <def_877a.h>
#device *=16
#FUSES NOWDT, HS
#use delay(clock=20Mhz)
int8 bien=0, i=0;
#INT_EXT
void ngat_ngoai()
{
bien++;
if(bien>3)bien=0;//dem=0->3
if(bien==2)i=1;
else i=0;
}
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
ext_int_edge(H_TO_L);
trisb=0x01;
trisd=0;
portd=0x00;
while(true)
{
if(i==1)goto here;
switch(bien)
{
case 0: {portd=0x01;delay_ms(500); break;}
case 1: {portd=0x02;delay_ms(500); break;}
case 2: {portd=0x04;delay_ms(500); break;}
case 3: here: {portd=0x08;delay_ms(500); break;}
}
}
}
Trích:
khi đang ở case 1, có ngắt thì bien++, tức là sẽ chuyển sang case 2 chứ ko quay lại case1.
|
nó sẽ không chuyển ngay mà phải đợi làm xong case 1 rồi nó mới chuyển.