xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

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

資源簡介

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

資源截圖

代碼片段和文件信息

#include??

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

#define?uchar?unsigned?char

#define?uint?unsigned?int
/********************************************************************
??此程序是I2C操作平臺(主方式的軟件平臺)的底層的C子程序如發送數據
及接收數據應答位發送并提供了幾個直接面對器件的操作函數,它很方便的
與用戶程序連接并擴展.....

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

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

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

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

/*?常變量定義區?*/

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

#define?iic_delay()?delay_us(1)????????//?根據系統時鐘進行調整

uchar?TAB_T[]={?0x310x060x10//秒分時

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

void delay_us(?uchar?us?)
{
uchar?dly;
????while?(?us?--?)
????{
????????for(dly=0;dly<8;dly++);
????}
}
?????????????????????????????????????????????????/*狀態標志*/
uchar?ack; ?????????/*應答標志位*/

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

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

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

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

????}

????iic_delay()?;

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

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

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

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

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


評論

共有 條評論