新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机键盘输入编程

单片机键盘输入编程

作者:时间:2012-09-29来源:网络收藏

单片机键盘输入编程

下面为判断按键输入的T1定时中断服务子程序,序号为解释方便而加。

/*10mS定时中断服务子函数*/

序号 1:void zd1(void) interrupt 3

2:{

3:uchar i,j;i=P1;j=P3;

4:TH1=-(5000/256);

5:TL1=-(5000%256);

6:if(m==1)n++;

7:if(n>=30){n=0;m=0;}

8:P3_7=0;

9:P1=0xff;

10:if(P1!=0xff)

11:{

12:if(n==0)m=1;

13:{if(n==1)

14:{

15:if(P1_0==0){set++;left=0;}

16:if(set>=4)set=0;

17:if(set==1)flag=0x55;

18:if(P1_1==0)left++;

19:if(left>=4)left=0;

20:if(P1_2==0){up++;

21:switch(left)

22:{

23:case 0:{if(up>=10)up=0;}break;

24:case 1:{if(up>=6)up=0;}break;

25:case 2:{if(up>=10)up=0;}break;

26:case 3:{if(up>=3)up=0;}break;

27:default:break;

28:}

29:}

30:if(P1_2==0){

31:switch(set)

32:{case 0:break;

33:case 1:x[left]=up;break;

34:case 2:{y[left]=up;if(P1_3==0)o_f1=!o_f1;}break;

35:case 3:{z[left]=up;if(P1_3==0)o_f2=!o_f2;}break;

36:default:break;

37:} }

38:else {

39:switch(set)

40:{case 0:break;

41:case 1:up=x[left];break;

42:case 2:{up=y[left];if(P1_3==0)o_f1=!o_f1;}break;

43:case 3:{up=z[left];if(P1_3==0)o_f2=!o_f2;}break;

44:default:break;}

45 :}}

46:}}

47:P1=i;P3=j;

48:}

序号1(程序解释,以下同):声明定时1中断函数。

序号2:定时1中断函数开始。

序号3:定义i、j为无符号字符型局部变量。将当时的P1口、P3口状态送i、j暂存。

序号4、5:定时器T1重新载入10mS初值。

序号6:如变量m等于1,则变量n递增。说明:m、n为整个程序开始时定义的无符号字符型全局变量。



关键词: 单片机 输入编程

评论


相关推荐

技术专区

关闭