請使用上拉電阻,但記得如此接法,按鈕按下時為 0。
PDG2:
非中斷
中斷:
不管是否中斷按鈕接至 P10
LED:將PORT 3 設為 OUTPUT
程式:
非中斷
int a=0;
void main(void)
{
//clock set
R_PG_Clock_Set();
R_PG_IO_PORT_Set_P3();
R_PG_IO_PORT_Set_P1();
while(1){
//不斷接收按鈕的值
R_PG_IO_PORT_Read_P10(&a);
if(a==1)//沒按下
R_PG_IO_PORT_Write_P30(1); //滅
else//按下
R_PG_IO_PORT_Write_P30(0); //亮
}
}
中斷:
程式概述:按一次按鈕 改變LED跑馬燈連續閃爍的速度
int btn=0,flag=0;
int i=0,duty=2;
void main(void)
{
R_PG_Clock_Set();
R_PG_IO_PORT_Set_P3();
while(1){
//不斷接收中斷
R_PG_ExtInterrupt_Set_IRQ0(&btn);
R_PG_IO_PORT_Write_P30(0);
for(i=0;i<100000*duty;i++);
R_PG_IO_PORT_Write_P30(1);
R_PG_IO_PORT_Write_P31(0);
for(i=0;i<100000*duty;i++);
R_PG_IO_PORT_Write_P31(1);
R_PG_IO_PORT_Write_P32(0);
for(i=0;i<100000*duty;i++);
R_PG_IO_PORT_Write_P32(1);
R_PG_IO_PORT_Write_P33(0);
for(i=0;i<100000*duty;i++);
R_PG_IO_PORT_Write_P33(1);
}
}
//按鈕中斷
void Irq0IntFunc(void){
if(flag==0)
duty=duty*2;
else
duty=duty/2;
if(duty==32)
flag=1;
if(duty==2)
flag=0;
}
沒有留言:
張貼留言