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

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

?? uart_to_twi_m8_組合.i

?? AVR單片機的T_TO_TWI通訊方式
?? I
字號:
#line 1 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
test
#line 13 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"

#line 1 "C:/icc/include/iom8v.h"




#line 7 "C:/icc/include/iom8v.h"


#line 10 "C:/icc/include/iom8v.h"


#line 13 "C:/icc/include/iom8v.h"


#line 16 "C:/icc/include/iom8v.h"






















































































































































































































































































































































































































































#line 15 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
#line 1 "C:/icc/include/macros.h"






























#line 35 "C:/icc/include/macros.h"




















#line 16 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"






















































void check_I2C(void);
void init_data(void);
void port_init(void);
void init_devices(void);
void timer0_init(void);
void check_watchdog(void);
void process_data_pack(void);
void twi_transmint(void);
void watchdog_init(void);
void check_main_led(void);
void check_slave_led(void);
void ascii_to_hex(void);

unsigned char Twi_Hex_Data[3];
unsigned char Twi_ASCI_Data[6];
unsigned char Twi_Write_Flag,Twi_Read_Flag;
unsigned char Twi_ASCI_Data_Flag,Twi_Hex_Data_Flag;

unsigned char Slave_Led_Status;
unsigned char Main_Led_Status,Cur_Main_Led_Status,Count_10ms;

unsigned char UART_RX_buff[127];
unsigned char UART_TX_buff[127];
unsigned char Rx_Flag;
unsigned char Rx_Temp,Rx_Count;
unsigned char Rx_Start_Pack_Flag,Rx_Over_Pack_Flag;

unsigned char Write_Error[5] = {'x','w','4','0','x'};
unsigned char Read_Error[5]  = {'x','w','8','0','x'};



void main(void)
{
	init_devices();
	init_data();

	USART_Transmit( "read go!" );
	while(1)
	   {

		  UART_Receive();

		  check_watchdog();
	      process_data_pack();
		  twi_transmint();

		  check_main_led();
		}

}

void process_data_pack(void)
{
   unsigned char cnt,dat;

   if(Rx_Over_Pack_Flag == 1)
    {

		Slave_Led_Status = 1;
		check_slave_led();
		Rx_Over_Pack_Flag = 0;
		Slave_Led_Status = 0;

		if(UART_RX_buff[1] == 0x57)
		{
		   for(cnt =0;cnt<6;cnt++)
		    {
			   dat = UART_RX_buff[cnt+2];
			   if((dat >= 0x30)&&(dat <=0x39))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x30;
				}
			   else if((dat>=0x41)&&(dat<=0x46))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x37;
				}
		    }
			ascii_to_hex();
		   Twi_Write_Flag = 1;
		}
		if(UART_RX_buff[1] == 0x52)
		{
		   for(cnt =0;cnt<4;cnt++)
		    {
			   dat = UART_RX_buff[cnt+2];
			   if((dat >= 0x30)&&(dat <=0x39))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x30;
				}
			   else if((dat>=0x41)&&(dat<=0x46))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x37;
				}
		    }
			ascii_to_hex();
		   Twi_Read_Flag = 1;
		}
		Twi_Hex_Data_Flag = 1;


#line 175 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"

	}
}

void ascii_to_hex(void)
{
    unsigned char cnt,i;

	for(cnt=0,i=0;cnt<6;cnt++,cnt++,i++)
	{
	  Twi_Hex_Data[i] = Twi_ASCI_Data[cnt+1];
	  Twi_Hex_Data[i] <<= 4;
	  Twi_Hex_Data[i] += Twi_ASCI_Data[cnt];
	}
}
void hex_to_ascii(unsigned char dat)
{
    unsigned char dat_buff;

    dat_buff = dat;
    dat = dat&0x0f;
    if((dat>=0)&&(dat<=9))
    {
       dat += 0x30;
    }
    else
       dat += 0x37;
	UART_TX_buff[7] = dat;

    dat = dat_buff;
	dat >>= 4;
	dat = dat&0x0f;
    if((dat>=0)&&(dat<=9))
    {
      dat += 0x30;
    }
    else
      dat += 0x37;
	UART_TX_buff[8] = dat;
}


