历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2020年02月06日 | 关于PIC+TCA6424程序

2020-02-06 来源:eefocus

最近做了一套PIC+IO扩展芯片TCA6424程序,废话不说,上程序


void main(void) {


System_Init();


wr_IIC(0x8c,0xff,0xff,0xff);


while(1)


{


p0 = rd_IIC(0x80);


p1 = rd_IIC(0x81);


p2 = rd_IIC(0x82);


p0 = 0;


p1 = 0;


p2 = 0;


}


}





void IIC_Init(void)


{


SCL_DIR = 0;


SDA_DIR = 0;


SCL_PIN = 1;


SDA_PIN = 1;


}




void IICstart(void)


{


SCL_DIR = 0;


SDA_DIR = 0;




SDA_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SDA_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


}




void IICstop(void)


{


SCL_DIR = 0;


SDA_DIR = 0;




SDA_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SDA_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


}




void IICsend(unsigned char data)


{


unsigned char i=8,n;


SCL_DIR = 0;


SDA_DIR = 0;




for(n=0; n<8; n++)


{


SDA_PIN = 0;


if(data&0x80)


{


SDA_PIN = 1;


}


data = data << 1;


SCL_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


}


}




unsigned char IICreceive(void)


{


unsigned char i=8;


unsigned char data=0;




SCL_DIR = 0;


SDA_DIR = 1;


while(i)


{


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


data<<=1;


data|=SDA_PIN ;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


i--;


}


SCL_PIN = 0;


return(data);


}




void IICreadack(void)


{


SDA_PIN = 0;


SDA_DIR = 1;




if(SDA_PIN == 1)


{


for(;;) ;//NACK


}


SCL_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");




SDA_DIR = 0;


SDA_PIN = 0;


}




void IICsendack(void)


{


SCL_DIR = 0;


SDA_DIR = 0;


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SDA_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


}




void IICsendNack(void)


{


SCL_DIR = 0;


SDA_DIR = 0;


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SDA_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 1;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


SCL_PIN = 0;


asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");


}




//************以下两个函数基于文件夹“TCA6424 SCAN5 51(pudn)”***********//


void wr_IIC(char a,char b,char c,char d)


{


unsigned char command;




IICstart();




command=0x44;


IICsend(command);


IICreadack();




IICsend(a);


IICreadack();




IICsend(b);


IICreadack();




IICsend(c);


IICreadack();




IICsend(d);


IICreadack();




IICstop();


}




unsigned char rd_IIC(char a)


{


unsigned char i,command,com_data;




IICstart();




command=0x44;


IICsend(command);


IICreadack();




IICsend(a);


IICreadack();




IICstart();




command=0x45;


IICsend(command);


IICreadack();




com_data = IICreceive();


IICsendNack();


IICstop();


return(com_data);


}


推荐阅读

史海拾趣

蓝箭(BLUE ROCKET)公司的发展小趣事

随着市场的不断扩大和需求的增加,蓝箭电子逐渐形成了年产150亿只的生产规模,成为华南地区主要的半导体器件生产基地之一。公司凭借优质的产品和服务,赢得了广大客户的认可,市场份额逐年提升。

Diamond SA公司的发展小趣事

在电子行业的初期,Diamond SA公司以其卓越的技术研发能力脱颖而出。公司创始人对半导体技术的深入研究,引领了一场技术革命。他们成功开发出一种新型的芯片设计,大大提高了电子设备的性能和效率。这一创新技术迅速在市场上获得了认可,Diamond SA公司也因此逐渐崭露头角。

Frequency Management International公司的发展小趣事

随着业务的不断发展,FMI开始积极拓展国内外市场。公司凭借高品质的产品和专业的服务,赢得了众多客户的信赖和支持。同时,FMI还积极实施国际化战略,通过参加国际展会、建立海外销售网络等方式,不断提升品牌国际影响力。目前,FMI的产品已经广泛应用于计算机外设、工业仪器、局域网/广域网、光网络、过程控制、电信和无线产品等多个领域,并远销全球多个国家和地区。

ENTRELECUK公司的发展小趣事

在电子行业中,绿色环保和可持续发展已成为重要的议题。ENTRELEC UK积极响应这一趋势,致力于研发和生产环保型产品。公司采用环保材料和节能技术,降低产品对环境的影响。同时,公司还积极参与环保公益活动,推动行业的可持续发展。

Compostar Technology Co Ltd公司的发展小趣事

Compostar Technology Co Ltd公司自成立以来,一直致力于电子技术的研发与创新。在早期,公司凭借一款具有高效能耗比的电源管理芯片,成功打入了市场。随着技术的不断进步,公司逐渐将业务扩展到通信、智能家居和可穿戴设备等多个领域。公司不断投入研发资金,吸引了一批优秀的科研人才,成功研发出多款具有竞争力的产品,逐渐在电子行业中树立了良好的口碑。

Atlanta Micro公司的发展小趣事

作为一家技术驱动的公司,Atlanta Micro始终重视研发实力的提升。公司不断加大研发投入,引进了一批高素质的研发人才,并建立了完善的研发体系。这些举措使得公司的研发能力得到了显著提升,不断推出具有市场竞争力的新产品,为公司的发展提供了源源不断的动力。

问答坊 | AI 解惑

gl850a的电路设计图

谁有gl850a的电路设计图啊?能给我一份吗!多谢!tianye312@eyou.com…

查看全部问答>

提高FPGA设计水平的方法

1. 熟练掌握数字逻辑的电路知识,知道常用组合逻辑、时序逻辑电路实现的各类器件,了解冒险竞争原理,以及消除的方法。 2. 深刻理解所用FPGA与CPLD器件的硬件架构以及其实现组合与时序的电路的方法; 3. 深刻理解数字逻辑电路设计语言VHDL与Veril ...…

查看全部问答>

2410 串口简单问题

我用WINCE5的PROFILE 里的TIME2定时器做了 切换rs485串口 收发 的定时器中断,就是在发送完成后,计算FIFO队列,然后得精确中断(在中断中,切换成收的状态) 目前运行还算是正常。 现在发现一个问题,就是在切换后,对于某些做的不是很好的设备 ...…

查看全部问答>

有没有高手用过1555L芯片?

  有没有高手用过1555L芯片,我现在想用把这个芯片连接到at89c5131中,但是我看看多datasheet,它给的典型电路图,好像不是很详细,如果有用过的高手,可否发一下原理图,万谢~~~,在下是菜鸟。学习中。…

查看全部问答>

如何实现 (单片机+摄像头)实现小车对乒乓球的定位

各位大大,我们是小菜鸟, 最近我们要做一个SRTP的项目,我们决定做 一个捡乒乓球的小车 有前人做过捡网球的小车的 现在就想问问各位,如何实现小车对乒乓球的定位,摄像头?红外? 获取动态图像还是静态JPEG,定位后,驱动捡球 我们对这方面的 ...…

查看全部问答>

申请要LM3S811做个寻线小车

不知道还能不能申请的到!…

查看全部问答>

ARMv7-M应用程序级架构参考手册(权威)

ARMv7-M应用程序级架构参考手册(权威)…

查看全部问答>

关于dsp的入门问题

我是一个学习dsp的新手,想请教一下关于dsp怎样入门,感觉看基础教程不是太有用。…

查看全部问答>

来个无聊的实作:股票信息显示器

平时玩电脑的时候,由于是笔记本,屏幕尺寸比较小,查看股票信息什么的要频繁切换页面很是麻烦,能不能用launchpad做一个单独实时显示股票信息的工具呢,就像再加一台小显示器一样,手边刚好有个5110屏,接口少好操作,立即开工。一、脚位定义:由 ...…

查看全部问答>