?? da.c
字號:
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
code unsigned char Sintab[128]={64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,
109,111,113,115,117,118,120,121,123,124,125,126,126,
127,127,127,127,127,127,127,126,126,125,124,123,121,
120,118,117,115,113,111,109,106,104,102,99,96,94,91,
88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39,
36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,
1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,
25,28,31,33,36,39,42,45,48,51,54,57,60};
char counter_10,k,m=1; //置標志和常數、變量
void timer0int() //定時器\計數器設置
{TMOD=0X51;
TH0=0XB0;
TL0=0X3C;
TH1=0xff;
TL1=0xff;
ET1=1;
TR1=1;
ET0=1;
TR0=1;
EA=1;
}
void timer0() interrupt 1 using 1 //定時器溢出中斷服務程序
{ TH0=0XB0;
TL0=0X3C;
counter_10++;
if(counter_10==20)counter_10=0;
}
void timer1() interrupt 3 using 0 //計數器1溢出中斷服務程序
{TH1=0xff;
TL1=0xff;
TR1=1;
EA=1;
k++;
if(k==4)k=0;
}
void int0() interrupt 2 using 0
{
m++;
if(m==10)m=0;
}
void fang(void) //方波
{uchar i;
while(k==2)
{if(i<=120/m)
P1=0;
else P1=128/m;
i++;
if(i==240/m)i=0;
}
}
void juchi(void) //鋸齒波
{uchar i=0;
while(k==1)
{P1=i;
i++;
if(i==248/m)i=0;
}
}
void sanjiao(void) //三角波
{uchar i,n;
while(k==3)
{ P1=i;
if(n==1)i--;
else i++;
if(i==128/m)n=1;
if(i==0)n=0;
}
}
void sin(void) //正弦波
{uchar i;
while(k==0)
{i++;
if(i==128)i=0;
P1=Sintab[i];
}
}
void main() //主程序
{timer0int();
while(1)
{
if(k==0)sin();
if(k==1)juchi();
if(k==2)fang();
if(k==3)sanjiao();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -