📄 sarbit.c
字号:
/*sarbit.c*/
/*Super simple Arbitrary waveform generator*/
#include<stdio.h>
#include<dos.h>
#define MAX_STATES 12
#define UNIT 100 /*define the count for UNIT*/
/*for our case UNIT must translate to 10 us*/
/*a specific delay routine tuned to produced the required delay*/
void mydel(unsigned int);
void mydel(unsigned int dtime)
{
unsigned int looptime, temp;
for(looptime=0; looptime<dtime; looptime++)
for(temp=0;temp<UNIT;temp++);
}
main()
{
unsigned char wstate[12], temp=0;
unsigned int wdelay[12];
unsigned int dport=0x378;
/*set the address of the DATA port*/
/*assign the required states to the array elements*/
wstate[0]=0x16;
wstate[1]=0x1F;
wstate[2]=0x1E;
wstate[3]=0x14;
wstate[4]=0x16;
wstate[5]=0x0A;
wstate[6]=0x0B;
wstate[7]=0x1B;
wstate[8]=0x0B;
wstate[9]=0x0A;
wstate[10]=0x02;
wstate[11]=0x12;
/*assign the required delay time to the array elements*/
wdelay[0]=3;
wdelay[1]=3;
wdelay[2]=1;
wdelay[3]=4;
wdelay[4]=1;
wdelay[5]=1;
wdelay[6]=3;
wdelay[7]=2;
wdelay[8]=2;
wdelay[9]=2;
wdelay[10]=2;
wdelay[11]=4;
/*do it for ever*/
for(;;)
{
disable(); /*disable external interrupts*/
/*generate the waveforms with getting disturbed*/
for(temp=0; temp<MAX_STATES; temp++)
{
outportb(dport, wstate[temp]);
mydel(wdelay[temp]);
}
enable(); /*now enable interrupts again*/
/*so that pending interrupts can be serviced*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -