91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-12
  • 語(yǔ)言: 其他
  • 標(biāo)簽: AVR??IIC??

資源簡(jiǎn)介

使用AVR單片機(jī)的普通IO口模擬I2c總線時(shí)序。用實(shí)時(shí)時(shí)鐘芯片演示例子。

資源截圖

代碼片段和文件信息

#include??

#include??
#include??“iic.h“

#define?uchar?unsigned?char

#define?uint?unsigned?int
/********************************************************************
??此程序是I2C操作平臺(tái)(主方式的軟件平臺(tái))的底層的C子程序如發(fā)送數(shù)據(jù)
及接收數(shù)據(jù)應(yīng)答位發(fā)送并提供了幾個(gè)直接面對(duì)器件的操作函數(shù),它很方便的
與用戶程序連接并擴(kuò)展.....

????注意:函數(shù)是采用軟件延時(shí)的方法產(chǎn)生SCL脈沖固對(duì)高晶振頻率要作
一定的修改....(本例是1us機(jī)器周期即晶振頻率要小于12MHZ)

********************************************************************/

#define??uchar?unsigned?char?/*宏定義*/
#define??uint??unsigned?int

#define??_Nop()??asm(“nop“)????????/*定義空指令*/

/*?常變量定義區(qū)?*/

?????????????????????????????????????????????????/*端口位定義*/
#define?SDA??PORTA_Bit1???????????/*模擬I2C數(shù)據(jù)傳送位*/
#define?SCL??PORTA_Bit0???????????/*模擬I2C時(shí)鐘控制位*/
#define?SDA_pin?DDRA_Bit1??????????/*SDA輸入輸出*/
#define?SCL_pin?DDRA_Bit0
#define?SDA_in?PINA_Bit1

#define?iic_delay()?delay_us(1)????????//?根據(jù)系統(tǒng)時(shí)鐘進(jìn)行調(diào)整

uchar?TAB_T[]={?0x310x060x10//秒分時(shí)

0x130x010x070x08};//日星期月年.

void delay_us(?uchar?us?)
{
uchar?dly;
????while?(?us?--?)
????{
????????for(dly=0;dly<8;dly++);
????}
}
?????????????????????????????????????????????????/*狀態(tài)標(biāo)志*/
uchar?ack; ?????????/*應(yīng)答標(biāo)志位*/

/*******************************************************************
?????????????????????起動(dòng)總線函數(shù)
函數(shù)原型:?void??Start_I2c();
功能:???????啟動(dòng)I2C總線即發(fā)送I2C起始條件.

********************************************************************/
void?Start()
{

????SCL_pin=0;
????SDA_pin=0;
????SDA=1;??????/*發(fā)送起始條件的數(shù)據(jù)信號(hào)*/
????_Nop();
????SCL=1;
????iic_delay();/*起始條件建立時(shí)間大于4.7us延時(shí)*/
????SDA_pin=1;
????SDA=0;??????/*發(fā)送起始信號(hào)*/
????iic_delay();/*?起始條件鎖定時(shí)間大于4μs*/
????SCL=0;??????/*鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)?*/
????SCL_pin=1;
????iic_delay();
}
/*******************************************************************
??????????????????????結(jié)束總線函數(shù)
函數(shù)原型:?void??Stop_I2c();
功能:???????結(jié)束I2C總線即發(fā)送I2C結(jié)束條件.
********************************************************************/
void?Stop()
{
????SDA=0;??????????/*發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)*/
????SDA_pin=1;
????iic_delay();????/*發(fā)送結(jié)束條件的時(shí)鐘信號(hào)*/
????SCL_pin=0;
????SCL=1;
????iic_delay();????/*結(jié)束條件建立時(shí)間大于4μs*/
????SDA_pin=0;
????SDA=1;??????????/*發(fā)送I2C總線結(jié)束信號(hào)*/
????iic_delay();
}
/*******************************************************************
?????????????????字節(jié)數(shù)據(jù)傳送函數(shù)
函數(shù)原型:?void??SendByte(uchar?c);
功能:??將數(shù)據(jù)c發(fā)送出去可以是地址也可以是數(shù)據(jù)發(fā)完后等待應(yīng)答并對(duì)
?????此狀態(tài)位進(jìn)行操作.(不應(yīng)答或非應(yīng)答都使ack=0?假)
?????發(fā)送數(shù)據(jù)正常,ack=1;?ack=0表示被控器無(wú)應(yīng)答或損壞。
********************************************************************/
void??WriteByte(uchar?c)
{
????uchar?BitCnt;

????for(BitCnt=0;BitCnt<8;BitCnt++)??/*要傳送的數(shù)據(jù)長(zhǎng)度為8位*/
????{
????????if((c<????????{
????????????SDA_pin=0;
????????????SDA=1;???/*判斷發(fā)送位*/
????????}
????????else
????????{
????????????SDA=0;
????????????SDA_pin=1;
????????}
????????_Nop();
????????SCL_pin=0;
????????SCL=1;???????????????/*置時(shí)鐘線為高,通知被控器開(kāi)始接收數(shù)據(jù)位*/
????????iic_delay();?????????/*保證時(shí)鐘高電平周期大于4μs*/
????????SCL=0;
????????SCL_pin=1;

????}

????iic_delay()?;

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????3742??2009-11-21?19:09??iic.h

?????文件???????6647??2009-12-18?08:42??IIC.c

-----------?---------??----------?-----??----

????????????????10389????????????????????2


評(píng)論

共有 條評(píng)論