?? msp430f149-
字號:
/****************************************************************************
* 文 件 名:main.c
* 功 能:該實驗程序使用TLC5620中A、B、C、D四個通道分別輸出周期、幅度相等的
* 鋸齒波,頻率為6.35Hz。
* 說 明:跳線器JP1、JP2短接。
****************************************************************************/
#include "config.h"
#define DAC_RNG 1 // 幅值選擇
/* TLC5620由P0口控制,控制I/O定義如下 */
#define CLK1 (1<<21)
#define DAT1 (1<<22)
#define LOAD (1<<23)
#define LDAC (1<<24)
#define DAC5620CON (CLK1 | DAT1 | LOAD | LDAC)
/* I/O輸出操作函數 */
#define CCLK1() IO1SET = CLK1
#define SCLK1() IO1CLR = CLK1
#define CDAT1() IO1SET = DAT1
#define SDAT1() IO1CLR = DAT1
#define CLOAD() IO1SET = LOAD
#define SLOAD() IO1CLR = LOAD
#define CLDAC() IO1SET = LDAC
#define SLDAC() IO1CLR = LDAC
void DAC5620_Data(uint8 no, uint8 dat);
void PIN_Init(void);
void Delay(void);
int main(void)
{ uint8 i;
PIN_Init(); // 初始化CPU的IO口
while(1) // 發生鋸齒波
{
DAC5620_Data(1, i);
DAC5620_Data(2, i);
DAC5620_Data(3, i);
DAC5620_Data(4, i);
i++;
}
return(0);
}
/****************************************************************************
* 名 稱:IRQ_Eint3()
* 功 能:外部中斷EINT3服務函數,取反B1控制口。
* 入口參數:無
* 出口參數:無
****************************************************************************/
void PIN_Init(void) // CPU的IO口初始化函數
{
PINSEL0 = 0x00000000;
PINSEL1 = 0x00000000;
IO1DIR = DAC5620CON;
CCLK1(); // CLK1 = 0
CDAT1(); // DAT1 = 0
SLOAD(); // LOAD = 1
SLDAC(); // LDAC = 1
}
/****************************************************************************
* 名 稱:DAC5620_Data()
* 功 能:DAC芯片TLC5620的控制函數
* 入口參數:uint8 no 通道選擇 uint8 dat 輸出數值
* 出口參數:無
****************************************************************************/
void DAC5620_Data(uint8 no, uint8 dat)
{ uint16 bak;
uint8 m;
#if DAC_RNG==0
bak = (dat<<5) | ((no&0x03)<<14);
#else
bak = (dat<<5) | ((no&0x03)<<14) | (1<<13);
#endif
for(m=0; m<11; m++)
{
SCLK1(); // CLK1 = 1
Delay();
if((bak&0x8000) == 0)
{
CDAT1(); // DAT1 = 0
}
else
{
SDAT1(); // DAT1 = 1
}
Delay();
CCLK1(); // CLK1 = 0
Delay();
bak <<= 1;
}
CLOAD(); // LOAD = 0
Delay();
SLOAD(); // LOAD = 1
Delay();
CLDAC(); // LDAC = 0
Delay();
SLDAC(); // LDAC = 1
Delay();
}
void Delay(void)
{ uint32 i;
for(i=0; i<1; i++);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -