資源簡介
關鍵在于雙機iic通訊,主機發命令給從機,從機根據命令做出相對應的反應,這是一種協議的開發,主要是以后上位機開發中經常用到的協議,比如我傳輸一幀數據,從機根據這一幀數據做出相對應的操作!核心在于編程的思想.

代碼片段和文件信息
/*?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);
/***********************************************************
//主函數
**********************************************************/?
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();
}
/***********************************************************
//主機發nack
********************
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????34157??2013-12-29?11:22??master\Debug\main.ls
?????文件??????34418??2013-12-29?11:22??master\Debug\main.o
?????文件??????23958??2013-12-29?11:22??master\Debug\master.elf
?????文件???????2288??2013-12-28?14:01??master\Debug\master.lkf
?????文件??????34490??2013-12-29?11:22??master\Debug\master.map
?????文件???????4118??2013-12-29?11:22??master\Debug\master.s19
?????文件??????33199??2013-12-29?11:22??master\Debug\master.sm8
?????文件???????5477??2013-12-29?08:19??master\Debug\stm8_interrupt_vector.ls
?????文件???????2781??2013-12-29?08:19??master\Debug\stm8_interrupt_vector.o
?????文件???????8507??2013-12-29?11:22??master\main.c
?????文件????????374??2013-12-29?13:54??master\master.dep
?????文件????????897??2013-12-28?14:15??master\master.pdb
?????文件??????12473??2013-12-28?14:16??master\master.stp
?????文件????????201??2013-12-29?13:54??master\master.stw
?????文件??????33404??2013-12-29?13:47??master\master.wdb
?????文件??????33194??2013-12-29?13:54??master\master.wed
?????文件???????2292??2013-12-28?14:01??master\Release\master.lkf
?????文件???????1954??2007-11-13?15:37??master\stm8_interrupt_vector.c
?????目錄??????????0??2014-03-26?10:19??master\Debug
?????目錄??????????0??2014-03-26?10:19??master\Release
?????目錄??????????0??2014-03-28?09:26??master
-----------?---------??----------?-----??----
???????????????268182????????????????????21
評論
共有 條評論