📄 wave.c
字号:
#include <absacc.h>
#include"reg52.h"
#define DA0832_1 PBYTE[0xff]
#define DA0832_2 XBYTE[0xfdff]
#define uchar unsigned char
#define uint unsigned int
sbit WR2_XFER=P2^2;
sbit cs=P2^0;
// define user keyboard begin
sbit mode=P1^0;
sbit inc=P1^1;
sbit dec=P1^2;
bdata uchar oldk;
sbit old_dec=oldk^6;
sbit old_inc=oldk^5;
sbit old_mode=oldk^4;
bdata uchar act_key;
sbit act_dec=act_key^6;
sbit act_inc=act_key^5;
sbit act_mode=act_key^4;
bdata uchar key;
sbit ktmp=key^7;
sbit keyfast=key^4;
uchar keycn;
// define user keyboard end
uchar code sintab[]={128,131,134,137,140,144,147,150,153,156,159,
162,165,168,171,174,177,179,182,185,188,191,193,196,199,201,204,
206,209,211,213,216,218,220,222,224,226,228,230,232,234,235,237,
239,240,241,243,244,245,246,248,249,250,250,251,252,253,253,254,
254,254,255,255,255,255,255,255,255,254,254,254,253,253,252,251,
250,250,249,248,246,245,244,243,241,240,239,237,235,234,232,230,
228,226,224,222,220,218,216,213,211,209,206,204,201,199,196,193,
191,188,185,182,179,177,174,171,168,165,162,159,156,153,150,147,
144,140,137,134,131,128,125,122,119,116,112,109,106,103,100,97,
94,91,88,85,82,79,77,74,71,68,65,63,60,57,55,52,50,47,45,43,40,
38,36,34,32,30,28,26,24,22,21,19,17,16,15,13,12,11,10,8,7,6,6,5,
4,3,3,2,2,2,1,1,1,1,1,1,1,2,2,2,3,3,4,5,6,6,7,8,10,11,12,13,15,
16,17,19,21,22,24,26,28,30,32,34,36,38,40,43,45,47,50,52,55,57,
60,63,65,68,71,74,77,79,82,85,88,91,94,97,100,103,106,109,112,
116,119,122,125,128,131,134,137,140,144,147,150,153,156,159,
162,165,168,171,174,177,179,182,185,188,191,193,196,199,201,204,
206,209,211,213,216,218,220,222,224,226,228,230,232,234,235,237,
239,240,241,243,244,245,246,248,249,250,250,251,252,253,253,254,
254,254,255,255,255,255,255,255,255,254,254,254,253,253,252,251,
250,250,249,248,246,245,244,243,241,240,239,237,235,234,232,230,
228,226,224,222,220,218,216,213,211,209,206,204,201,199,196,193,
191,188,185,182,179,177,174,171,168,165,162,159,156,153,150,147,
144,140,137,134,131,128,125,122,119,116,112,109,106,103,100,97,
94,91,88,85,82,79,77,74,71,68,65,63,60,57,55,52,50,47,45,43,40,
38,36,34,32,30,28,26,24,22,21,19,17,16,15,13,12,11,10,8,7,6,6,5,
4,3,3,2,2,2,1,1,1,1,1,1,1,2,2,2,3,3,4,5,6,6,7,8,10,11,12,13,15,
16,17,19,21,22,24,26,28,30,32,34,36,38,40,43,45,47,50,52,55,57,
60,63,65,68,71,74,77,79,82,85,88,91,94,97,100,103,106,109,112,
116,119,122,125};
void keysan()
{ktmp=mode; //---scan mode key down
if(!old_mode&ktmp)act_mode=0;
if(old_mode&!ktmp)act_mode=1;
old_mode=ktmp;
ktmp=inc; //---scan inc key down
if(old_inc&!ktmp){act_inc=1;keycn=0;keyfast=0;}
if(!old_inc&ktmp){act_inc=0;keyfast=0;}
if(!old_inc&!ktmp)
{++keycn;
if(keycn==0x20)
{act_inc=1;
keyfast=1;keycn=0;}
}
old_inc=ktmp;
ktmp=dec; //---scan dec key down
if(old_dec&!ktmp){act_dec=1;keycn=0;keyfast=0;}
if(!old_dec&ktmp){act_dec=0;keyfast=0;}
if(!old_dec&!ktmp)
{++keycn;
if(keycn==0x20)
{act_dec=1;
keyfast=1;keycn=0;
}
}
old_dec=ktmp;
}
void main()
{uchar i,j=0,initial=255;cs=0;
TMOD=0x02; //设置定时器T0工作方式2
TH0=256-initial;
TL0=256-initial;
TR0=1;
for(i=0;i<256;i++)
{ keysan();
if(act_mode==1)
{ act_mode=0;
j=j+32;
}
else
j=j;
if(act_inc==1)
{act_inc=0;
if(keyfast==0)
{
if(initial>5)initial-=5;
else
initial=initial;
}
else
{keyfast=1;
if(initial>80)initial-=80;
else
initial=initial;
}
}
if(act_dec==1)
{act_dec=0;
if(keyfast==0)
{
if(initial<=250)initial+=5;
else
initial=initial;
}
else
{keyfast=1;
if(initial<=175)initial+=80;
else
initial=initial;
}
}
if(TF0==1)
{TF0=0;
TR0=0;
TH0=256-initial;
TL0=256-initial;
TR0=1;
WR2_XFER=1;
DA0832_1=sintab[i];
DA0832_2=sintab[i+j];
WR2_XFER=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -