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

📄 iic_bit.c

📁 俄罗斯方块的源代码雅俗文件
💻 C
📖 第 1 页 / 共 2 页
字号:
#define IIC_READ 0XA1    //定义读指令
#define IIC_WRITE 0XA0   //定义写指令
#define NOP _nop_()
#define uchar unsigned char
#define uint  unsigned int
#include "reg52.h"
#define IIC_READ 0XA1    //定义读指令
#define IIC_WRITE 0XA0   //定义写指令
#define NOP _nop_()
//#define SDA INT0
//#define SCL T0
//==============================
uchar xdata buff[2000]; //save the byte read out  form iic device in test operation
uchar xdata readbuff[232];//测试数组,暂存写入读出数据
//uchar writebuff[32];
//===============================
sbit SDA=P3^5;//P2^7; //THE SDA BIT IS PORT 2 BIT 7
sbit SCL=P3^4;//P2^6; //THE SCL BIT IS PORT 2 BIT 6
sbit SEN=P3^3;//P2^6; //THE SCL BIT IS PORT 2 BIT 6
sbit STE=P3^2;//P2^6; //THE SCL BIT IS PORT 2 BIT 6

uchar setclk[13]={0x00,0x00,0x12};
uchar getclk[13];
uchar const seg[11]={0x7f,0x44,0xbd,0xf5,0xe6,0xf3,0xfb,0x65,0xff,0xf7,0x00};
uchar dis[8]={0,0,0,0};        //设置显示缓冲存储器

uchar bdata bbyte;//定义位操作用数组,采用此方法可提高位操作速度
sbit a0=bbyte^0;
sbit a1=bbyte^1;
sbit a2=bbyte^2;
sbit a3=bbyte^3;
sbit a4=bbyte^4;
sbit a5=bbyte^5;
sbit a6=bbyte^6;
sbit a7=bbyte^7;
delay(void);
//========================================
bit IFACK; //record the SDA state to confirn if ACK has happened 
bit NO_ACK; //no ack flag
bit BUS_FAULT; //bus fault flag
//========================================
code uchar  test_y_z[2000] =
{
	104,              //字体构成图象的宽度
	46,             //字体构成图象的高度
	0,               //字体的颜色
    0xff,            //字体的背景色

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFE,0xDF,0x00,0x1C,0x0E,
0x1D,0xFE,0xAF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFE,0xBF,0xF5,0xFD,0xEF,0xD0,0x21,0xB7,
0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0x81,0x80,0x3C,0x0E,0xD7,0xBD,0xBF,0xFF,0xFF,0xFF,
0xF8,0xFF,0xF9,0x7D,0xB5,0xBD,0xEE,0xD0,0x20,0x03,0xFF,0xFF,0xFF,0xF8,0xFF,0xF4,
0xEF,0x80,0x3C,0x0E,0xD7,0xFD,0xBF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0xAB,0xF7,0xFF,
0xFE,0x10,0x3D,0x37,0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0xAB,0x00,0x00,0x03,0xD2,0xB8,
0xAF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0x6D,0xEE,0xFB,0x7F,0x90,0x25,0xDF,0xFF,0xFF,
0xFF,0xF8,0xFF,0xFC,0xED,0xC5,0xF9,0x06,0x4A,0xBD,0x9B,0xFF,0xFF,0xFF,0xF8,0xFF,
0xFD,0xEF,0xF8,0xF6,0x7F,0xDA,0xBC,0x6B,0x7B,0xEF,0xBD,0xF8,0xFF,0xFD,0x8F,0x07,
0x2F,0x03,0x1F,0x31,0xF3,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xEA,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xFF,0xFD,0xFF,0xF8,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xE0,0x3F,0xDC,0xFF,0xF8,0xC0,0x2F,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,
0xBD,0x8C,0xFF,0xF8,0xF1,0xFF,0xFF,0xFF,0xC7,0xEF,0xFF,0xFC,0xFF,0xB9,0x04,0xFF,
0xF8,0xE8,0xFF,0xFF,0xFF,0x07,0x1F,0x7F,0xFF,0x3F,0xF0,0x20,0xFF,0xF8,0xDB,0x7F,
0xFF,0xFC,0x0C,0x1C,0x7F,0x7F,0xCF,0xEE,0x71,0xFF,0xF8,0xFB,0xF7,0xE3,0xF8,0x00,
0x10,0xDF,0x8F,0xF3,0xFE,0x7D,0xFF,0xF8,0xFF,0xFB,0xC1,0xF0,0x00,0x00,0x97,0xC1,
0xF8,0xFE,0xFF,0xEF,0xF8,0xFB,0xEB,0x98,0xE0,0x00,0x39,0x10,0xF0,0x3C,0x3F,0xFF,
0xBF,0xF8,0xFF,0xF1,0xA4,0xE0,0x00,0x04,0x10,0x1C,0x06,0x1F,0x8F,0x97,0xF8,0xFF,
0xD1,0x8A,0xC0,0x00,0x00,0x30,0x00,0x01,0x0F,0x07,0x8F,0xF8,0xFF,0xE0,0x8A,0x00,
0x00,0x00,0x30,0x38,0x00,0x06,0x33,0x1B,0xF8,0xFF,0xA0,0x44,0x00,0x00,0x00,0x50,
0x40,0x00,0x06,0x4B,0x17,0xF8,0xFF,0xC0,0x60,0x00,0x0F,0xC0,0x48,0x00,0x00,0x02,
0xA2,0x05,0xF8,0xFF,0x40,0x70,0x00,0x3F,0xE0,0x88,0x00,0x00,0x00,0xA2,0x03,0xF8,
0xFF,0x80,0xF8,0x00,0x00,0xF1,0x04,0x07,0xE0,0x00,0x44,0x01,0xF8,0xFE,0x81,0xE8,
0x00,0x01,0xC2,0x04,0x4F,0xF8,0x00,0x0F,0x03,0xF8,0xFF,0x00,0x08,0x00,0x01,0x84,
0x02,0x3E,0x00,0x00,0x1F,0x82,0xF8,0xFD,0x00,0x10,0x00,0x00,0x88,0x01,0x06,0x00,
0x00,0x10,0x41,0xF8,0xFE,0x01,0xE0,0x01,0x13,0x08,0x00,0x87,0x00,0x00,0x10,0x01,
0xB8,0xFF,0x06,0x20,0x00,0x88,0x10,0x00,0x43,0x00,0x00,0x10,0x01,0x18,0xFD,0x0A,
0x10,0x01,0x44,0x10,0x00,0x22,0x00,0x00,0x18,0x01,0xB8,0xF8,0x11,0x10,0x00,0x80,
0x10,0x00,0x21,0x91,0x00,0x14,0x01,0xF8,0xFC,0x10,0x88,0x70,0x00,0x10,0x00,0x10,
0x22,0x03,0xE0,0x00,0xB8,0xFE,0x20,0x84,0x4C,0x00,0x20,0x00,0x10,0x45,0x05,0x31,
0x00,0xF8,0xF4,0x20,0x43,0x8B,0x80,0xC0,0x00,0x10,0x02,0x08,0x88,0x80,0xB8,0xFC,
0x20,0x40,0x08,0xFF,0x00,0x00,0x10,0x00,0x18,0x40,0x40,0x78,0xF6,0x20,0x40,0x08,
0x80,0x00,0x00,0x08,0x00,0x68,0x40,0x00,0xD8,0xFC,0x20,0x40,0x08,0x80,0x00,0x00,
0x06,0x03,0x90,0x20,0x20,0x68,

	     
};
code uchar  test_y_a[2000] =
{
	24,              //字体构成图象的宽度
	240,             //字体构成图象的高度
	0,               //字体的颜色
    0xff,            //字体的背景色

	      0x00,0x01,0x00,0x00,0x83,0x00,0x00,0x83,   //"单", 
      0x00,0x00,0x42,0x00,0x00,0x62,0x00,0x00,
      0x64,0x60,0x02,0x1F,0xE0,0x03,0xF8,0x60,
      0x02,0x18,0x40,0x02,0x1A,0x40,0x02,0xFE,
      0x40,0x02,0x98,0x40,0x02,0x18,0x40,0x02,
      0x3F,0xC0,0x03,0xF8,0x00,0x03,0x18,0x00,
      0x00,0x18,0x7C,0x01,0xFF,0xF0,0x3F,0x98,
      0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,
      0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,

      0x00,0x00,0x20,0x04,0x00,0xF0,0x04,0x7F,   //"用",
      0xE0,0x07,0xF8,0x20,0x06,0x10,0x20,0x06,
      0x10,0x20,0x06,0x10,0x20,0x06,0x1F,0xA0,
      0x06,0xFC,0x20,0x06,0x10,0x20,0x06,0x10,
      0x20,0x06,0x10,0x20,0x04,0x1F,0xA0,0x05,
      0xF8,0x20,0x04,0x10,0x20,0x04,0x10,0x20,
      0x04,0x10,0x20,0x08,0x10,0x20,0x08,0x10,
      0x20,0x18,0x10,0x20,0x10,0x11,0xA0,0x20,
      0x10,0xE0,0x60,0x10,0x60,0x00,0x00,0x00,



      0x00,0x04,0x00,0x00,0x06,0x00,0x02,0x06,  //"片",
      0x00,0x03,0x06,0x00,0x01,0x06,0x00,0x01,
      0x06,0x00,0x01,0x06,0x00,0x01,0x06,0x00,
      0x01,0x06,0x78,0x01,0x3F,0xF0,0x01,0xF8,
      0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,
      0x03,0x00,0x03,0x7F,0x00,0x03,0xE3,0x00,
      0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,
      0x00,0x06,0x03,0x00,0x04,0x03,0x00,0x04,
      0x03,0x00,0x08,0x03,0x00,0x08,0x03,0x00,

      0x04,0x00,0x00,0x02,0x00,0x00,0x02,0x08,   //"机",
      0x40,0x02,0x0F,0xC0,0x02,0x08,0xC0,0x02,
      0x08,0xC0,0x02,0x68,0xC0,0x7F,0xE8,0xC0,
      0x66,0x08,0xC0,0x06,0x08,0xC0,0x07,0x08,
      0xC0,0x0F,0x88,0xC0,0x0A,0xD8,0xC0,0x0A,
      0x58,0xC0,0x12,0x18,0xC0,0x12,0x18,0xC0,
      0x22,0x10,0xC4,0x22,0x10,0xC4,0x42,0x10,
      0xC4,0x02,0x30,0xC6,0x02,0x20,0xC6,0x02,
      0x20,0xC6,0x06,0x40,0x7E,0x06,0x80,0x00,

      0x00,0x00,0x00,0x00,0x48,0x08,0x1F,0xEF,   //"驱",
      0xFC,0x1C,0x4E,0x00,0x00,0x48,0x20,0x04,
      0xC8,0x30,0x04,0xC8,0x30,0x04,0x8A,0x20,
      0x0C,0x89,0x60,0x08,0x89,0xE0,0x08,0xA8,
      0xC0,0x0B,0xE8,0xC0,0x1F,0x68,0xE0,0x00,
      0x68,0xA0,0x00,0x69,0xB0,0x01,0x49,0x30,
      0x1E,0x4A,0x10,0x70,0x4A,0x00,0x00,0x4C,
      0x00,0x02,0xC8,0x0C,0x03,0x8F,0xFE,0x01,
      0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

      0x00,0x00,0x80,0x00,0x00,0xC0,0x00,0x00,  //"动",
      0xC0,0x00,0x00,0x80,0x03,0xF0,0x80,0x06,
      0x00,0x80,0x00,0x00,0x80,0x00,0x01,0x80,
      0x00,0x01,0x98,0x01,0xFF,0xF8,0x3F,0x0D,
      0x18,0x01,0x01,0x10,0x03,0x03,0x10,0x02,
      0x02,0x10,0x02,0x42,0x30,0x04,0x26,0x30,
      0x04,0x74,0x20,0x0F,0xBC,0x20,0x1E,0x08,
      0x20,0x18,0x08,0x60,0x00,0x11,0x60,0x00,
      0x20,0xC0,0x00,0x60,0xC0,0x00,0x80,0x00,

      0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x30,   //"电",
      0x00,0x00,0x30,0x00,0x08,0x20,0x40,0x08,
      0x27,0xC0,0x0F,0xFF,0xC0,0x0E,0x20,0xC0,
      0x0C,0x20,0x80,0x0C,0x26,0x80,0x04,0xFE,
      0x80,0x05,0xA0,0x80,0x04,0x20,0x80,0x04,
      0x20,0x80,0x04,0x3F,0x80,0x07,0xFC,0x00,
      0x0C,0x20,0x00,0x04,0x20,0x08,0x04,0x20,
      0x08,0x00,0x30,0x08,0x00,0x30,0x08,0x00,
      0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,

      0x00,0x02,0x00,0x08,0x03,0x00,0x09,0x83,  //"脑",
      0x00,0x0F,0x81,0x00,0x08,0x80,0x0C,0x08,
      0x8F,0xFC,0x08,0xFC,0x00,0x08,0x80,0xC0,
      0x0F,0x88,0xC0,0x08,0x84,0x90,0x08,0xA5,
      0x98,0x08,0xB3,0x10,0x0F,0xB3,0x10,0x08,
      0x93,0x10,0x08,0x93,0x90,0x08,0x96,0x90,
      0x18,0x94,0xD0,0x10,0x98,0x10,0x10,0x90,
      0x10,0x10,0x90,0x10,0x37,0xBF,0xF0,0x23,
      0xB8,0x10,0x21,0x80,0x00,0x00,0x00,0x00,

      0x00,0x00,0x00,0x02,0x00,0xC0,0x03,0xFF, //"显",
      0xC0,0x03,0xE0,0xC0,0x03,0x00,0xC0,0x03,
      0x06,0x80,0x03,0xFE,0x80,0x03,0x00,0x80,
      0x01,0x00,0x80,0x01,0x0F,0x80,0x03,0xFE,
      0x00,0x01,0x44,0x00,0x01,0x64,0x20,0x08,
      0x64,0x60,0x04,0x64,0x60,0x06,0x64,0xC0,
      0x03,0x64,0x80,0x03,0x65,0x00,0x02,0x65,
      0x00,0x00,0x64,0x00,0x00,0x64,0x08,0x00,
      0x7F,0xFC,0x1F,0xFC,0x00,0x00,0x00,0x00,

      0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x3F, //"示",
      0xE0,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,
      0x07,0xFF,0xF0,0x1F,0x18,0x00,0x00,0x08,
      0x00,0x00,0x88,0x00,0x00,0xC9,0x00,0x01,
      0x88,0xC0,0x01,0x08,0x60,0x03,0x08,0x30,
      0x06,0x08,0x38,0x04,0x08,0x18,0x08,0x08,
      0x00,0x10,0x58,0x00,0x00,0x38,0x00,0x00,
      0x18,0x00,0x00,0x18,0x00,0x00,0x00,0x00
	     
};




