- 一、说明
- 二、重点
- 三、实现
- 四、下载
利用C51设计2个基本的I/O控制程序,编程实现以下功能:
- 对外部按键的状态读取
- 对多个按键的判断处理
- 根据按键进行不同的输出控制LED显示
- 8个LED的4-6种“花样”显示控制
- 51系列单片机的基本结构特点、引脚功能及其使用的基本方法
- 掌握keil c51的程序设计特点及方法
#include
sbit INT_0 = P3^2;
sbit P26 = P2^6;
unsigned int i=0,count=0;
unsigned char kc1=0x01,kc2=0x0f,kc3=0x03,kc4=0; //不同中断次数下LED显示的初值
void delay10ms(void) //约10ms延时子程序(12MHZ),用于防键抖动
{ unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
void delay500ms(void) //约500ms延时子程序(12MHZ),用于显示变化的间隔
{ unsigned char i,j,k;
for(i=10;i>0;i--)
for(j=132;j>0;j--)
for(k=150;k>0;k--);
}
void main()
{ EA=1; EX0=1; IT0=1; //允许/INT0中断,IT0=1为边沿触发
while(1)
{
switch (count)
{ case 0:P0=kc1; P26=1;P26=0; kc1<<=1;delay500ms();if (kc1==0) kc1=0x01;break; //0次
case 1: P0=kc2; P26=1;P26=0;kc2=~kc2;delay500ms(); break; //1次
case 2: P0=kc3;P26=1;P26=0;kc3<<=1; kc3<<=1;delay500ms(); //2次
if (kc3==0x00) kc3=0x03; break;
case 3: P0=kc4; P26=1;P26=0; delay500ms();kc4++; break; //3次
}
}
}
void int0(void) interrupt 0 ///INT0中断服务函数
{
delay10ms(); //防按钮抖动,可根据实际情况调整
if (INT_0==0)
{ count++;
if (count==4) count=0;
}
}
四、下载
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)