📄 dac0832.c
字号:
//通过DAC0832产生各种波形
#include <AT892051.H>
#include <math.H>
#define uchar unsigned char
#define uint unsigned int
//*************************************************
#define lin1 P3_2
#define lin2 P3_3
#define dat P3_4
#define clk P3_5
//*************************************************
sbit a0=ACC^0; sbit a1=ACC^1; sbit a2=ACC^2; sbit a3=ACC^3;
sbit a4=ACC^4; sbit a5=ACC^5; sbit a6=ACC^6; sbit a7=ACC^7;
//*************************************************
void delay (uchar t) //延时子程序
{ uchar s;
while (t--)
{for (s=0xff;s>0;s--)
{;}
}
}
//*************************************************
uchar jianma(uchar a) //按键特征码转换成16进制码
{ switch (a)
{case 0x01:{a=0x00;}break;
case 0x02:{a=0x01;}break;
case 0x03:{a=0x02;}break;
case 0x04:{a=0x03;}break;
case 0x05:{a=0x04;}break;
case 0x06:{a=0x05;}break;
case 0x07:{a=0x06;}break;
case 0x08:{a=0x07;}break;
case 0x81:{a=0x08;}break;
case 0x82:{a=0x09;}break;
case 0x83:{a=0x0a;}break;
case 0x84:{a=0x0b;}break;
case 0x85:{a=0x0c;}break;
case 0x86:{a=0x0d;}break;
case 0x87:{a=0x0e;}break;
case 0x88:{a=0x0f;}break;
default:{a=0xff;}
}
return (a);
}
//*************************************************
void txd(uchar z) //串口发送子程序
{ TMOD=0X20;
TL1=0xfd;TH1=0xfd; //256-11059200/384/9600=0xfd
SCON=0x50;PCON=0x00; //fang shi 1
TR1=1; //ji shu qi
SBUF=z;
while (TI==0); //wei 0 deng dai
TI=0;
}
//*************************************************
uchar rxd(void) //串口接收子程序
{ uchar x;
TMOD=0X20;
TL1=0xfd;TH1=0xfd; //256-11059200/384/9600=0xfd
SCON=0x50;PCON=0x00; //fang shi 1
TR1=1; //ji shu qi
while (RI==0);
RI=0;
x=SBUF;
return (x);
}
//*************************************************
void da1(void) // /|/|/|/|/|/|/|/|
{uchar a;
while (1)
{for (a=0;a<255;a++)
{P1=a;}
}
}
//*************************************************
void da2(void) //_-_-_-_-_-_-_-_-_-
{while (1)
{P1=0xff;
P1=0x00;
}
}
//*************************************************
void da3(void) //^^^^^^^^^^^^^^^^^
{uchar a;
while (1)
{for (a=0;a<255;a++)
{P1=a;}
for (a=255;a>0;a--)
{P1=a;}
}
}
//*************************************************
void ls164(uchar ls)
{ACC=ls;
dat=a7; clk=0; clk=1; ACC=ls;
dat=a6; clk=0; clk=1; ACC=ls;
dat=a5; clk=0; clk=1; ACC=ls;
dat=a4; clk=0; clk=1; ACC=ls;
dat=a3; clk=0; clk=1; ACC=ls;
dat=a2; clk=0; clk=1; ACC=ls;
dat=a1; clk=0; clk=1; ACC=ls;
dat=a0; clk=0; clk=1;
}
//*************************************************
uchar key(void)
{uchar a;
lin1=1; lin2=1; ls164(0x00);
if ((lin1&&lin2)==0) //key is on
{delay(0x01); ls164(0xff);
dat=0;
for (a=8;a>0;a--)
{clk=0; clk=1;
if (lin1==0) {return (a); break;}
if (lin2==0) {return (a|0x80);break;}
dat=1;
}
return (0x00);
}
return (0x00);
}
//#################################################
main ()
{uchar a,b; //ad di zhi
txd(0xff);
while (1)
{lin1=1; lin2=1; ls164(0x00);
if ((lin1&&lin2)==0) //key is on
{a=key(); b=jianma(a);
while ((lin1&&lin2)==0);
if (b<0x10) {txd(b);}
if (b==0x01) {da2();}
if (b==0x02) {da2();}
if (b==0x03) {da3();}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -