MSP430 IIC通信
来源:互联网 发布:总管家软件 编辑:程序博客网 时间:2024/05/15 23:48
#include<msp430f149.h>#define OP_READ 0xa1 //器件地址读#define OP_WRITE 0xa0 //器件地址写#define uchar unsigned char#define uint unsigned int #define SDA_OUT P1DIR |= BIT3#define SDA_IN P1DIR &= ~BIT3#define SCL_OUT P1DIR |= BIT2#define SCL_IN P1DIR &= ~BIT2#define SDA_H P1OUT |= BIT3#define SDA_L P1OUT &= ~BIT3#define SCL_H P1OUT |= BIT2#define SCL_L P1OUT &= ~BIT2#define wei_h P5OUT |= BIT5#define wei_l P5OUT &= BIT5#define duan_l P6OUT &= ~BIT6#define duan_h P6OUT |= BIT6uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar miao;uchar write;int num;void delayus(uint z){ uint i,j; for(i = 0;i<20;i++) for(j=0;j<z;j++) {;;};}void start(){ SDA_OUT; SCL_OUT; SDA_H; SCL_H; delayus(1); SDA_L; delayus(2); SCL_L;}void stop(){ SDA_OUT; SCL_OUT; SDA_L; delayus(2); SCL_H; delayus(2); SDA_H;}void Ack24(){ SDA_OUT; SCL_OUT; SDA_H; SCL_H; delayus(2); SDA_IN; while(P1IN & BIT3) SCL_L; delayus(2);}//mcu读取数据uchar read_byte(){ uchar i,read_data; SDA_OUT; SCL_OUT; for(i = 0;i<8;i++) { SDA_H; delayus(1); SCL_H; SDA_IN; read_data <<= 1; if(P1IN & BIT3) read_data |= 0x01; SDA_OUT; SCL_L; } return(read_data);}void write_byte(uint dat){ uchar i; SDA_OUT; SCL_OUT; for(i = 0;i<8;i++) { if(dat&0x80) SDA_H; else SDA_L; delayus(2); SCL_H; delayus(2); SCL_L; delayus(2); dat <<= 1; } SCL_L; delayus(2); SDA_H; delayus(2);}//向指定地址写数据void write_dat(uchar addr,uchar write_data){ SDA_OUT; SCL_OUT; SDA_H; SCL_H; start(); write_byte(OP_WRITE); Ack24(); write_byte(addr); Ack24(); write_byte(write_data); Ack24(); stop(); delayus(1000);}//从指定地址读数据uchar read_random(uint random_addr){ uchar i; SDA_OUT; SCL_OUT; SDA_H; SCL_H; start(); write_byte(OP_WRITE); Ack24(); write_byte(random_addr); Ack24(); start(); write_byte(OP_READ); Ack24(); i = read_byte(); stop(); return i;}void display(uchar dat){ P4OUT = table[dat]; duan_h; duan_l; P4OUT = ~(1 << num); wei_h; wei_l;}void Clock(void){ miao++; if(miao==10) miao=0;}void main( void ){ P1DIR = 0XFF,P1OUT = 0XFF; P2DIR = 0XFF,P2OUT = 0XFF; P3DIR = 0XFF,P3OUT = 0XFF; P4DIR = 0XFF,P4OUT = 0XFF; P5DIR = 0XFF,P5OUT = 0XFF; P6DIR = 0XFF,P6OUT = 0XFF; SDA_OUT; SCL_OUT; SDA_H; SCL_L; // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; CCR0 = 32768 -1; TACTL = TASSEL_1 + MC_1; CCTL0 |= CCIE; _EINT(); miao = read_random(3); if(miao>9) miao=0; while(1) { display(miao); if(write==1) { write = 0; write_dat(3,miao); } LPM3; }}#pragma vector = TIMERA0_VECTOR__interrupt void TimerA_ISR(void){ Clock(); write = 1; LPM3_EXIT;}
1 0
- MSP430 IIC通信
- Proteus中MSP430与SHT11的IIC通信问题
- IIC通信
- IIC通信
- IIC通信
- 单片机 MSP430 IIC控制器编程(1)
- 单片机 MSP430 IIC控制器编程(2)
- 单片机 MSP430 模拟IIC编程(1)
- 单片机 MSP430 模拟IIC编程(2)
- IIC通信注意事项
- IIC通信底层
- bqxx iic通信注意
- stm32---iic通信
- IIC 通信实例
- IIC通信时序组成:
- 通信总线-IIC
- STM32 IIC通信
- DA14580 --- IIC通信
- RadioButton控件
- 可重入函数与不可重入函数(转)
- JVM Server与Client运行模式
- PHP设计模式
- 行为型模式--命令模式
- MSP430 IIC通信
- java自定义注解及其使用
- TaskScheduler内幕天机解密
- Hadoop+Spark+Scala+R+PostgreSQL+Zeppelin 安装过程-环境准备
- 使用maven profile配置运行不同环境和日志
- Mysql主从配置
- liferay监听器
- 修改UIAlertController字体颜色大小
- Android广播机制——广播的注册