📄 数字存储示波器.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 + -