void start(void)
{
 SCL=0;
 SDA=1;
 SCL=1;
 SDA=0;
 SCL=0;
}
//=======================================
//FUNCTION:ROUTES TO PROVIDE A STOP SIGNAL
void stop(void)
{
 SCL=0;
 SDA=0;
 SCL=1;
 SDA=1;
 SCL=0;
}
//=====================================
//FUNCTION:ROUTES TO PROVIDE ACK SINGAL
void ack(void)
{
 SCL=0;
 SDA=0;
 SCL=1;
 SCL=0;
}
//=====================================
//FUNCTION:ROUTES TO RELEASE THE SDA TO RECEIVE A ACK SIGNAL 
//              OR TO PROVIDE A NO_ACK SIGNAL
//type=1等待应答信号
//type=0 产生无应答信号
void nack(uchar type)
{
SCL=0;
SDA=1;
SCL=1;
IFACK=SDA;
SCL=0;
 if(type)
 {
  if(IFACK)//如果无应答信号,则置标志位NO_ACK,程序中止
  { 
   NO_ACK=1;//用户可以加入自己的异常处理程序
   //while(1);
  }
  else NO_ACK=0;
 }
}
//=======================================================
//FUNCTION:THE IIC DEVICE SHIFT OUT A BYTE  TO THE MASTER
uchar  inbyte(void) {//从IIC器件中读出数据
 SDA=1;
 SCL=1;
 a7=SDA;
 SCL=0;
 SCL=1;
 a6=SDA;
 SCL=0;
 SCL=1;
 a5=SDA;
 SCL=0;
 SCL=1;
 a4=SDA;
 SCL=0;
 SCL=1;
 a3=SDA;
 SCL=0;
 SCL=1;
 a2=SDA;
 SCL=0;
 SCL=1;
 a1=SDA;
 SCL=0;
 SCL=1;
 a0=SDA;
 SCL=0;
 return(bbyte);
}
//=======================================================
//FUNCTION:THE IIC DEVICE SHIFT IN A BYTE FROM THE MASTER 
void outbyte(uchar outdata) {//将数据写放IIC器件
 bbyte=outdata;
 SDA=a7;
 SCL=1;
 SCL=0;
 SDA=a6;
 SCL=1;
 SCL=0;
 SDA=a5;
 SCL=1;
 SCL=0;
 SDA=a4;
 SCL=1;
 SCL=0;
 SDA=a3;
 SCL=1;
 SCL=0;
 SDA=a2;
 SCL=1;
 SCL=0;
 SDA=a1;
 SCL=1;
 SCL=0;
 SDA=a0;
 SCL=1;
 SCL=0;
}
//======================================================
//FUNCTION:BYTE WRITE.  'add'     THE WRITE ADDRESS, 'wbyte'   THE DATA WANT TO WRITE
void writebyte(uint add,uchar wbyte)//add为写入地址,wbyte为写入数据
{
 uchar temph,templ;
 temph=(uchar)(add/256);

⌨️ 快捷键说明

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