完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void start(void)
{ //P2DIR |= 0x03; P1DIR |= 0x00; mlx_out; SDA_H; delay_us(5); //P2DIR |= BIT1; SCK_H; delay_us(5); //P2DIR |= BIT0; SDA_L; delay_us(5); //P2DIR |= BIT1; SCK_L; delay_us(5); } void stop(void) { //P2DIR |= 0x03; // P2DIR |= BIT1; P1DIR |= 0x00; mlx_out; SCK_L; delay_us(5); //P2DIR |= BIT0; SDA_L; delay_us(5); //P2DIR |= BIT1; SCK_H; delay_us(5); //P2DIR |= BIT0; SDA_H; } void send_bit(void) { if(bit_out==1) { //P2DIR |= BIT0; mlx_out; SDA_H; //发1 } else { //P2DIR |= BIT0; mlx_out; SDA_L; //发0 } delay_us(2); //_NOP(); //P2DIR |= BIT1; mlx_out; SCK_H; //上升沿 delay_us(4);delay_us(4); //P2DIR |= BIT1; SCK_L; delay_us(4);delay_us(4); } void read_bit(void) { //P2DIR |= BIT0; mlx_out; SDA_H; //数据端先置1 bit_in=1; //P2DIR |= BIT1; SCK_H; //上升沿 delay_us(4);delay_us(4); P1OUT &= ~BIT1;; bit_in = ((P2IN) & BIT0); //读数据 //P2DIR |= 0x03; delay_us(1);// //_NOP(); //P2DIR |= BIT1; mlx_out; SCK_L; delay_us(4);delay_us(4); } // void SendByte(uchar number) { uchar i,n,dat; n=Nack_number; //可以重发次数 Send_again: dat=number; for(i=0;i<8;i++) //8位依次发送 { if(dat&0x80) //取最高位 { bit_out=1; //发1 。。。。。。。。。。。。。。。。。。 } else { bit_out=0; //发0 .............................. } send_bit(); //发送一个位 dat=dat<<1; //左移一位 } read_bit(); //接收1位应答信号 if(bit_in==1) //无应答时重发 .................................... { stop(); if(n!=0) { n--; //可以重发Nack_number=10次 goto Repeat; //重发 } else { goto exit; //退出 } } else { goto exit; } Repeat: start(); //重新开始 goto Send_again; //重发 exit: ; //退出 } // uint ReadByte(void) { uint i,dat; dat=0; //初值为0 for(i=0;i<8;i++) { dat=dat<<1; //右移 read_bit(); //接收一位 if(bit_in==1) { dat |= 0x01;//dat |= 0x01; //为1时对应位加1 } } //P2DIR |= BIT0; SDA_L; //发送应答信号0 send_bit(); return dat; //带回接收数据 } // uint readtemp(void) { //P2DIR |= BIT1; //SCK_L; start(); //开始条件 SendByte(0x00); //发送从地址00 SendByte(0x07); //发送命令 start(); //开始条件 SendByte(0x01); //读从地址00 bit_out=0; tempL=ReadByte(); //读数据低字节 bit_out=0; tempH=ReadByte(); //读数据高字节 bit_out=1; err=ReadByte(); //读错误信息码 stop(); //停止条件 return(tempH*256+tempL); } 这是mlx90614部分的代码,,运行结果总是0,,,大家帮帮忙吧 |
|
相关推荐
1个回答
|
|
有没有写的的stm32版程序
|
|
|
|
只有小组成员才能发言,加入小组>>
2632个成员聚集在这个小组
加入小组MSP430FR5994 使用库函数 定时器触发AD问题请教
1737 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2170 浏览 1 评论
4569 浏览 1 评论
2368 浏览 1 评论
1707 浏览 1 评论
714浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
1739浏览 2评论
937浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 11:17 , Processed in 1.166046 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号