按下SW17(接P3.2)时,LED4(P2.7)、LED7(P1.7)、 LED8(P1.6)、LED9(P4.7)、LED10(P4.6)按顺序每隔1S依次闪烁,然后再循环。(采用SW17输入外部中断0中断请求)
定时器要求用查询方式实现1s延时。
希望我的程序能对大家的实验有帮助。
#include
#include
#define uchar unsigned char
#define unit unsigned int
uchar a=0;
//**************外部中断0
void int0_isr()interrupt 0
{
a=1;
}
//*************定时器查询方式 1s延时
void DELAY(void)
{
unit i=0;
TMOD=0X00;
TH1=0X3C;
TL1=0XB0;
TR1=1;
while(i<20)
{
if(TF1==1)
{
TF1=0;
i++;
}
}
}
//*****************主函数
void main(void)
{
P0M0=0;P0M1=0;
P1M0=0;P1M1=0;
P2M0=0;P2M1=0;
P3M0=0;P3M1=0;
P4M0=0;P4M1=0;
IT0=1;
IE0=0;
EX0=1;
EA=1;
while(1)
if(a==1)
{
P2=0X7F; //0111 1111 P2.7
DELAY();
P2=0XFF;
P1=0x7F; //0111 1111 P1.7
DELAY();
P1=0xBF; //1011 1111 P1.6
DELAY();
P1=0xFF;
P4=0x7F; //0111 1111 p4.7
DELAY();
P4=0xBF; //1011 1111 p4.6
DELAY();
P4=0xFF;
}
}
页面更新:2024-05-04
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号