|
0.png (16.49 KB, 下載次數(shù): 64)
下載附件
2019-7-29 00:36 上傳
#include <reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit cs = P3 ^ 7;
sbit wr = P3 ^ 6;
sbit K1 = P3 ^ 4;
sbit K2 = P3 ^ 5;
void Init()//中斷子程序
{
TMOD=0x01;
TH0=0xb1;
TL0=0xE0;
IE=0x8e;
}
void Delay(uchar m)//延時(shí)程序
{
while(m--);
}
void main()
{
uchar k = 0; //設(shè)置k的初始值為0
cs = 0; //當(dāng)CS與WR1端置低電平時(shí)做好寫(xiě)數(shù)據(jù)的準(zhǔn)備,只要P0口有數(shù)據(jù)輸出,DAC0832將會(huì)轉(zhuǎn)換成模擬信號(hào)
wr = 0; //當(dāng)CS與WR1端置低電平時(shí)做好寫(xiě)數(shù)據(jù)的準(zhǔn)備,只要P0口有數(shù)據(jù)輸出,DAC0832將會(huì)轉(zhuǎn)換成模擬信號(hào)
Init(); //中斷程序
while(1) //通過(guò)輸出值在 0-255和255-0之間變化,通過(guò)示波器可以看到模擬信號(hào)的情況
{
D3: if(K1==0)//判斷K1是否按下
{
TR0=1;//啟動(dòng)定時(shí)器T0
D1: while(1) //輸出值在0-255之間變化
{
P0 = k++; //輸出k且k+1
Delay(1);
if(K2==0)//判斷K2是否按下
{
TR0=0;//關(guān)閉定時(shí)器T0
k=0;//將k值重新置0
P0=k;//停止輸出方波
goto D3;//跳出方波輸出循環(huán)
}
if (k == 0xff) //到達(dá)255時(shí)結(jié)束循環(huán)
goto D2;//結(jié)束當(dāng)前循環(huán)跳轉(zhuǎn)至D2循環(huán)
}
D2: while(1) //輸出值在255-0之間變化
{
P0 = k--; //輸出k且k-1
Delay(1);
if(K2==0)//判斷K2是否按下
{
TR0=0;//關(guān)閉定時(shí)器T0
k=0;//將k值重新置0
P0=k;//停止輸出方波
goto D3;//跳出方波輸出循環(huán)
}
if (k == 0x00) //到達(dá)0時(shí)結(jié)束循環(huán)
goto D1;//結(jié)束當(dāng)前循環(huán)跳轉(zhuǎn)至D1循環(huán)
}
}
}
}
|
-
-
FANGBOU.zip
2019-7-28 20:51 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
59.83 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5
|