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

📄 数字存储示波器.c

📁 数字存储示波器设计
💻 C
字号:
#include <reg51.h>
#include <absacc.h>

#define uchar unsigned char
#define uint  unsigned int

#define ad7528a XBYTE[0x7ffe]  			//D/A输出端A口
#define ad7528b XBYTE[0x7fff]  			//D/A输出端B口
#define ADCOM	XBYTE[0xff7d]			//A/D启动转换
#define ADHI	XBYTE[0xff7f]			//A/D高位数据存储单元
#define ADLO	XBYTE[0xff7b]			//A/D低位数据存储单元
#define ram6	XBYTE[0xb000]			//6264存储始地址

sbit  SHA=P3^3;					//采样保持逻辑输入端
sbit  k1=P1^0;
sbit  k2=P1^1;
sbit  k3=P1^2;
sbit  k4=P1^3;

uchar  xdata *p,*ps;				
uchar x;

void int0_ad() interrupt 0 using 1		//外中断0服务子程序
{
  SHA=0;					//保持
  x=(ADHI<<4)+ADLO;				//取A/D转换数据
}

void delay()					//延时子程序
{
  uchar j;
  for(j=0;j<100;j++) ;
}

uchar key()					//按键子程序
{
  if(k1==0||k2==0||k3==0||k4==0)
   {
	delay();
	if(k1==0)	return 1;
	else if(k2==0)  return 2;
	else if(k3==0)  return 3;
	else if(k4==0)  return 4;
   }
  else return(0);
}

void main()
{ 
  uchar i=100;
  uchar j=100;
  p=&ram6;					//取存储首地址
  ps=&ram6;					//取存储首地址
  ps=ps+150;					//设定存储末地址
  SHA=1;					//采样
  IT0=1;
  EX0=1;
  EA=1;						//开中断
  ADCOM=0;					//启动A/D转换
  for(;;)					//等待中断
    {
	 if(key()==1)				//是否有KEY1按下,若有,冻结
	  {
	   EA=0;
	   for(;;)
		{
		 p++;
		 x=*p;
		 ad7528a=j++;
		 ad7528b=x;
		 if(j<100||j>200)  j=100;
		 if(p>=ps)  p=ps-149;
		 if(key()==4)			//冻结状态退出键
		     { EA=1;  break; };
		}
	   }
	 if(SHA==0)				//直通
	   {
		ad7528a=i++;
	        ad7528b=x;
		*p=x;
		p++;
		if(i<100||i>200)
		  i=100;
		if(p>=ps) p=ps-149;
	        SHA=1;
	        ADCOM=0;
	   }
	}
}

⌨️ 快捷键说明

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