历史上的今天
今天是:2025年02月02日(星期日)
2020年02月02日 | pic单片机硬件iic例子
2020-02-02 来源:eefocus
PIC -IIC硬件驱动程序
#include while(1) PORTA=wei[0]; SSPBUF=value; int read( uchar r_add) RCEN=1;
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
const uchar ee_data[]={1,2,3,4,5,6};
uchar read_data[6];
unsigned char duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char wei[]={0x3e,0x3d,0x3b,0x37,0x2f,0x1f};
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void FBI(uint x);
void init();
void didi(uchar num);
void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6);
void write(uchar add, uchar value);
int read(uchar r_add);
uchar a1,a2,a3,a4,a5,a6;
int vv;
void main()
{
uchar i;
init();
/* for(i=3;i<9;i++)
{
write(i,i);// 对应地址写入数据
}*/
FBI(1000);
{
a1=read(3);// 对应地址读出
a2=read(4);// 对应地址读出
a3=read(5);// 对应地址读出
a4=read(6);// 对应地址读出
a5=read(7);// 对应地址读出
a6=read(8);
PORTD=duan[a1];
FBI(1);
PORTA=wei[1];
PORTD=duan[a2];
FBI(1);
PORTA=wei[2];
PORTD=duan[a3];
FBI(1);
PORTA=wei[3];
PORTD=duan[a4];
FBI(1);
PORTA=wei[4];
PORTD=duan[a5];
FBI(1);
PORTA=wei[5];
PORTD=duan[a6];
FBI(1);
}
}
void FBI(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
TRISD=0;
TRISA=0;
TRISE0=0;
// ADCON1=0x07;
RC2=0;
PORTD=0;
PORTA=0;
TRISC=0x00;
SSPSTAT=0x80;
SSPCON=0x38;
SSPCON2=0;
SSPADD=0x09;
}
void write(uchar add ,uchar value)
{
uchar i;
SSPIF=0;
SEN=1;
while(!SSPIF);
SSPIF=0;
SSPBUF=0XA0;
while(!SSPIF);
SSPIF=0;
SSPBUF=add;
while(!SSPIF);
SSPIF=0;
while(!SSPIF);
SSPIF=0;
PEN=1;
while(!SSPIF);
SSPIF=0;
didi(1);
}
{
uchar i;
SSPIF=0;
SEN=1;
while(!SSPIF);
SSPIF=0;
SSPBUF=0xA0;
while(!SSPIF);
SSPIF=0;
SSPBUF=r_add;
while(!SSPIF);
SSPIF=0;
SSPIF=0;
RSEN=1;
while(!SSPIF);
SSPIF=0;
SSPBUF=0xA1;
while(!SSPIF);
SSPIF=0;
while(!SSPIF);
vv=SSPBUF;
while(!SSPIF);
SSPIF=0;
ACKDT=1;
ACKEN=1;
while(!SSPIF);
SSPIF=0;
PEN=1;
while(!SSPIF);
SSPIF=0;
return vv;
}
void didi(uchar num)
{
uchar di_num;
for(di_num=num;di_num>0;di_num--)
{
RC2=1;
FBI(50);
RC2=0;
FBI(20);
}
}
史海拾趣
|
关于vec调试中,怎么调才能让频率正确(具体的参数) 例如:720*572(13.5hz)转换成vga 800*600(75hz)。大小可以跳出,但75hz调不出来 请教大虾指导。… 查看全部问答> |
|
*****香版主:IAR422+st-linkII在中断内调试出问题 用IAR442,IAR5.X还未支持ST-LINK II, ST-LINK II也不支高密度的FLASH,IAR422下用st-link II 在中断内断点调试,老是会跳不出中断!何解?打算以后用IAR5.X+WIGGLER+HJTAG.EXE 不知功能如何?有没有ST&nb ...… 查看全部问答> |
|
近日看74LS164的用法以及一些相关程序。配上时序图,真的,感觉基本没关联。 程序一般都是循环8次,每次都是一位检验。然后再移动一位。 观74LS164的时序图,自己分析如下: AB A B C D ...… 查看全部问答> |
|
至芯科技zx-2fpga开发板,初学者实践学习之数码管简单评测 ZXOPEN-2 FPGA初学者开发板数码管简单评测 4月7号收到至芯科技邮寄的电路板 全家福 左侧USB Blaster 中间FPGA学习板 右侧USB方口 ...… 查看全部问答> |
|
二极管又称晶体二极管,简称二极管(diode),另外,还有早期的真空电子二极管;它是一种具有单向传导电流的电子器件。在半导体二极管内部有一个PN结两个引线端子,这种电子器件按照外加电压的方向,具备单向电流的转导性。一般来讲,晶体二极管是一个 ...… 查看全部问答> |




