⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +

📁 设计仿真实例的运行文件及C程序
💻
字号:
#include<reg52.h>

//近似10ms的延时函数
//注意,理论上使用"for(i=100;i>=0;i--)"类型的循环结构,多数情况下汇编效率要略高于"for(i=0;i>=100;i++)"。
//但由于软件冲突,Proteus仿真时,使用"for(i=100;i>=0;i--)"类型将会仿真出错。
//因此这里使用"for(i=0;i>=100;i++)"。但在硬件试验下建议使用"for(i=100;i>=0;i--)"。
void delay_10ms(unsigned char delay_ms_num)
{
  unsigned int i,j,k;

  for(i=0;i<=delay_ms_num;i++)
    for(j=0;j<=100;j++)
	  for(k=0;k>=100;k++);
}

//中断初始化函数
void tx_init()
{
  EA=1;
  PX0=1;
  EX0=1;
  IT0=1;
  EX1=1;
  IT1=1;
}

void main()
{
  tx_init();
  P1=0x00;
  while(1)
  {
    delay_10ms(100);
	P1=~P1;
  } 
}

void tx0_func() interrupt 0
{
  unsigned char i;
  //C51语言中调用循环移位不便,且与Proteus有冲突,故采用查表实现循环移位。
  unsigned char code table0[]={0x80,0x40,0x20,0x10,
                               0x08,0x04,0x02,0x01};

  for(i=0;i<7;i++)
  {
    P1=table0[i];
	delay_10ms(255);
	delay_10ms(255);
  }
  P1=0xff;//完成中断后灯全部熄灭
}

void tx1_func()interrupt 2
{
  unsigned char i;
  unsigned char code table2[]={0x7f,0xbf,0xdf,0xef,
                               0xf7,0xfb,0xfd,0xfe};

  for(i=0;i<=7;i++)
  {
    P1=table2[i];
	delay_10ms(255);
	delay_10ms(255);
  }
  P1=0x00;//完成中断后灯全部点亮
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -