河南理工大学单片机实验报告格式

 

学    号:  321308010516 

班    级:  电气本1305班

姓    名:     翟亚飞    

指导老师:     王莉      

2013.12


单片机核心板实验内容

一、  流水灯实验

1、实验目的:

1)简单I/O引脚的输出

2)掌握软件延时编程方法

3)简单按键输入捕获判断

2、完成功能要求

1)开机是点亮12发光二极管,闪烁三下

2)按照顺时针循环依次点亮发光二极管

3)通过按键将发光二极管的显示改为顺逆时针方式

二、  定时器或实时时钟实验

1、实验目的

1)数码管动态显示技术

2)定时器的应用

3)按键功能定义

2、完成功能要求

1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。

上述二个功能至少完成一种功能。

三、  双机通信实验

1、实验目的

UART 串行通信接口技术应用

2、完成功能要求

用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

四、  交通灯实验

1、实验目的

1)按键、数码管、发光二极管综合应用编程技术

2)数据存储于EEPROM的技术(也可以不使用)

3)定时中断技术

4)按键中断技术

2、完成功能要求

1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。

3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

实验一    流水灯实验

一、实验目的

1)简单I/O引脚的输出

2)掌握软件延时编程方法

3)简单按键输入捕获判断

二、实验实现的功能

1)开机是点亮12发光二极管,闪烁三下

2)按照顺时针循环依次点亮发光二极管

3)通过按键将发光二极管的显示改为顺逆时针方式

三、系统硬件设计

1)单片机主电路

2)12个发光二极管共阳极电路

3)矩阵按键电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)定义数组实现12个发光二极管的依次顺序和逆序运行。

2)用程序延时工具编写延时子程序。

3)按键输入端置零,每个按键都可实现正序逆序的切换。

4)每个led灯点亮之后都对按键进行依次扫描,确保按键输入有效捕捉。

5)对按键次数进行记录,为奇数逆序运行,为偶数顺序运行

6)用while循环语句实现开机点亮二极管并闪烁三下。

7)利用for语句实现每个led灯依次点亮一个周期。

五、实验过程中遇到的问题及解决方法

1)刚开始设计时,利用中断技术实现了流水灯功能,但由于没有跳线无法对电路连接进行重组,故选用查询模式。

2)对于按键怎样实现输入识别不是太清楚,通过查阅图书资料,并结合实际的设计程序,逐渐的清楚了。

3)对于延时程序刚开始设计延时时间太短,开机闪烁频率太快,视觉舒适度不高,通过合理设计延时,利用呼吸频率进行开机闪烁。

4)进行led灯顺序逆序点亮有两种方法,一个数组调用,另一个是按位移动点亮,由于自己c语言按位移动学的不是太好,以及时间所限,只好采用数组调用这个较简单的点亮方法。

                                                指导老师签字:

                                                日期:

实验二    定时器或实时时钟实验

一、实验目的

1)数码管动态显示技术

2)定时器的应用

3)按键功能定义

二、实验实现的功能

1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。

上述二个功能至少完成一种功能。

三、系统硬件设计

1)单片机主电路

2)12个发光二极管共阳极电路

3)矩阵按键电路

4)四位数码管动态显示电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)本实验为秒表定时器设计

2)秒表计时采用定时器中断技术,每1ms中断一次,并计一次数,计数到1000次,即1s时,秒数加1,并进行十进制转换,通过数码管显示出来。

3)按键捕捉采用条件判断法,计时结束才能用按键设置下一次计时时间。

4)时间设置完毕后,当按下启动计数键,定时器工作开始计时,计时时间等于设定时间,每过一秒计时时间减一,计时时间减到0时,即计时时间到计时器停止工作,发光二极管闪烁三下。

五、实验过程中遇到的问题及解决方法

1)由于第一个流水灯实验的设计的经验的积累,本次设计比较顺利。但还存在一些问题。

2)计时时间到后,发光二极管闪烁期间,数码管显示不连续,通过分析是led闪烁占用过长时间,通过在延时程序中增加显示程序,起到较好的效果。

3)在编写程序过程中出现CANNOT DETERMINE ROOT SEGMENT警告,并出现不能烧写到单片机开发板中,进过在网上寻找解决方案,知道是中断和主函数调用了同一子程序,一旦主程序调用该程序,中断来之后又调用该程序,会出错。

                                                指导老师签字:

                                                日期:

实验三    双机通信实验

一、实验目的

1)UART 串行通信接口技术应用

二、实验实现的功能

1)用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

三、系统硬件设计

1)两片单片机核心板

2)双机通信接口电路

3)矩阵按键输入电路

4)动态数码管电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)  该实验电路主要运用串口通信技术,对端口操作比较简单。

2)  对串行通信进行初始化设置,并选择合适波特率,计算‘TH1’、‘TL1’的值。

3)  按键扫描,读出按下的按键,并对其进行相应的按键编号。

4)  输出相应的按键编号。

5)  读入接受到的数据,并在数码管上显示。

五、实验过程中遇到的问题及解决方法

1)对串行口的工作原理不是太了解,通过看书和运用课本上的程序进行编程,试验后才掌握其原理。

2)程序编好之后,在两单片机用跳线把通信接口连接,进行试验发现会出现按下一个键后,在另一单片机数码管上无显示,出现传送丢失现象,还有传送出错,按下第一个键时,在另一个单片机上显示‘0’,而非应该显示的‘1’。通过对问题的分析,有跳线没有插好或则焊接不良的原因。进过对单片机焊接的检查,和对双单片机通信改为单片机对自己发送的数据进行接收。没有很好的效果。

3)程序下载到单片机上之后,当按下第一个键时,在另一片单片机上显示的‘1’,不是太清晰,通过在网上查询一些资料后,才知道是因为缺少“消隐”所致。加上消隐程序之后一切正常。

4)为了避免因接触不良而导致的数据传输出错,运用了软件查错技术,若数据传输出错,数码管会显示‘E’,报错。

                                                指导老师签字:

                                                日期:

实验四    交通灯实验

一、实验目的

1)按键、数码管、发光二极管综合应用编程技术

2)数据存储于EEPROM的技术(也可以不使用)

3)定时中断技术

4)按键中断技术

二、实验实现的功能

1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。

3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

三、系统硬件设计

1)单片机主电路

2)12发光二极管共阳极电路

3)矩阵按键输入电路

注:具体硬件电路见单片机核心板

四、系统软件设计

程序详见附录

设计思路:

1)  开机设置红灯(绿灯)、黄灯定时时间。

2)  交通灯为东西通南北停----等待----南北通东西停----等待----东西通南北停,依次循环。

3)  定时器产生中断计数,并控制数码管显示交通灯转换剩余时间。

4)  在交通灯显示程序中加入紧急按键检测程序,若有紧急按键按下,执行所有路口红灯显示,数码管显示为0。

五、实验过程中遇到的问题及解决方法

1)此次软件设计对程序有较清晰的了解,但还出现了一些问题,开机设置红灯(绿灯)、黄灯时间时数码管显示闪烁,经对程序检查知,自己的延时时间过长所致,另加入一个延时子程序,才得以解决

2)紧急按键按下时出现按键不灵的现象,经分析是自己没有考虑消除松手抖动,单片机产生误动作,加上一次消除连发程序、5ms延时程序、消除二次连发程序后就再没有出现按键不灵的现象。

                                                指导老师签字:

                                                日期:

附录

实验一流水灯实验程序

程序说明:任意键按下流水灯换向。


#include<reg52.h>

#define uchar unsigned char

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff};

tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f};

tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};

void Delay1500ms()             //@11.0592MHz

{

       unsigned char i, j, k;

       i = 32;

       j = 133;

       k = 174;

       do

       {

              do

              {

                     while (--k);

              } while (--j);

       } while (--i);

}

void Delay10ms()          //@11.0592MHz

{

       unsigned char i, j;

       i = 108;

       j = 145;

       do

{

              while (--j);

} while (--i);

}

void flicker()

{

       uchar n=0;

       while(n<=2)

              {

                     P2=0x00;

                     P3=0xc3;

                     Delay1500ms();

                     P2=0xff;

                     P3=0xff;

                     Delay1500ms();

                     n++;

               }

}

void main()

{

       uchar x=12;

       uchar y,g;

       flicker();

    while(1)

              {

                  if(y==2)

                     y=0;

                     if(y%2==1)

                     {

                           

                            for(x=12-x;x<=11;x++)

                            {

                                if(y%2==0)

                                   break;

                                   P2=tab3[x];

                                   P3=tab4[x];

                                   if(x==11)

                                   x=-1;

                                for(g=0;g<60;g++)

                                 {

                                   Delay10ms();

                                  

                                   ko1=0;

                                   ko2=0;

                                   ki1=1;

                                   ki2=1;

                                   ki3=1;

                                   if(!ki1||!ki2||!ki3)

                                       {

                                          Delay10ms();

                                          if(!ki1||!ki2||!ki3)

                                          y++;

                                          while(!ki1||!ki2||!ki3);

                                          break;

                                          }

                                  }

                            } 

                        }

       if(y%2==0)

              {

                    

                     for(x=12-x;x<=11;x++)

                  {

                     if(y%2==1)

                     break;

                     P2=tab1[x];

                     P3=tab2[x];

                     if(x==11)

                     x=-1;

                     for(g=0;g<60;g++)

                     {

                        Delay10ms();

                         ko1=0;

                         ko2=0;

                         ki1=1;

                            ki2=1;

                            ki3=1;

                            if(!ki1||!ki2||!ki3)

                            {

                                Delay10ms();                                        

                                   if(!ki1||!ki2||!ki3)

                                   y+=1;

                                 while(!ki1||!ki2||!ki3);

                                    break;

                            }

                      }       }

              }

       }

}


实验二定时器时钟实验程序

程序说明:开机设定定时时间,按3号键加1,按2号键加100,按1号键计时开始,时间到led灯闪烁三下,回到初始状态。


#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

sfr P1M1=0x91;

sfr P1M0=0x92;

tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

tab2[]={0xf7,0xfb,0xfd,0xfe};

tab3[4]={0};

uint a=0;

uint b=0;

uint c=0;

void Delay10ms()          //@11.0592MHz

{

       unsigned char i, j;

       i = 18;

       j = 235;

       do

       {

              while (--j);

       } while (--i);

}

void Delay5ms()           //@11.0592MHz

{

       unsigned char i, j;

       i = 54;

       j = 199;

       do

       {

              while (--j);

       } while (--i);

}

void Delay2ms()           //@11.0592MHz

{

       unsigned char i, j;

       i = 22;

       j = 128;

       do

       {

              while (--j);

       } while (--i);

}

void show()

{

char j;

       switch(j)

       {

              case 0:P0=tab2[j];j++;P1=tab1[tab3[0]];break;

              case 1:P0=tab2[j];j++;P1=tab1[tab3[1]];break;

              case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break;

              case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break;

              default:break;

       }

}

void flicker()

{

       uchar d=0,i,e;

       while(d<=2)

              {

                     P2=0x00;

                     P3=0xc3;

                     for(i=0;i<150;i++)

                     {

                     show();

                     Delay10ms();

                     }

                     P2=0xff;

                     P3=0xff;

                     for(e=0;e<150;e++)

                     {

                     show();

                     Delay10ms();

                     }

                     d++;

               }

}

void showint()

{

char j;

       switch(j)

       {

              case 0:P0=tab2[j];j++;P1=tab1[tab3[0]];break;

              case 1:P0=tab2[j];j++;P1=tab1[tab3[1]];break;

              case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break;

              case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break;

              default:break;

       }

}

