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

📄 dac.c

📁 设计一个数字电源
💻 C
字号:
/* vim: set sw=8 ts=8 si : */
/*********************************************
* Author: Guido Socher, Copyright: GPL 
* 
* Digital to analog converter using a R-2R leadder
**********************************************/
#include <avr/io.h>
#include "avr_compat.h"

// dac takes an int instead of unsigned int to avoid conversion
// from the datatypes in analog.c but you can only use the positive values. 
void dac(int value){
	PORTD=value & 0xFF; // mask out 8 bits
	// 0x300=1100000000
	value=(value & 0x300)>>6; // mask out 2 msb bits and shift by 6
	// F3=11110011
	PORTC=(PORTC & 0xF3)|value; // change PC2 and PC3 only
}

void init_dac(void) 
{
	// enable PD0-PD7 as output PD0 is LSB in dac
	DDRD=0xff;
	// enable PC3 as output (MSB in dac)
	sbi(DDRC,PC3);
	// enable PC2 as output (MSB in dac)
	sbi(DDRC,PC2);
	// zero output
	cbi(PORTC,PC3);
	cbi(PORTC,PC2);
	PORTD=0;
}


⌨️ 快捷键说明

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