#line 219 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
unsigned char general_hex_to_ascii(unsigned char dat)
{
    dat = dat & 0x0f;
    if((dat >= 0)&&(dat <= 9))
    {
	  dat = dat + 0x30;
	}
	else if((dat>='A')&&(dat<='F'))
	{
	  dat += dat + 0x37;
	}
	return dat;
}


void twi_transmint(void)
 {
    unsigned char dat1,dat2;
	unsigned char dat1_buff;

    if(Twi_Hex_Data_Flag == 1)
    {

	    Twi_Hex_Data_Flag = 0;
		if(Twi_Write_Flag == 1)
		{
		    Twi_Write_Flag = 0;
	        dat1 = twi_Write(Twi_Hex_Data[0],Twi_Hex_Data[1],Twi_Hex_Data[2]);


		    dat1_buff = dat1;
		    dat1 >>= 4;
		    dat1 = dat1 & 0x0f;
		    dat1 = general_hex_to_ascii( dat1 );
			USART_TransmitByte(dat1);
			dat1 = dat1_buff;
			dat1 = dat1 & 0x0f;
			dat1 = general_hex_to_ascii( dat1 );
			USART_TransmitByte(dat1);


			if(dat1 == 0)
			{
				USART_Transmit(UART_RX_buff);
			}
			else
			{
				USART_Transmit(Write_Error);
			}


			USART_Transmit("ok!");


		}
		if(Twi_Read_Flag == 1)
        {

			USART_TransmitByte((Twi_Read_Flag+0x30));
			USART_Transmit("yes or no?");


			Twi_Read_Flag = 0;
			dat2 = twi_Read(Twi_Hex_Data[0],Twi_Hex_Data[1]);
			if(dat2 == 0)
			{
				USART_Transmit(Read_Error);

				USART_Transmit("here!");

			}
			else
			{
				hex_to_ascii(dat2);
				USART_Transmit(UART_RX_buff);
			}


			USART_Transmit("verify again!");

		}
	}
 }

void init_data(void)
{
   Twi_Write_Flag     = 0;
   Twi_Read_Flag      = 0;
   Twi_Hex_Data_Flag  = 0;
   Twi_ASCI_Data_Flag = 0;
   Slave_Led_Status   = 0;
   Main_Led_Status    = 0;
   Cur_Main_Led_Status= 0;
   Count_10ms         = 0;
 asm("wdr");
}
void port_init(void)
{
(*(volatile unsigned char *)0x38) = 0x3F;
(*(volatile unsigned char *)0x37)  = 0x00;
(*(volatile unsigned char *)0x35) = 0x4F;
(*(volatile unsigned char *)0x34)  = 0x00;
(*(volatile unsigned char *)0x32) = 0xFC;
(*(volatile unsigned char *)0x31)  = 0x00;
}

void init_devices(void)
{

 asm("cli");
 port_init();
 uart0_init();
 twi_init();
 timer0_init();
 watchdog_init();

(*(volatile unsigned char *)0x55) = 0x00;
(*(volatile unsigned char *)0x5B)  = 0x00;
(*(volatile unsigned char *)0x59) = 0x00;
 asm("sei");

}
void check_watchdog(void)
{
 asm("wdr");
}
void watchdog_init(void)
{
 asm("wdr");
(*(volatile unsigned char *)0x41)=((1<< 3)|(1<< 2)|(1<< 0));

}




void timer0_init(void)
{
(*(volatile unsigned char *)0x53) = 0x00;
(*(volatile unsigned char *)0x52) = 0x4C;
(*(volatile unsigned char *)0x53) = 0x04;
}

#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
(*(volatile unsigned char *)0x52) = 0x4C;

    Count_10ms++;
    if((Count_10ms>0)&&(Count_10ms<5))
    {
       Cur_Main_Led_Status = 1;
	}
    if((Count_10ms>5)&&(Count_10ms<10))
    {
      Cur_Main_Led_Status = 0;
    }
}
void check_main_led(void)
{
   if(Main_Led_Status != Cur_Main_Led_Status)
   {
 	  if(Main_Led_Status == 1)(*(volatile unsigned char *)0x32) |=(1 << (3));
	  else(*(volatile unsigned char *)0x32) &= ~(1 << (3));
	  Main_Led_Status = Cur_Main_Led_Status;
   }
}
void check_slave_led(void)
{
    if(Slave_Led_Status == 1)
    {
(*(volatile unsigned char *)0x32) &= ~(1 << (2));
	}
	else
    {
(*(volatile unsigned char *)0x32) |=(1 << (2));
    }
}

void twi_init(void)
{
(*(volatile unsigned char *)0x56)= 0X00;
(*(volatile unsigned char *)0x20)= 0x20;
(*(volatile unsigned char *)0x21)= 0x00;
(*(volatile unsigned char *)0x22)= 0x22;
(*(volatile unsigned char *)0x56)= 0x44;
}

#line 411 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
unsigned char twi_Write(unsigned char wr_device_add,unsigned char RamAddress,unsigned char Wdata)
{
((*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 5)|(1<< 2));
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	  if(((*(volatile unsigned char *)0x21)&0xf8)!= 0x08) return((*(volatile unsigned char *)0x21)&0xf8);
{(*(volatile unsigned char *)0x23)=(wr_device_add);(*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 2);};
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	  if(((*(volatile unsigned char *)0x21)&0xf8)!= 0x18) return((*(volatile unsigned char *)0x21)&0xf8);
{(*(volatile unsigned char *)0x23)=(RamAddress);(*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 2);};
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	  if(((*(volatile unsigned char *)0x21)&0xf8)!= 0x28) return((*(volatile unsigned char *)0x21)&0xf8);
{(*(volatile unsigned char *)0x23)=(Wdata);(*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 2);};
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	  if(((*(volatile unsigned char *)0x21)&0xf8)!= 0x28) return((*(volatile unsigned char *)0x21)&0xf8);
((*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 4)|(1<< 2));
 	  delay_ms(10);
	  return 0;
}

#line 433 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
unsigned char twi_Read(unsigned char rd_device_add,unsigned char RamAddress)
    {
	   unsigned char temp;
((*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 5)|(1<< 2));
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	   if (((*(volatile unsigned char *)0x21)&0xf8)!= 0x08) return 0;
{(*(volatile unsigned char *)0x23)=(rd_device_add);(*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 2);};
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	   if (((*(volatile unsigned char *)0x21)&0xf8)!= 0x18) return 0;
{(*(volatile unsigned char *)0x23)=(RamAddress);(*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 2);};
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	   if (((*(volatile unsigned char *)0x21)&0xf8)!= 0x28) return 0;
((*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 5)|(1<< 2));
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	   if (((*(volatile unsigned char *)0x21)&0xf8)!= 0x10)  return 0;
{(*(volatile unsigned char *)0x23)=(rd_device_add+1);(*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 2);};
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	   if(((*(volatile unsigned char *)0x21)&0xf8)!= 0x40)  return 0;
((*(volatile unsigned char *)0x56)=(1<< 6)|(1<< 7)|(1<< 2));
 while(!((*(volatile unsigned char *)0x56)&(1<< 7)))asm("wdr");
	   if(((*(volatile unsigned char *)0x21)&0xf8)!= 0x58) return 0;
	   temp=(*(volatile unsigned char *)0x23);
((*(volatile unsigned char *)0x56)=(1<< 7)|(1<< 4)|(1<< 2));
	   return temp;
    }
#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{


	UART_RX_buff[Rx_Count] =(*(volatile unsigned char *)0x2C);
    Rx_Count = Rx_Count+1;
    if(Rx_Count == 9)
       {
          Rx_Flag  = 1;

		  Rx_Count = 0;

	   }

}






void uart0_init(void)
{
 Rx_Count = 0;
 Rx_Flag  = 0;
 Rx_Start_Pack_Flag = 0;
 Rx_Over_Pack_Flag  = 0;

(*(volatile unsigned char *)0x2A) = 0x00;



(*(volatile unsigned char *)0x2B) = 0x00;


(*(volatile unsigned char *)0x40) = ((1 << (7))|(1 << (2))|(1 << (1)));








(*(volatile unsigned char *)0x29) = 29;
(*(volatile unsigned char *)0x40) = 0x00;


(*(volatile unsigned char *)0x2A) = ((1<< 7)|(1<< 4)|(1<< 3));
}

#line 512 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
void UART_Receive(void)
{
   if(Rx_Flag == 1)
    {
   		Rx_Flag = 0;

		if((UART_RX_buff[0] == 0x58)&&(UART_RX_buff[8] == 0x58))
        {
			Rx_Over_Pack_Flag  = 1;

		}


    }
}

#line 532 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
void USART_Transmit( char *s )
{
	while(*s)
		{
		 USART_TransmitByte(*s);
		 s++;
		}
}

#line 545 "H:\UART_TO_TWI\uart_to_twi_m8_組合.c"
void USART_TransmitByte( unsigned char data )
{
	while ( !((*(volatile unsigned char *)0x2B) & (1<< 5)) )
 asm("wdr");
(*(volatile unsigned char *)0x2C) = data;
}
void delay(unsigned int d)
{
	while (d--)
 asm("wdr");
}
void delay_us(int time)
	 {
  	  do
	  	{
		 time--;
		}
  	  while (time>1);
	 }

void delay_ms(unsigned int time)
	 {
	  while(time!=0)
	  	  {
		   delay_us(1000);
		   time--;
		  }
	 }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久av蜜臀妖精| 亚洲精品国产精华液| 久久国产精品区| 欧美一级午夜免费电影| 日韩电影在线一区二区| 日韩欧美的一区二区| 久国产精品韩国三级视频| 精品久久久久久久人人人人传媒 | 日本怡春院一区二区| 日韩精品中文字幕在线一区| 青青草国产成人99久久| 久久人人超碰精品| www.亚洲在线| 亚洲韩国一区二区三区| 日韩三级在线观看| 成人午夜av电影| 亚洲精品少妇30p| 日韩你懂的在线观看| 国产成人自拍高清视频在线免费播放| 国产精品视频第一区| 日本高清免费不卡视频| 免费久久99精品国产| 欧美激情综合在线| 欧美日韩精品一区二区三区蜜桃| 日本美女一区二区| 中文字幕在线一区| 欧美男生操女生| 成人自拍视频在线观看| 亚洲一区二区不卡免费| 日韩欧美国产1| av在线一区二区三区| 爽好久久久欧美精品| 国产色产综合产在线视频| 色94色欧美sute亚洲线路一久| 六月丁香综合在线视频| 亚洲欧美自拍偷拍| 欧美成人一区二区三区在线观看 | 国产精品妹子av| 欧美日韩国产高清一区二区三区| 国产伦理精品不卡| 亚洲一级二级在线| 中文字幕第一区综合| 欧美日韩激情在线| 成人av在线影院| 美国精品在线观看| 亚洲午夜久久久久中文字幕久| 亚洲精品一区二区三区99| 欧美最猛性xxxxx直播| 成人一区二区三区视频| 麻豆一区二区99久久久久| 亚洲精品视频在线看| 中国色在线观看另类| 日韩欧美中文字幕精品| 欧洲一区二区av| 国产不卡一区视频| 韩国三级电影一区二区| 日本不卡视频在线观看| 亚洲一区电影777| 亚洲欧美激情小说另类| 国产欧美一区二区在线| 精品国产一区二区三区四区四| 欧美亚洲综合久久| 欧美中文字幕一区二区三区| 99久久精品国产一区二区三区| 精品一区二区综合| 美日韩一区二区| 日本视频在线一区| 午夜伦欧美伦电影理论片| 亚洲一区二区视频| 一区二区三区国产精华| 亚洲精品高清在线| 亚洲三级免费电影| 亚洲视频小说图片| 亚洲精品ww久久久久久p站| 中文字幕在线一区免费| 中文字幕一区二区三区不卡| 日本一区二区在线不卡| 国产精品乱码久久久久久| 国产欧美在线观看一区| 国产欧美日韩中文久久| 国产女人18毛片水真多成人如厕 | 亚洲另类中文字| 亚洲免费资源在线播放| 亚洲视频一区在线| 亚洲激情自拍偷拍| 亚洲成人资源网| 日本欧美在线观看| 美女脱光内衣内裤视频久久网站| 日本最新不卡在线| 韩国成人在线视频| 国产成人综合亚洲网站| a级高清视频欧美日韩| 91小视频在线观看| 欧美色综合网站| 欧美日韩国产123区| 欧美一区二区三区四区五区| 欧美成人一区二区| 国产精品素人一区二区| 一区二区三区波多野结衣在线观看| 亚洲一线二线三线视频| 五月激情综合网| 另类调教123区| 国产成人自拍在线| 91成人免费在线视频| 欧美一区二区三区视频免费播放| 精品毛片乱码1区2区3区| 国产日韩欧美精品在线| 亚洲免费观看高清在线观看| 日韩国产在线一| 国产美女视频91| 91亚洲国产成人精品一区二三| 欧美精品第一页| 久久久久久久av麻豆果冻| 亚洲猫色日本管| 免费国产亚洲视频| 99vv1com这只有精品| 91精品国产aⅴ一区二区| 国产欧美日韩激情| 亚洲va欧美va天堂v国产综合| 久久er精品视频| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日本韩国一区二区三区视频| 欧美色视频在线观看| 欧美精品一区二区三区一线天视频| 国产精品久久久久一区二区三区 | 五月婷婷综合激情| 国产成人在线视频网址| 欧美日韩夫妻久久| 国产精品伦理一区二区| 久久99久久久久| 日本久久电影网| 中文字幕国产精品一区二区| 日本大胆欧美人术艺术动态| 91网上在线视频| 国产日韩欧美电影| 人人狠狠综合久久亚洲| 91丨porny丨蝌蚪视频| 久久综合久久鬼色中文字| 亚洲午夜久久久久久久久电影院 | 欧美精品一区二区三区高清aⅴ | 亚洲欧洲综合另类| 国产九色sp调教91| 欧美一二三在线| 亚洲成av人在线观看| av亚洲精华国产精华精| 精品粉嫩aⅴ一区二区三区四区| 亚洲午夜久久久久久久久久久| 成人动漫av在线| 久久免费午夜影院| 久久国产人妖系列| 欧美一区二区三区四区五区 | 久久国产视频网| 欧美一级夜夜爽| 午夜欧美一区二区三区在线播放| 色婷婷精品大在线视频| 亚洲国产高清在线观看视频| 国产一区二区美女诱惑| 日韩免费看网站| 老色鬼精品视频在线观看播放| 欧美高清视频www夜色资源网| 亚洲欧美经典视频| 91视视频在线观看入口直接观看www | av不卡免费电影| 中文字幕精品一区| 国产69精品久久久久777| 26uuu另类欧美| 国产一区二区剧情av在线| 欧美大片一区二区| 久久国产人妖系列| 久久免费的精品国产v∧| 国产综合一区二区| 久久精品在线免费观看| 国产成人在线观看| 亚洲国产成人在线| 91丝袜高跟美女视频| 亚洲精品乱码久久久久久日本蜜臀| 91在线观看一区二区| 亚洲人成亚洲人成在线观看图片 | 国产亚洲精品7777| 国产suv精品一区二区6| 国产精品三级在线观看| 99久久伊人久久99| 悠悠色在线精品| 欧美日韩国产三级| 蜜桃视频第一区免费观看| 精品国产伦一区二区三区免费| 狠狠色丁香久久婷婷综合_中| 国产亚洲人成网站| 成av人片一区二区| 夜夜精品浪潮av一区二区三区| 欧美喷潮久久久xxxxx| 久久精品国产亚洲aⅴ| 久久嫩草精品久久久精品一| 成人av网在线| 亚洲国产一二三| 亚洲精品一区二区三区蜜桃下载| 成人国产电影网| 午夜激情综合网| 久久影音资源网| 色香蕉成人二区免费|