关于#c语言#的问题:写完以后发现开始和暂停是一个按键,该怎么改一下#include <reg52.h>

写完以后发现开始和暂停是一个按键,该怎么改一下

#include<reg52.h>   //���ļ��ж����˵�Ƭ����һЩ���⹦�ܼĴ���

#define uint unsigned int   // ???
#define uchar unsigned int
uchar code table0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  
uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

sbit du=P2^6;  // ����ܶ�ѡ����������λ
sbit we=P2^7;  // �����λѡ����������λ
sbit S2=P3^0;  // ����S2
sbit S3=P3^1;  // ����S3
sbit S4=P3^2;  // ����S4
long shu;         // ����������
// ��ʱ����
void delay(int z) 

{
   unsigned int  x,y;
   for(x=z;x>0;x--)
   for(y=114;y>0;y--);
}
// �������ʾ����
void display(uchar aa,uchar bb,uchar cc,uchar dd,uchar ee,uchar ff)
{ 
  du=1;P0=table0[aa];du=0;we=1;P0=0xfe;we=0;delay(1);
  du=1;P0=table1[bb];du=0;we=1;P0=0xfd;we=0;delay(1);
  du=1;P0=table0[cc];du=0;we=1;P0=0xf7;we=0;delay(1);
  du=1;P0=table1[dd];du=0;we=1;P0=0xef;we=0;delay(1);
  du=1;P0=table0[ee];du=0;we=1;P0=0xbf;we=0;delay(1);
  du=1;P0=table0[ff];du=0;we=1;P0=0x7f;we=0;delay(1);
  we=1;P0=0xff;we=1;
}
void init() //��ʼ������
{
  TMOD=0x01; //��ʱ��0����ģʽΪģʽ1
  TH0=(65536-9000)/256; //��ʱ��0��8λ��ֵ��ʵ�ֶ�ʱ1ms
  TL0=(65536-9000)%256;; //��ʱ��0��8λ��ֵ��ʵ�ֶ�ʱ1ms
  ET0=1; //��ʱ��0�ж�����
  EA=1; //ȫ���ж�����
  TR0=0; //��ʱ��0ֹͣ����
  P3=0xff; //P3�ڳ�ʼ��Ϊ�ߵ�ƽ
  
}
void main() //������
{
  init(); //���ó�ʼ������
  while(1) //��ѭ��
  {
    if (S2==0) //�ж�S2�Ƿ��£��͵�ƽ��
    {
      delay(15); //��ʱ������������
      if(S2==0) //�ٴ��ж�S2�Ƿ���
      {
        TR0=~TR0; //��ʱ��0��ʼ��ֹͣ������ͨ��ȡ��TR0ʵ�֣�
               while(S2==0); //�ȴ�S2�ɿ����ߵ�ƽ��
      }
    }
if(S3==0)  //�ж�S3�Ƿ��£��͵�ƽ��

    {
      delay(15); //��ʱ������������
      while(1) //����ѭ��
      {
            display(0,0,0,0,0,0); //���������ʾ����
            if(S2==0) //�ж�S2�Ƿ���
            {
                delay(15); //��ʱ������������
                shu=0;  //����������
                TR0=0; //��ʱ��0ֹͣ����
                break; //����ѭ��
            }
        }
    }
      display(shu/6000/10,shu/6000%10,shu%6000/100/10,shu%6000/100%10,
      shu%6000%100/10,shu%6000%100%10); 
    }
  }
   void timer0() interrupt 1 //��ʱ���ж�
   {
     TH0=(65536-9000)/256; //��ʱ��0��8λ��ֵ��ʵ�ֶ�ʱ1ms
     TL0=(65536-9000)%256; //��ʱ��0��8λ��ֵ��ʵ�ֶ�ʱ1ms
     shu++; //��������1
     if(shu==600000) //�������ﵽ600000ʱ�����¿�ʼ����
       shu=0;
   }
}


65行,你前面判断的还是S3,怎么一下变成S2了

  • 这篇博客: 杭电计算机组成原理课程设计-实验七-寄存器堆设计实验中的 REG模块测试用例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • initial begin
    		// Initialize Inputs
    		W_Data = 0;
    		R_Addr_A = 10101;
    		R_Addr_B = 0;
    		W_Addr = 0;
    		Write_Reg = 0;
    		rst = 0;
    		clk = 0;
    		#100
    		
    		W_Data = 32'hAAAAAAAA;
    		R_Addr_A = 0;
    		R_Addr_B = 0;
    		W_Addr = 10101;
    		Write_Reg = 1;
    		#100
    		
    		W_Data = 0;
    		R_Addr_A = 10101;
    		R_Addr_B = 0;
    		W_Addr = 0;
    		Write_Reg = 0;
    		rst = 0;
    		clk = 0;
    		#100
    		
    		W_Data = 32'hFFFFFFFF;
    		R_Addr_A = 0;
    		R_Addr_B = 0;
    		W_Addr = 10101;
    		Write_Reg = 1;
    		clk = 1;
    		#100
    		
    		W_Data = 0;
    		R_Addr_A = 10101;
    		R_Addr_B = 0;
    		W_Addr = 0;
    		Write_Reg = 0;
    		clk = 0;
    		#100
    		
    		rst = 1;
    		W_Data = 0;
    		R_Addr_A = 10101;
    		R_Addr_B = 0;
    		W_Addr = 0;
    		Write_Reg = 0;
    		#100
    		
    		rst = 0;
    		W_Data = 0;
    		R_Addr_A = 01010;
    		R_Addr_B = 0;
    		W_Addr = 0;
    		Write_Reg = 0;
    		#100
    		
    		W_Data = 32'hAABBCCDD;
    		R_Addr_A = 0;
    		R_Addr_B = 0;
    		W_Addr = 01010;
    		Write_Reg = 1;
    		clk = 1;
    		#100
    		
    		W_Data = 0;
    		R_Addr_A = 01010;
    		R_Addr_B = 0;
    		W_Addr = 0;
    		Write_Reg = 0;
    		#100;
    		
    		W_Data = 0;
    		R_Addr_A = 0;
    		R_Addr_B = 0;
    		W_Addr = 0;
    		Write_Reg = 0;
    		#100;
            
    	end
    endmodule