- 一、说明
- 二、重点
- 三、实现
- 四、下载
利用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; } }
详见:STC51单片机-中断控制LED-物联网应用系统设计项目开发



