亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? twi.c

?? AVR的ADC開發程序
?? C
字號:
#include "twi.h"#include <avr/io.h>#include <avr/interrupt.h>volatile struct TWI_master_data *TWI_task_first = 0;volatile struct TWI_master_data *TWI_task_last = 0;volatile struct TWI_master_data *TWI_task_current = 0;volatile struct TWI_slave_data *TWI_slave_send = 0;volatile struct TWI_slave_data *TWI_slave_receive = 0;void TWI_initialize(){  TWDR = 0xFF;  TWSR = 0;  TWCR = (1 << TWEN) |  (1 << TWIE) | (0 << TWINT) |    (0 << TWEA) | (0 << TWSTA) | (0 << TWSTO) | (0 << TWWC);  sei ();}void TWI_master_initialize (unsigned scl_frequency){  TWBR = TWI_clock_frequency / (2 * scl_frequency) - 8;} voidTWI_slave_initialize (unsigned char own_address,		      struct TWI_slave_data *send,		      struct TWI_slave_data *receive){  TWAR = own_address;  TWI_slave_send = send;  TWI_slave_receive = receive;  TWCR |= (1 << TWEA) | (0 << TWIE);} void TWI_master (struct TWI_master_data *data){  if (TWI_task_first == 0)  {    TWI_task_first = TWI_task_last = TWI_task_current =      data;    TWCR |= (1 << TWSTA) | (1 << TWINT);  }  else  {    TWI_task_last->next = data;    TWI_task_last = data;  }}/* General TWI Master staus codes */#define TWI_START                  0x08#define TWI_REP_START              0x10#define TWI_ARB_LOST               0x38/* TWI Master Transmitter staus codes */#define TWI_MTX_ADR_ACK            0x18#define TWI_MTX_ADR_NACK           0x20#define TWI_MTX_DATA_ACK           0x28#define TWI_MTX_DATA_NACK          0x30/* TWI Master Receiver staus codes */#define TWI_MRX_ADR_ACK            0x40#define TWI_MRX_ADR_NACK           0x48#define TWI_MRX_DATA_ACK           0x50#define TWI_MRX_DATA_NACK          0x58/* TWI Slave Transmitter staus codes */#define TWI_STX_ADR_ACK            0xA8#define TWI_STX_ADR_ACK_M_ARB_LOST 0xB0#define TWI_STX_DATA_ACK           0xB8#define TWI_STX_DATA_NACK          0xC0#define TWI_STX_DATA_ACK_LAST_BYTE 0xC8/* TWI Slave Receiver staus codes */#define TWI_SRX_ADR_ACK            0x60#define TWI_SRX_ADR_ACK_M_ARB_LOST 0x68#define TWI_SRX_GEN_ACK            0x70#define TWI_SRX_GEN_ACK_M_ARB_LOST 0x78#define TWI_SRX_ADR_DATA_ACK       0x80#define TWI_SRX_ADR_DATA_NACK      0x88#define TWI_SRX_GEN_DATA_ACK       0x90#define TWI_SRX_GEN_DATA_NACK      0x98#define TWI_SRX_STOP_RESTART       0xA0/* TWI Miscellaneous status codes */#define TWI_NO_STATE               0xF8#define TWI_BUS_ERROR              0x00ISR (TWI_vect){  static unsigned char string_index;  switch (TWSR)  {  case TWI_START:  case TWI_REP_START:    string_index = 0;  case TWI_MTX_ADR_ACK:  case TWI_MTX_DATA_ACK:    if (string_index < TWI_task_current->length)    {      TWDR = TWI_task_current->string[string_index++];      TWCR = (1 << TWEN) |	(1 << TWIE) | (1 << TWINT) |	(0 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |	(0 << TWWC);    }    else    {      *TWI_task_current->flag = 0;      if (TWI_task_current != TWI_task_last)      {	TWI_task_current = TWI_task_current->next;	TWCR = (1 << TWEN) |	  (1 << TWIE) | (1 << TWINT) |	  (0 << TWEA) | (1 << TWSTA) | (0 << TWSTO) |	  (0 << TWWC);      }      else      {	TWI_task_first = TWI_task_last = TWI_task_current =	  0;	TWCR =	  (1 << TWEN) | (1 << TWIE) | (1 << TWINT) | (1 <<						      TWEA)	  | (0 << TWSTA) | (1 << TWSTO) | (0 << TWWC);      }    }    break;  case TWI_MRX_DATA_ACK:    TWI_task_current->string[string_index++] = TWDR;  case TWI_MRX_ADR_ACK:    if (string_index < (TWI_task_current->length - 1))    {      TWCR = (1 << TWEN) |	(1 << TWIE) | (1 << TWINT) |	(1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |	(0 << TWWC);    }    else    {      TWCR = (1 << TWEN) |	(1 << TWIE) | (1 << TWINT) |	(0 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |	(0 << TWWC);    }    break;  case TWI_MRX_DATA_NACK:    TWI_task_current->string[string_index] = TWDR;    *TWI_task_current->flag = 0;    if (TWI_task_current != TWI_task_last)    {      TWI_task_current = TWI_task_current->next;      TWCR = (1 << TWEN) |	(1 << TWIE) | (1 << TWINT) |	(0 << TWEA) | (1 << TWSTA) | (0 << TWSTO) |	(0 << TWWC);    }    else    {      TWI_task_first = TWI_task_last = TWI_task_current = 0;      TWCR =	(1 << TWEN) | (1 << TWIE) | (1 << TWINT) | (1 <<						    TWEA)	| (0 << TWSTA) | (1 << TWSTO) | (0 << TWWC);    }    break;  case TWI_ARB_LOST:    TWCR = (1 << TWEN) |      (1 << TWIE) | (1 << TWINT) |      (1 << TWEA) | (1 << TWSTA) | (0 << TWSTO) |      (0 << TWWC);    break;  case TWI_MTX_ADR_NACK:  case TWI_MRX_ADR_NACK:  case TWI_MTX_DATA_NACK:    TWI_task_first = TWI_task_current;    TWCR = (1 << TWEN) |      (1 << TWIE) | (1 << TWINT) |      (1 << TWEA) | (1 << TWSTA) | (0 << TWSTO) |      (0 << TWWC);    break;  case TWI_STX_ADR_ACK:    string_index = 0;    *TWI_slave_send->flag = 0xFF;  case TWI_STX_DATA_ACK:    if (string_index < TWI_slave_send->length)      TWDR = TWI_slave_send->string[string_index++];    else      TWDR = 0;    TWCR = (1 << TWEN) |      (1 << TWIE) | (1 << TWINT) |      (1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |      (0 << TWWC);    break;  case TWI_STX_DATA_NACK:    *TWI_slave_send->flag = 0;    TWCR = (1 << TWEN) |      (1 << TWIE) | (1 << TWINT) |      (1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |      (0 << TWWC);    break;  case TWI_SRX_GEN_ACK:  case TWI_SRX_ADR_ACK:    string_index = 0;    *TWI_slave_receive->flag = 0xFF;    TWCR = (1 << TWEN) |      (1 << TWIE) | (1 << TWINT) |      (1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |      (0 << TWWC);    break;  case TWI_SRX_ADR_DATA_ACK:  case TWI_SRX_GEN_DATA_ACK:    if (string_index < TWI_slave_receive->length)      TWI_slave_receive->string[string_index++] = TWDR;    if (string_index == TWI_slave_receive->length)      *TWI_slave_receive->flag = 0;    TWCR = (1 << TWEN) |      (1 << TWIE) | (1 << TWINT) |      (1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |      (0 << TWWC);    break;  case TWI_SRX_STOP_RESTART:    *TWI_slave_receive->flag = 0;    TWI_slave_receive = TWI_slave_receive->next;    if (TWI_task_current == 0)      TWCR = (1 << TWEN) |	(1 << TWIE) | (1 << TWINT) |	(1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |	(0 << TWWC);    else      TWCR = (1 << TWEN) |	(1 << TWIE) | (1 << TWINT) |	(1 << TWEA) | (1 << TWSTA) | (0 << TWSTO) |	(0 << TWWC);    break;  case TWI_SRX_ADR_DATA_NACK:  case TWI_SRX_GEN_DATA_NACK:  case TWI_STX_DATA_ACK_LAST_BYTE:  case TWI_BUS_ERROR:  default:    TWCR = (1 << TWEN) |      (1 << TWIE) | (1 << TWINT) |      (1 << TWEA) | (0 << TWSTA) | (0 << TWSTO) |      (0 << TWWC);    break;  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频第一区二区三区免费观看网站 | 国产凹凸在线观看一区二区 | 美国十次了思思久久精品导航| 国产大陆亚洲精品国产| 国产精品久久看| 91精品福利在线一区二区三区 | 久久精品国产久精国产爱| 99免费精品视频| 国产色综合一区| 麻豆成人av在线| 欧美浪妇xxxx高跟鞋交| 国产精品久久毛片a| 国产精品综合av一区二区国产馆| 欧美日韩国产大片| 亚洲影视在线观看| 91麻豆免费观看| 中文字幕一区二区三区四区 | 欧美精品第一页| 久久久www成人免费毛片麻豆| 国产精品 欧美精品| 国内外精品视频| 91首页免费视频| 国产女主播一区| 美女在线观看视频一区二区| 欧美精品在线一区二区| 天天做天天摸天天爽国产一区| 在线观看91视频| 亚洲综合在线免费观看| 91免费看片在线观看| 亚洲视频一区二区在线| 成人黄色a**站在线观看| 日本一区二区电影| 粉嫩蜜臀av国产精品网站| 国产人久久人人人人爽| 国产成人精品亚洲午夜麻豆| 中文一区在线播放| a级精品国产片在线观看| 亚洲三级在线免费观看| 91黄色免费版| 亚洲精品乱码久久久久久久久 | 成人蜜臀av电影| 精品国产凹凸成av人网站| 老司机免费视频一区二区| 欧美日韩国产一级| 岛国av在线一区| 亚洲视频一区二区免费在线观看| 99视频超级精品| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩视频一区二区| 蜜桃视频在线一区| 国产欧美视频一区二区| 99久久伊人精品| 亚洲第一综合色| 精品免费国产二区三区| 91在线一区二区| 五月天精品一区二区三区| 久久看人人爽人人| 色综合色综合色综合色综合色综合| 亚洲高清视频在线| 精品福利一二区| 91色九色蝌蚪| 美国毛片一区二区三区| 国产精品久久久久久久久搜平片 | 国产成人精品一区二| 亚洲一线二线三线久久久| 日韩三级av在线播放| 成人高清视频免费观看| 天堂av在线一区| 国产精品久久免费看| 91精品国产入口在线| 国产成人日日夜夜| 日韩电影在线免费| 中文字幕一区二区三区不卡在线| 51久久夜色精品国产麻豆| 成人精品免费视频| 卡一卡二国产精品| 亚洲一区二区欧美日韩| 亚洲国产电影在线观看| 日韩视频免费直播| 欧美亚洲图片小说| www.久久精品| 国产成人av电影在线| 日本va欧美va瓶| 亚洲一区在线视频| 国产精品三级av在线播放| 日韩精品一区二区三区在线| 在线观看日韩精品| 91色.com| 成人av在线观| 成人美女视频在线看| 国产曰批免费观看久久久| 日韩精品色哟哟| 亚洲国产aⅴ成人精品无吗| 亚洲四区在线观看| 国产精品欧美久久久久无广告 | 欧美一区2区视频在线观看| 91麻豆精品一区二区三区| 国产成人av一区二区三区在线| 久久99在线观看| 麻豆91在线观看| 日本欧美韩国一区三区| 亚洲va韩国va欧美va| 亚洲国产精品尤物yw在线观看| 亚洲色图.com| 日韩伦理av电影| 亚洲欧美一区二区三区久本道91 | 国产精品1区2区| 国产乱码字幕精品高清av| 久久99久久久欧美国产| 麻豆91在线播放免费| 久久精品免费观看| 激情综合亚洲精品| 韩国女主播成人在线观看| 国产一区高清在线| 国产一区二区视频在线播放| 国产精品亚洲午夜一区二区三区 | 免费在线欧美视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 男女男精品视频网| 狠狠色2019综合网| 粉嫩一区二区三区性色av| 成人免费毛片片v| 97精品久久久午夜一区二区三区| 91在线播放网址| 欧美日韩免费视频| 欧美一区二区福利视频| 久久人人97超碰com| 欧美国产丝袜视频| 一区二区激情视频| 偷拍与自拍一区| 国产乱码一区二区三区| 99国产欧美久久久精品| 欧美日韩国产片| 久久综合色综合88| 综合久久综合久久| 日韩成人一区二区| 粉嫩一区二区三区性色av| 91福利资源站| 精品欧美一区二区三区精品久久| 中文字幕第一区第二区| 一区二区三区欧美视频| 免费人成在线不卡| 成人免费毛片高清视频| 欧美日韩日本视频| 国产女主播一区| 图片区小说区国产精品视频| 国产伦精品一区二区三区视频青涩 | 国产69精品久久久久毛片| 色哟哟亚洲精品| 日韩精品一区在线| 一区二区三区在线视频免费观看| 蜜臀av在线播放一区二区三区| kk眼镜猥琐国模调教系列一区二区| 欧美三区在线观看| 中文欧美字幕免费| 奇米色一区二区| 一本一道久久a久久精品| 日韩精品最新网址| 亚洲国产精品欧美一二99 | 奇米综合一区二区三区精品视频| 国产成人精品免费看| 欧美一区二区三区精品| 亚洲天堂av老司机| 国产黄色成人av| 欧美一区二区视频在线观看2022 | 亚洲午夜日本在线观看| 国产高清视频一区| 日韩一区二区不卡| 亚洲成人激情自拍| 91在线视频播放| 国产欧美日产一区| 国产在线视频精品一区| 91.com视频| 婷婷中文字幕一区三区| 91麻豆国产香蕉久久精品| 久久久久综合网| 久久66热偷产精品| 欧美一区二区三区在线观看 | 国产成人免费视| 精品入口麻豆88视频| 日韩精品一二三区| 欧美日韩精品一区二区三区蜜桃| 亚洲黄色尤物视频| 91蜜桃免费观看视频| 国产精品嫩草影院com| 国产乱子伦视频一区二区三区 | 色播五月激情综合网| 国产精品国产三级国产普通话蜜臀| 激情丁香综合五月| 精品国产91洋老外米糕| 日本不卡一区二区三区高清视频| 欧美日韩黄色一区二区| 午夜在线成人av| 91精品黄色片免费大全| 国产精品资源在线| 一区二区三区精品在线观看| 久久精品亚洲麻豆av一区二区| 国产精品人成在线观看免费| 国产高清在线观看免费不卡| 国产欧美一区二区三区网站|