• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: STM8  

资源简介

STM8主从机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
********************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        8507  2013-12-29 11:22  STM8主从机IIC通讯案例\main.c
     文件        1954  2007-11-13 15:37  STM8主从机IIC通讯案例\stm8_interrupt_vector.c
     目录           0  2018-08-09 17:32  STM8主从机IIC通讯案例\

评论

共有 条评论