?? main.c
字號:
/*******************************************************************************
程序名稱:8位并行D/A芯片DAC0832實驗
硬件接法:DAC0832地址為XDATA:0xA000
運行效果:按K1~K4鍵對應4個電壓值輸出
*******************************************************************************/
//包含頭文件
#include <reg51.h>
#include <absacc.h>
//定義I/O接口
sbit K1 = P1^7;
sbit K2 = P3^3;
sbit K3 = P3^4;
sbit K4 = P3^5;
/*******************************************************************************
函數:Delay()
功能:延時0.01s~2.56s
參數:t>0時,延時(t*0.01)s
t=0時,延時2.56s
說明:定時10ms的定時器初值=65536-0.01/(1/(f/12)),其中f為晶振頻率
*******************************************************************************/
void Delay(unsigned char t)
{
do
{
TH0 = 0xDC; //設置定時器初值(定時10ms)
TL0 = 0x00;
TR0 = 1; //啟動定時器
while ( !TF0 ); //等待定時器溢出
TR0 = 0; //停止定時器
TF0 = 0; //清除溢出標志
} while ( --t != 0 ); //循環t次
}
/*******************************************************************************
函數:KeyScan()
功能:鍵盤掃描
返回:掃描碼
*******************************************************************************/
unsigned char KeyScan()
{
unsigned char k = '\0';
if ( !K1 ) k = '1';
if ( !K2 ) k = '2';
if ( !K3 ) k = '3';
if ( !K4 ) k = '4';
return k;
}
//主函數
void main()
{
unsigned char k;
TMOD &= 0xF0;
TMOD |= 0x01;
Delay(10);
XBYTE[0xA000] = 128;
for (;;)
{
for (;;)
{
Delay(10);
k = KeyScan();
if ( k != '\0' ) break;
}
switch ( k )
{
case '1':
XBYTE[0xA000] = 50;
break;
case '2':
XBYTE[0xA000] = 100;
break;
case '3':
XBYTE[0xA000] = 150;
break;
case '4':
XBYTE[0xA000] = 200;
break;
default:
break;
}
for (;;)
{
Delay(10);
if ( KeyScan() == '\0' ) break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -