📄 dac.#2
字号:
/************************************************************
* Copyright (C) 2006, 华中科技大学电气与电子科技创新中心 *
* All Rights Reserved. *
* *
* 文件名: dac.c *
* 文件描述: 用于简易逻辑分析仪的波形显示函数 *
* *
* 当前版本: 1.0 *
* 作者: 王璠(wang.fan@smail.hust.edu.cn) *
* 完成日期: 2008年7月22日 *
************************************************************/
//#include"dac.h"
#include"main.h"
unsigned char xdata fifowindow[8][20]; //FIFO寄存器
unsigned int keyW; //存储键值
unsigned char time_flag = 9; //时间标志线
void DisplayLogicWave(unsigned int delaytime)
{
unsigned int i,j,n=0,trig,k,time,time1,tflag;
unsigned char idata bias0[2][8] = {{0,32,64,96,128,160,192,224},{20,52,84,116,148,180,212,244}}; //8通道偏置电平,第一行为低,第二行为高
unsigned char idata bias1[2][8] = {{224,192,160,128,96,64,32,0},{244,212,180,148,116,84,52,20}};
unsigned int idata wire0[2][8] = {{0,32,64,96,128,160,192,224},{60,92,124,156,188,220,242,255}}; //触发位置标志线
unsigned int idata wire1[2][8] = {{224,212,160,128,96,64,32,0},{255,242,220,188,156,124,92,60}};
unsigned int xdata timewire0[2][8] = {{0,32,64,96,128,160,192,224},{30,62,94,126,158,190,212,225}}; //时间标志线
unsigned int xdata timewire1[2][8] = {{224,212,160,128,96,64,32,0},{225,212,190,158,126,94,62,30}};
unsigned char xdata temp[320];
//将fifo中的数据按扫描顺序存入temp中
///////////////////////////////////////////////
for(i=0;i<8;i++)
{
for(j=0;j<20;j++)
{
temp[n] = bias0[fifowindow[i][j]][i];
n++;
}
}
for(i=0;i<8;i++)
{ k = 7-i;
for(j=0;j<20;j++)
{
temp[n] = bias1[fifowindow[k][j]][i];
n++;
}
}
///////////////////////////////////////////////
trig = trig_delay*5+3; //将触发延迟转化为触发标志线的位置
tflag = time_flag*5+3;
//if(trig_delay>19)
//
//
//
//
for(time=0;time<delaytime;time++)
for(time1=0;time1<1000;time1++)
// while(1)
{
n = 0;
//从CH0扫到CH7
//////////////////////////////////////////
for(i=0;i<8;i++)
{
for(j=0;j<100;j++)
{
SFRPAGE = DAC0_PAGE;
DAC0H = j;
if(j%5==0)
{
SFRPAGE = DAC1_PAGE;
DAC1H = temp[n];
n++;
}
if(j==trig)
{
SFRPAGE = DAC1_PAGE;
DAC1H = wire0[1][i];
DAC1H = wire0[0][i];
}
if(j==tflag)
{
SFRPAGE = DAC1_PAGE;
DAC1H = timewire0[1][i];
DAC1H = timewire0[0][i];
}
}
}
//从CH7扫到CH0,先正向扫描后反向扫描防止波形过冲
///////////////////////////////////////////////////
for(i=0;i<8;i++)
{
for(j=0;j<100;j++)
{
SFRPAGE = DAC0_PAGE;
DAC0H = j;
if(j%5==0)
{
SFRPAGE = DAC1_PAGE;
DAC1H = temp[n];
n++;
}
if(j==trig)
{
SFRPAGE = DAC1_PAGE;
DAC1H = wire1[1][i];
DAC1H = wire1[0][i];
}
if(j==tflag)
{
SFRPAGE = DAC1_PAGE;
DAC1H = timewire1[1][i];
DAC1H = timewire1[0][i];
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -