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

📄 max518.c

📁 51单片机示例程序
💻 C
字号:
/*******************************************************************
                                                                              	
                   MAX518信号发生器实验
                 网址:http://www.kaifaban.com  
                                          
                功能:在OUT0,OUT1端输出相位相反的锯齿波
          			                     
********************************************************************/
#include <reg52.h>
#include <intrins.h>
#define  uchar unsigned char
#define  uint unsigned int
sbit SCL=P3^4;//串行时钟线
sbit SDA=P3^5;//串行数据线
//I2C延时程序
void I2cDelay(){
_nop_();_nop_();_nop_();_nop_();_nop_();
}
//I2C起始条件
void I2cStart(){
SDA=1;
_nop_();
SCL=1;
I2cDelay();
SDA=0;
I2cDelay();
SCL=0;//钳住I2C总线,准备发送或接收数据
_nop_();
}
//I2C停止条件
void I2cStop(){
SDA=0;
_nop_();
SCL=1;
I2cDelay();
SDA=1;
I2cDelay();
}
//等待应答
bit WaitAck(){
  uchar Time=255;
  SDA=1;
  _nop_();
  SCL=1;
  I2cDelay();
  while(SDA){
    Time--;
    if(Time==0){
      I2cStop();
      return (0);
    }
  }
  SCL=0;
  _nop_();
  return (1);
}
//I2C写一字节数据
void I2cWriteByte(uchar Data){
  uchar i;
  for(i=0;i<8;i++){
    SCL=0;
    I2cDelay();
    SDA=(bit)(Data&0x80);
    Data<<=1;
    I2cDelay();
    SCL=1;
    I2cDelay();
  }
  SCL=0;
}
//I2C写数据到MAX518
void I2cWrite(uchar Command,uchar Data){
I2cStart();//启动总线
I2cWriteByte(0x58);//发送器件地址
WaitAck();
I2cWriteByte(Command);//发送命令字节
WaitAck();
I2cWriteByte(Data);//发送数据
WaitAck();
I2cStop();
}
//主函数
main(){
uchar i=0;
while(1){
I2cWrite(0x00,i);
I2cWrite(0x01,0xFF-i);
i++;
}
}

⌨️ 快捷键说明

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