溜达一圈,刚回来,昨晚弄IIC,搞得晚上都没睡好觉,难得昨天天气很好,室温20度,穿一件内衣都可以了;
IIC 协议用郭天祥书本上现成的,记得以前帮MM搞毕业设计时LCD上的串行协议也是用他的;
反正,这个协议完全应该可以当成标准品来用了,感觉一段时间没玩代码,又似乎回到了起点;
单字节读写没有问题;今天准备把多字节给- #include<reg52.h>
- #include<intrins.h>
- #include<at24c04.c>
- #define uint unsigned int
- #define uchar unsigned char
- uint BTime_Count;
- uchar BSec,Sec,Min,Hour,Sec_Flag;
- sbit Rst = P1^5;sbit Lcd_Csb = P1^4;sbit Lcd_Csa = P1^3;
- sbit Rs = P1^2;sbit Rw = P1^1;sbit En = P1^0;
- sbit BL = P2^1;sbit Led = P2^3;
- sbit Key_1=P2^5;sbit Key_2=P2^6;sbit Key_3=P2^7;
-
- uchar code display_number[]={0,1,2,3,4,5,6,7,8,9};
- uchar clock[6];
- uchar code zk3[][144]={
- // 0(0) 1(1) 2(2) 3(3) 4(4) 5(5) 6(6) 7(7) 8(8) 9(9)
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,
- 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,
- 0x00,0xF0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x01,0x00,0x00,0x00,
- 0x00,0x01,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
- 0x7E,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"0",0*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x80,0xC0,0xC0,0xF0,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x7F,
- 0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",1*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,0xF8,
- 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xF0,
- 0x00,0x3E,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x03,0x01,0x00,0x80,0xC0,
- 0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0xF0,
- 0xF0,0xF8,0xFC,0xFC,0xFE,0xFF,0x7F,0x7F,0x3F,0x1F,0x1F,0x0F,0x0F,0x07,0x03,0x03,
- 0x70,0x7C,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
- 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",2*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF0,0xF8,
- 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xE0,
- 0x00,0x00,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xC1,0xC0,0xC0,0xE1,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
- 0xE0,0xE0,0xE0,0x80,0x07,0x07,0x07,0x07,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
- 0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",3*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
- 0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFC,0xFE,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFD,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
- 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"4",4*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0xFC,0xFC,
- 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
- 0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xF1,0xF1,0xF1,
- 0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xE1,0xE1,0x00,0x80,0x83,0x83,0x83,0x87,0x87,0x87,
- 0x87,0xC7,0xC7,0x87,0x03,0x01,0x01,0x01,0x03,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x01,0x03,0x0F,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
- 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",5*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,
- 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF0,0xF0,
- 0x00,0xF0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE1,0xF0,0xF0,0xF0,
- 0xF0,0xF1,0xF3,0xF3,0xF3,0xF3,0xE3,0xE3,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0x87,0x03,0x01,0x01,0x01,0x03,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
- 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"6",6*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
- 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
- 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xC1,0xE1,0xF1,0xFD,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xF0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
- 0x7F,0x7F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"7",7*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xF8,
- 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,
- 0x00,0x00,0x0F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0xE0,0xE0,0xE0,
- 0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0x8F,0x07,0x03,0x03,0x03,0x07,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
- 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"8",8*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xE0,0xF0,0xF8,0xF8,
- 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xE0,
- 0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0x81,0x00,0x00,0x00,
- 0x81,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x81,0x83,0x87,0x8F,0x8F,0x9F,
- 0x9F,0x9F,0x9F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,0x7E,
- 0x7F,0x7F,0x7F,0x3F,0x3F,0x1F,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"9",9*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",11*/
- };
- /*------------------------------------?-------------------------------------*/
- void Delay_ms(uint ms)
- {
- uint i,j;
- for(i=ms;i>0;i--)
- for(j=1222;j>0;j--)
- {;}
- }
- void Delay_us(uint us)
- {
- while(us--);
- }
- //----------------------------------------------------------------------------------------
- void Busy(void)
- {
- Rs=0;
- Rw=1;
- P0=0xff;
- En=1;
- while((P0&0x80)!=0);
- En=0;
- }
- //WR_DATA&CMd
- void wrdata(uchar a,uchar b,uchar c,uchar lcddata)
- {
-
- Lcd_Csa=a;
- Lcd_Csb=b;
- Busy();
- Rs=c;
- Rw=0;
- En=1;
- P0=lcddata;
- En=0;
- Lcd_Csa=1;
- Lcd_Csb=1;
- Rs=1;
- Rw=1;
- }
- //LCM INITIAL
- void initallcd(void)
- {
- Lcd_Csa=1;
- Lcd_Csb=1;
- Rst=0;
- Delay_ms(50);
- Rst=1;
- Delay_ms(50);
- wrdata(0,0,0,0x3E);
- Delay_ms(5);
- wrdata(0,1,0,0x3E);
- Delay_ms(5);
- wrdata(1,0,0,0x3E);
- Delay_ms(5);
- wrdata(0,0,0,0x3F);
- Delay_ms(5);
- wrdata(0,1,0,0x3F);
- Delay_ms(5);
- wrdata(1,0,0,0x3F);
- Delay_ms(5);
- }
- void Clear(uchar dat)
- {
- uchar i,j;
- uchar page=0xb8;
- for(i=0;i<8;i++)
- {
- wrdata(0,0,0,page|i);
- wrdata(0,0,0,0x40);
- wrdata(0,0,0,0xc0);
- wrdata(0,1,0,page|i);
- wrdata(0,1,0,0x40);
- wrdata(0,1,0,0xc0);
- wrdata(1,0,0,page|i);
- wrdata(1,0,0,0x40);
- wrdata(1,0,0,0xc0);
- for(j=0;j<64;j++)
- {
- wrdata(0,0,1,dat);
- wrdata(0,1,1,dat);
- wrdata(1,0,1,dat);
- }
- }
- }
- void disp4848(uchar a,uchar b,uchar c,uchar addr,uchar row,uchar *p)
- {
- uchar i,ch;
- addr=0xb8+addr;
- wrdata(a,b,0,addr);
- wrdata(a,b,0,row);
- for(i=0;i<144;i++)
- {
- ch=*p;
- wrdata(a,b,c,ch);
- p++;
- if((i==24)||(i==48)||(i==72)||(i==96)||(i==120))
- {
- wrdata(a,b,0,++addr);
- wrdata(a,b,0,row+1);
- }
- }
- }
- void Time_ini(void)
- {
- TMOD=0x02;
- TH0=6;
- TL0=6;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void Time0()interrupt 1
- {
- TF0=0;
- BTime_Count++;
- if(BTime_Count==2000)
- {
- BTime_Count=0;
- BSec++;
- if(BSec==2)
- {
- BSec=0;Sec++;Sec_Flag=1;
- if(Sec==60)
- {
- Sec=0;Min++;
- if(Min==60)
- {
- Min=0;Hour++;
- if(Hour==24)
- {
- Hour=0;
- }
- }
- }
- }
- }
- }
- /*------------------------------------------
- void Time_Pro(void)
- {
- disp4848(0,0,1,0,0x40,zk3[Hour/10]);
- disp4848(0,0,1,0,0x58,zk3[Hour%10]);
- disp4848(1,0,1,0,0x40,zk3[Min/10]);
- disp4848(1,0,1,0,0x58,zk3[Min%10]);
- disp4848(0,1,1,0,0x40,zk3[Sec/10]);
- disp4848(0,1,1,0,0x58,zk3[Sec%10]);
- }
- *///-----------------------------------------
- void Time_Pro(void)
- {
- disp4848(0,0,1,0,0x40,zk3[clock[0]]);
- disp4848(0,0,1,0,0x58,zk3[clock[1]]);
- disp4848(1,0,1,0,0x40,zk3[clock[2]]);
- disp4848(1,0,1,0,0x58,zk3[clock[3]]);
- disp4848(0,1,1,0,0x40,zk3[clock[4]]);
- disp4848(0,1,1,0,0x58,zk3[clock[5]]);
- }
- void Disp(void)
- {
- clock[0]=display_number[Hour/10];
- clock[1]=display_number[Hour%10];
- clock[2]=display_number[Min/10];
- clock[3]=display_number[Min%10];
- clock[4]=display_number[Sec/10];
- clock[5]=display_number[Sec%10];
- }
- void main()
- {
- initallcd();
- Clear(0x00);
- init();
- Sec=read_add(0);
- //clock=Read_Flash();
- Time_ini();
- while(1)
- {
- Time_Pro();
- if(Sec_Flag)
- {
- Sec_Flag=0;Led=~Led;
- write_add(0,Sec);
- write_add(1,Min);
- write_add(2,Hour);
- }
- }
- }
- #define uchar unsigned char
- #define uint unsigned int
- sbit IIC_Sda=P3^5;
- sbit IIC_Scl=P3^6;
- uchar a;
- void delay()
- { ;; }
- void start() //开始信号
- {
- IIC_Sda=1;
- delay();
- IIC_Scl=1;
- delay();
- IIC_Sda=0;
- delay();
- }
- void stop() //停止
- {
- IIC_Sda=0;
- delay();
- IIC_Scl=1;
- delay();
- IIC_Sda=1;
- delay();
- }
- void respons() //应答
- {
- uchar i;
- IIC_Scl=1;
- delay();
- while((IIC_Sda==1)&&(i<250))i++;
- IIC_Scl=0;
- delay();
- }
- void init() //初始化
- {
- IIC_Sda=1;
- delay();
- IIC_Scl=1;
- delay();
- }
- void write_byte(uchar date)
- {
- uchar i,temp;
- temp=date;
- for(i=0;i<8;i++)
- {
- temp=temp<<1;
- IIC_Scl=0;
- delay();
- IIC_Sda=CY;
- delay();
- IIC_Scl=1;
- delay();
- }
- IIC_Scl=0;
- delay();
- IIC_Sda=1;
- delay();
- }
- uchar read_byte()
- {
- uchar i,k;
- IIC_Scl=0;
- delay();
- IIC_Sda=1;
- delay();
- for(i=0;i<8;i++)
- {
- IIC_Scl=1;
- delay();
- k=(k<<1)|IIC_Sda;
- IIC_Scl=0;
- delay();
- }
- return k;
- }
- void delay1(uchar x)
- {
- uchar a,b;
- for(a=x;a>0;a--)
- for(b=100;b>0;b--);
- }
- void write_add(uchar address,uchar date)
- {
- start();
- write_byte(0xa0);
- respons();
- write_byte(address);
- respons();
- write_byte(date);
- respons();
- stop();
- }
- uchar read_add(uchar address)
- {
- uchar date;
- start();
- write_byte(0xa0);
- respons();
- write_byte(address);
- respons();
- start();
- write_byte(0xa1);
- respons();
- date=read_byte();
- stop();
- return date;
- }
- void Read_Flash(uchar *Array,uchar nAdd,uchar nLen)
- {
- start();
- write_byte(0xa0);
- respons();
- write_byte(nAdd);
- respons();
- start();
- write_byte(0xa1);
- respons();
- while(--nLen)
- {
- *Array=read_byte();
- Array++;
- respons();
- }
- *Array=read_byte();
- stop();
- }
- void Write_Flash(uchar *Array,uchar nAdd,uchar nLen)
- {
- uchar i;
- start();
- write_byte(0xa0);
- respons();
- write_byte(nAdd);
- respons();
- for(i=0;i<nLen;i++)
- {
- write_byte(*Array);
- Array++;
- }
- respons();
- stop();
-
- }
复制代码
弄上去(书上没有),写着写着,发现有点麻烦,哎,先上单字节的程序了;
|