?? 7_5.c
字號:
//MAX532 D/A操作程序:
#include <reg51.h>
typedef unsigned char BYTE
void DABSent (BYTE DABdatah,BYTE DABdatal) //B通道數據發送
{
//DABdatah為DA通道B數據高8位
//DABdatal為DA通道B數據低4位
unsigned char i;
sbit CS=P1^6; //片選信號
sbit DIN=P1^4; //數據輸入
sbit SCLK=P1^5; //時鐘
sbit LDAC=P1^7; //異步加載DAC輸入,作為同步信號
BYTE temp;
CS=1;
LDAC=1;
CS=0;
temp=DABdatah;
for (i=0;i<8;i++) //發送數據的高8位,最高位先發送
{
SCLK=0; //模擬串口,提供時鐘信號
temp=temp&0x80; //取數據的最高位發送
if (temp==0x80)
DIN=1;
else
DIN=0;
temp=DABdatah;
temp<=1; //數據左移,發送下一位
DABdatah=temp;
SCLK=1;
}
temp=DABdatal;
for (i=0;i<4;i++) //發送數據的低4位
{
SCLK=0; //模擬串口,提供時鐘信號
temp=temp&0x80; //取數據的最高位發送
if (temp==0x80)
DIN=1;
else
DIN=0;
temp=DABdatal;
temp<=1; //數據左移,發送下一位
DABdatal=temp;
SCLK=1;
}
}
void DAASent(BYTE DAAdatah,BYTE DAAdatal) //A通道數據發送
{
//DAAdatah為DA通道B數據高8位
//DAAdatal為DA通道B數據低4位
unsigned char i;
sbit CS=P1^6; //片選信號
sbit LDAC=P1^7; //異步加載DAC輸入,作為同步信號
sbit DIN=P1^4; //數據輸入
sbit SCLK=P1^5; //時鐘
BYTE temp;
CS=1;
LDAC=1;
CS=0;
temp=DAAdatah;
for (i=0;i<8;i++) //發送數據的高8位,最高位先發送
{
SCLK=0; //模擬串口,提供時鐘信號
temp=temp&0x80; //取數據的最高位發送
if (temp==0x80)
DIN=1;
else
DIN=0;
temp=DAAdatah;
temp<=1; //數據左移,發送下一位
DAAdatah=temp;
SCLK=1;
}
temp=DAAdatal;
for (i=0;i<4;i++) //發送數據的低4位
{
SCLK=0; //模擬串口,提供時鐘信號
temp=temp&0x80; //取數據的最高位發送
if (temp==0x80)
DIN=1;
else
DIN=0;
temp=DAAdatal;
temp<=1; //數據左移,發送下一位
DAAdatal=temp;
SCLK=1;
}
CS=1;
LDAC=0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -