資源簡介
STM8主從機(jī)IIC通訊案例,希望對有需要的朋友有幫助,里面是主函數(shù),和中斷內(nèi)容。

代碼片段和文件信息
/*?MAIN.C?file
master.c
PD3-SDA
PC2-SCL
?*?
?*?Copyright?(c)?2002-2005?STMicroelectronics
?*/
#include?“main.h“
#define?bq3050_write_address??0x16
#define?bq3050_read_address? 0x17
#define?u8?unsigned?char
#define?u16?unsigned?int
#define?uchar?u8?
#define?uint?u16
#define?SDA_OUT??PD3_DDR=1
#define?SDA_IN???PD3_DDR=0
#define?SCL_OUT??PD2_DDR=1
#define?SCL_IN???PD2_DDR=0
#define?READ_SDA???PD3_IDR
#define?READ_SCL???PD2_IDR
#define?sda?????PD3_ODR
#define?scl?????PD2_ODR
#define??NACK??1
#define??ACK???0
void?iic_init(void);
void?iic_start(void);
void?iic_stop(void);
void?send_ack(void);
void?iic_ack(void);
void?iic_nack(void);
void?delay_us(void);
void?write_byte(uchar?date);
void?write_addr(uchar?addressuchar?date);
//u8?wait_ack(void);
u8?respons(void);
u8?read_byte(void);
u16?read_addr(u8?au8?addr);
void?uart_init(void);
void?delay_ms(uint?x);
void?delay_us_1(void);
u8?read_one_addr(u8?LSBu8?addr);
void?send_iic(u8?addru8?dat);
void?IIC_Init(void);
void?send_decimal(u16?temp);
/***********************************************************
//主函數(shù)
**********************************************************/?
void?main()
{
u16?tempkeykey1;
IIC_Init();
iic_init();
uart_init();
while(1)
{
temp=read_addr(0x090x16);
key=read_addr(0x090x60);
key1=read_addr(0x090x61);
send_decimal(temp);
delay_ms(100);
send_iic(0x0atemp%100000/10000);
send_iic(0x0atemp%10000/1000);
send_iic(0x0atemp%1000/100);
send_iic(0x0atemp%100/10);
send_iic(0x0atemp%10/1);
send_iic(0x0akey%100000/10000);
send_iic(0x0akey%10000/1000);
send_iic(0x0akey%1000/100);
send_iic(0x0akey%100/10);
send_iic(0x0akey%10/1);
send_iic(0x0akey1%100000/10000);
send_iic(0x0akey1%10000/1000);
send_iic(0x0akey1%1000/100);
send_iic(0x0akey1%100/10);
send_iic(0x0akey1%10/1);
//send_iic(0x0a0x0a);
delay_ms(100);
}
}
/***********************************************************
//初始化iic
**********************************************************/?
void?iic_init()
{
SDA_OUT;
SCL_OUT;
sda=1; delay_us();
scl=1; delay_us();
}
/***********************************************************
//起始信號
**********************************************************/?
void?iic_start()//起始信號
{
SDA_OUT;
SCL_OUT;
sda=1;
delay_us();
scl=1;?
delay_us();
sda=0; ?
delay_us(); ?
scl=0;
? delay_us(); ?
}
/***********************************************************
//停止信號
**********************************************************/?
void?iic_stop()//停止信號
{
SDA_OUT;
scl=0;
delay_us();
sda=0;
delay_us();
scl=1;
delay_us();
sda=1 ;
delay_us();
}
/***********************************************************
//主機(jī)發(fā)nack
********************
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????8507??2013-12-29?11:22??STM8主從機(jī)IIC通訊案例\main.c
?????文件????????1954??2007-11-13?15:37??STM8主從機(jī)IIC通訊案例\stm8_interrupt_vector.c
?????目錄???????????0??2018-08-09?17:32??STM8主從機(jī)IIC通訊案例\
評論
共有 條評論