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

📄 lesson9.c

📁 简单教程简单c语言AVR教程简单教程简单c语言AVR教程简单教程简单c语言AVR教程
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#include "Skey.c"

#define  START  0X08
#define  MT_SLA_ACK  0X18
#define  MT_DATA_ACK  0X28

#define Start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))	//产生START信号
#define Stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))	//产生STOP信号
#define Wait() while(!(TWCR&(1<<TWINT)))		//等待当前操作完成
#define TestACK() (TWSR&0xF8)				//取出状态码
#define SetACK() (TWCR|=(1<<TWEA))			//产生ACK
#define Writebyte(twi_d) {TWDR=(twi_d);TWCR=(1<<TWINT)|(1<<TWEN);}	//发送一个字节(twi_d为写入的数据)

void twi_init()
{
    TWBR=0X20;
	TWSR=0;
	TWCR=0X44;
}
uchar AD5161_writeB(uchar devadd,uchar cmd,uchar rdata)
{
    Start();
	Wait();
	if(TestACK()!=START)
	{
	   return 0;
	}
	Writebyte(devadd);
	Wait();
	if(TestACK()!=MT_SLA_ACK)
	{
	   return 0;
	}
	Writebyte(cmd);
	Wait();
	if(TestACK()!=MT_DATA_ACK)
	{
	   return 0;
	}
	Writebyte(rdata);
	Wait();
	if(TestACK()!=MT_DATA_ACK)
	{
	   return 0;
	}
	Stop();
	delay(10);
	return 1;
}

void main()
{
    uchar i,data=0;
    twi_init();
	AD5161_writeB(0X58,0,data);
	while(1)
	{
	   if(key_press())
	   {
	     i=key_scan();
		 
		switch(i)
		{
		  case 0:
		     data=data-16;
			 break;
		   case 1:
		     data=data+16;
			 break;	 
		   case 2:
		     data=0;
			 break;
		   case 3:
		     data=255;	
			 break; 	  
		}  
		AD5161_writeB(0x58,0,data);  
	   }
	}
}

⌨️ 快捷键说明

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