void interrupt_timer1() interrupt 3

{

       TH1=0xfc;

       TL1=0x66;

       a++;

       if(a==1000)

       {

              b--;

              a=0;

              tab3[0]=b%10;

              tab3[1]=b/10%10;

              tab3[2]=b/100%10;

              tab3[3]=b/1000%10;

       }

       showint();

}

void main(void)

{

       uchar m,k;

       uint n=0;

       P1M1=0x00;

       P1M0=0xff;

       TMOD=0x10;

       TH1=0xfc;

       TL1=0x66;

       ET1=1;

       EA=1;

       while(1)

       {

              if(!TR1)

              {

                     k=0;

                     for(k=0;k<50;k++)

                     {

                            ko1=0;

                            ko2=0;

                            ki1=1;

                            ki2=1;

                            ki3=1;

                            if(!ki1)

                            {

                                   Delay5ms();

                                   if(!ki1)

                                          {

                                                 TR1=1;

                                                 c=1;

                                                 b=n;

                                                 tab3[0]=b%10;

                                                 tab3[1]=b/10%10;

                                                 tab3[2]=b/100%10;

                                                 tab3[3]=b/1000%10;

                                                 show();

                                                 break;

                                          }

                                          while(!ki1);

                                   }

                            if(!ki2)

                                   {

                                          Delay5ms();

                                          if(!ki2)

                                          n+=100;

                                          while(!ki2);

                                   }

                             if(!ki3)

                                   {

                                          Delay5ms();

                                          if(!ki3)

                                          n+=1;

                                          while(!ki3);

                                   }

                            tab3[0]=n%10;

                            tab3[1]=n/10%10;

                            tab3[2]=n/100%10;

                            tab3[3]=n/1000%10;

                            for(m=0;m<4;m++)

                                   {

                                   P0=tab2[m];         

                                   P1=tab1[tab3[m]];

                                   Delay2ms();

                                   P1=0;

                                   }

                             if(m==4)

                             m=0;

                      }

              }

              if(b==0&&c)

              {     c=0;

                     TR1=0;

                     n=0;

                     flicker();

              }

       }

}


实验三双机通信实验程序

程序说明:两单片机互相通信,在一个单片机上按下按键,在另一个单片机上显示相应键值,另一个单片机上按下按键,在这个单片机上显示相应键值。


#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sfr P1M1=0x91;

sfr P1M0=0x92;

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

sbit scran=P0^3;

tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79};

uchar a,b,n;

void Delay5ms()        //@11.0592MHz

{

       unsigned char i, j;

       i = 54;

       j = 199;

       do

       {

              while (--j);

       } while (--i);

}

void main()

{

       SCON=0xd0;

       TMOD=0x20;

       PCON=0x00;

       TH1=0xf4;

       TL1=0xf4;

       TR1=1;

       scran=0;

       while(1)

       {     uint c,i;

              n=a;

              ko1=0;

              ko2=1;

              ki1=1;

              ki2=1;

              ki3=1;

              if(!ki1)

                            {

                                   Delay5ms();

                                   if(!ki1)

                                   a=1;

                                   while(!ki1);

                            }

              if(!ki2)

                            {

                                   Delay5ms();

                                   if(!ki2)

                                   a=2;

                                   while(!ki2);

                            }

              if(!ki3)

                            {

                                   Delay5ms();

                                   if(!ki3)

                                   a=3;

                                   while(!ki3);

                            }

              ko1=1;

              ko2=0;

              ki1=1;

              ki2=1;

              ki3=1;

              if(!ki1)

                            {

                                   Delay5ms();

                                   if(!ki1)

                                   a=4;

                                   while(!ki1);

                            }

              if(!ki2)

                            {

                                   Delay5ms();

                                   if(!ki2)

                                   a=5;

                                   while(!ki2);

                            }

              if(!ki3)

                            {

                                   Delay5ms();

                                   if(!ki3)

                                   a=6;

                                   while(!ki3);

                            }

        

              if(a!=n)

              {

                            SBUF=a;

                            while(!TI);

                            TI=0;

               }

              if(RI)

                     {    

                            b=SBUF;

                            RI=0;

                            i=1;

                    

                           

                     }

                    

                            if(a!=n)

              {

                            SBUF=a;

                            while(!TI);

                            TI=0;

               }

              while(i)

                     {    

                     if(RI)

                     {

                            c=SBUF;

                            RI=0;

                            i=0;

                            }

                           

                     }

                      if(b!=c)

                            {

                             b=10;

                            }

             P1=0x00;

              P1=tab1[b];

       }

}


实验四交通灯实验程序

程序说明:上电设置红灯(绿灯)、黄灯时间,按3号键设置红灯(绿灯)时间,按2号键设置黄灯时间,按1号键运行工作,按任意3、4、5键急停,再按任意3、4、5键重新开始工作。


#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

void led_show();

uchar m,n;

uint a=0;

uint b=0;

uchar k,c,d,f,g,r,t=0;

sfr P1M1=0x91;

sfr P1M0=0x92;

sbit ko1=P3^6;

sbit ko2=P3^7;

sbit ki1=P0^5;

sbit ki2=P0^6;

sbit ki3=P0^7;

sbit dh=P2^0;

sbit dl=P2^2;

sbit dy=P2^1;

sbit xh=P2^6;

sbit xl=P3^2;

sbit xy=P2^7;

sbit nh=P2^3;

sbit nl=P2^5;

sbit ny=P2^4;

sbit bh=P3^3;

sbit bl=P3^5;

sbit by=P3^4;

tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

tab2[]={0xf7,0xfb,0xfd,0xfe};

tab3[4]={0};

void show()

{

       char j;

       switch(j)

       {

case 0:P0=tab2[j];j++;P1=tab1[tab3[0]];break;

case 1:P0=tab2[j];j++;P1=tab1[tab3[1]];break;

case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break;

case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break;

default:break;

       }

}

void Delay5ms()        //@11.0592MHz

{

       unsigned char i, j;

       i = 54;

       j = 199;

       do

       {

              while (--j);

       } while (--i);

}

void Delay2ms()        //@11.0592MHz

{

       unsigned char i, j;

       i = 22;

       j = 128;

       do

       {

              while (--j);

       } while (--i);

}

void interrupt_timer1() interrupt 3

{

       TH1=0xfc;

       TL1=0x66;

       a++;

       if(a==1000)

       {

              b++;

              a=0;

       }

       if(t==0)

       {

       if(b<=m&&b>=0)

       {

       tab3[0]=(m-b)%10;

       tab3[1]=(m-b)/10%10;

       tab3[2]=(m-b)%10;

       tab3[3]=(m-b)/10%10;

       }

       if(b<=d&&b>m)

       {

       tab3[0]=(d-b)%10;

       tab3[1]=(d-b)/10%10;

       tab3[2]=(d-b)%10;

       tab3[3]=(d-b)/10%10;

       }

       if(b<=f&&b>d)

       {

       tab3[0]=(f-b)%10;

       tab3[1]=(f-b)/10%10;

       tab3[2]=(f-b)%10;

       tab3[3]=(f-b)/10%10;

       }

       if(b<=g&&b>f)

       {

       tab3[0]=(g-b)%10;

       tab3[1]=(g-b)/10%10;

       tab3[2]=(g-b)%10;

       tab3[3]=(g-b)/10%10;

       }

       }

       else

       {

             

       tab3[0]=0;

       tab3[1]=0;

       tab3[2]=0;

       tab3[3]=0;

       }

       show();

}

void det()

{                r=0;

               for(;r<50;r++)

               {   ko1=1;

                     ko2=0;

                     ki1=1;

                     ki2=1;

                     ki3=1;

                     if(!ki1||!ki2||!ki3)

                            {

                                   Delay5ms();

                                   if(!ki1||!ki2||!ki3)

                                          {

                                                 P2=0xb6;

                                                 bl=1;

                                                 by=1;

                                                 xl=1;

                                                 bh=0;

                                                t=1;

                                              while(!ki1||!ki2||!ki3);

                                                 Delay5ms();

                                                 while(!ki1||!ki2||!ki3);

                                  while(1)

                                                        {                                                     

                                                               if(!ki1||!ki2||!ki3)                     

                                                                      {                                

                                                                             while(!ki1||!ki2||!ki3);

                                                                             b=0;

                                                                             t=0;

                                                                             break;

                                                       }

                                         }

                          }

                   }

        }  

 }

void led_show()

{

       while(1)

       {

              dl=1;

              xl=1;

              nl=1;

              bl=1;

              dh=1;

              xh=1;

              nh=1;

              bh=1;

              dy=1;

              xy=1;

              ny=1;

              by=1;

              d=(m+n);

              f=(2*m+n);

              g=(2*m+2*n);

              if(b<m&&b>=0)        //东西通

              {

                     dl=0;

                     xl=0;

                     nl=1;

                     bl=1;

                     dh=1;

                     xh=1;

                     nh=0;

                     bh=0;

                     dy=1;

                     xy=1;

                     ny=1;

                     by=1;

                     det();

              }

              if(b<d&&b>=m)        //黄

              {

                     dl=1;

                     xl=1;

                     nl=1;

                     bl=1;

                     dh=1;

                     xh=1;

                     nh=1;

                     bh=1;

                     dy=0;

                     xy=0;

                     ny=0;

                     by=0;

                     det();

              }

              if(b<f&&b>=d)          //南北通

              {

                     dl=1;

                     xl=1;

                     nl=0;

                     bl=0;

                     dh=0;

                     xh=0;

                     nh=1;

                     bh=1;

                     dy=1;

                     xy=1;

                     ny=1;

                     by=1;

                     det();

              }

              if(b<g&&b>=f)          //黄

              {

                     dl=1;

                     xl=1;

                     nl=1;

                     bl=1;

                     dh=1;

                     xh=1;

                     nh=1;

                     bh=1;

                     dy=0;

                     xy=0;

                     ny=0;

                     by=0;

                     det();

              }

           if(b==g)

              b=0;

              }

}

void main()

{

       P1M1=0x00;

       P1M0=0xff;

       TMOD=0x10;

       TH1=0xfc;

       TL1=0x67;

       ET1=1;

       EA=1;

       TR1=0;

       while(1)

       {

              if(!TR1)

              {

                     k=0;

                     for(k=0;k<50;k++)

                     {

                            ko1=0;

                            ko2=1;

                            ki1=1;

                            ki2=1;

                            ki3=1;

                            if(!ki1)

                                   {

                                          Delay5ms();

                                          if(!ki1)

                                          {

                                                 TR1=1;

                                                 led_show();

                        }

                        while(!ki1);

                     }

                            if(!ki2)

                                    {

                                          Delay5ms();

                                          if(!ki2)

                                          n+=1;

                                          if(n==99)

                                          n=0;

                                          while(!ki2);

                                    }

                           if(!ki3)

                                   {

                                          Delay5ms();

                                          if(!ki3)

                                      m+=1;

                                          if(m==99)

                                          m=0;

                                          while(!ki3);

                                   }

                            tab3[0]=m%10;

                            tab3[1]=m/10%10;

                            tab3[2]=n%10;

                            tab3[3]=n/10%10;

                            for(c=0;c<4;c++)

                            {

                                   P0=tab2[c];

                                   P1=tab1[tab3[c]];

                                   Delay2ms();

                            }

                       if(m==4)

                            c=0;

                    }

              }

       }

}

相关推荐