51单片机独立按键程序查询法和外部中断两种.docVIP

  • 51
  • 0
  • 约4.1千字
  • 约 5页
  • 2016-09-19 发布于重庆
  • 举报

51单片机独立按键程序查询法和外部中断两种.doc

51单片机独立按键程序查询法和外部中断两种

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 //用//11111111111111111代表第一个程序。//2222222222222222222222222代表第二个程序,以此类推 //1111111111111111111111111111111111111111111111111111111111111111111 //1111111111111111111111111111111111111111111111111111111111111111111 /******************************************************************************* * 实 验 名 : 左右流水灯实验 * 使用的IO : LED使用P2,键盘使用P3.1 * 实验效果 : 按下K1键, * 注 意 : *******************************************************************************/ #includereg51.h #includeintrins.h #define GPIO_LED P2 sbit K1=P3^1; void Delay10ms( ); //延时10ms /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { unsigned int i,j; j=0xfe; //1111_1110 while(1) { GPIO_LED=j; if(K1==0) //检测按键K1是否按下 { Delay10ms(); //消除抖动 if(K1==0) { j=_cror_(j,1); while((i50)(K1==0)) //检测按键是否松开 { Delay10ms(); i++; } i=0; } } } } /******************************************************************************* * 函 数 名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Delay10ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c0;c--) for(b=38;b0;b--) for(a=130;a0;a--); } //222222222222222222222222222222222222222222222222222 //222222222222222222222222222222222222222222222222222 /********************************************************************************* *实 验 名 :外部中断实验 *注 意 :由于P3.2口跟红外线共用,所以做按键实验时为了不让红外线影响实验效果,最好把红外线先 *取下来。 *实验效果 :K3按下LED左循环,K4按下LED变右循环 * *********************************************************************************/ #inc

文档评论(0)

1亿VIP精品文档

相关文档