⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy9.c

📁 用c8051f005单片机操作da转换器 dac908
💻 C
字号:
//P3.0-P3.7 并行数据DB0-DB7
//P2.7 时钟信号
//使用定时器3中断程序改变输出电压


#include <c8051f000.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit CLK=P2^7;
sfr16 TMR3RL=0x92;

void sysclk_init();
void port_init();
void timer3_init();
void set_f(uint f);
void send_dac908(uchar dat);


uint n;								//定时器3计数值
uchar k;
uchar da_dat;

void main()
{
	sysclk_init();
	port_init();
	timer3_init();
	set_f(100);
	da_dat=0;
	EA=0;						//开总中断	
	
	for(;;)send_dac908(da_dat++);
}

void sysclk_init()
{
	WDTCN=0XDE;					//关看门狗
	WDTCN=0XAD;
	OSCICN=0x07;				//内部16M时钟
}

void port_init()
{
	XBR0=0X00;					//
	XBR1=0X00;
	XBR2=0X40;					//交叉开关允许
	PRT0CF=0xFF;				//P0设置为推挽输出
	PRT1CF=0xFF;				//设置为推挽输出
	PRT2CF=0xFF;				//
	PRT3CF=0xFF;				//
}

void timer3_init()
{
	TMR3CN=0X06;				//定时器3允许 使用系统时钟
	EIE2|=0X1;					//开定时器3中断
}
//-----------------------------------------
//通过设置定时器3初值 设置输出频率
//f:输出频率(1-31311hz)
//-----------------------------------------
void set_f(uint f)
{
	uint n;
	n=31311/f;
	TMR3RL=n;
}

void ser_timer3() interrupt 14
{
	TMR3CN&=0X7F;				//中断标志清零
//	send_dac908(0xF0);
/*	if(da_dat==0)
		k=1;
	if(da_dat==255)
		k=0;
	if(k)
		send_dac908(da_dat++);
	else
		send_dac908(da_dat--);
*/

}

void send_dac908(uchar dat)
{
	CLK=1;
	P3=dat;
	CLK=0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -