📄 lesson9.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 + -